主从复制的原理
从库读取主库的binlog,写入从库的relay log。从库有个SQL线程在本地重放。
主从延迟产生的原因
1⃣️由于这些操作是串行,所以会和主库有一些延迟。
2⃣️另一个原因是从库的SQL线程只有一个线程,而主库则是多个SQL线程并发写的。
总结:根本原因是主库的写请求QPS太大,导致从库来不及复制。
主从延迟解决
打开并发复制,多开几个SQL线程,但不能从根本上解决主从延迟问题;
读写都在主库上,不推荐;
由于根本原因是主库的写请求QPS太大,所以要么读在写之后做等待,或者写之后不要读;或者做库表迁移,降低主库的写QPS。
主从复制数据丢失
写完主库后,从库还没来得及同步,主库就崩溃了。主从复制有一个semi-sync,表示一个写请求到主库至少要和一个从库同步成功才成功,这就是半同步复制。