主从复制的过程如下:
主库执行事务记录binlog,然后将binlog发送到从库,最后从库执行这个binlog。
主从延迟时间可以在从库上使用show slave status进行查询
主从延迟的主要原因:
1. 从库机器的性能本来就比主库差
2. 备库压力过大
3. 存在大事务
主备切换可靠性优先策略执行过程:
1. 判断备库B现在的seconds_behind_master,如果小于某个值(比如5秒)继续下一步,否则持续重试这一步;
2. 把主库A改成只读状态,即把readonly设置为true;
3. 判断备库B的seconds_behind_master的值,直到这个值变成0为止;
4. 把备库B改成可读写状态,也就是把readonly 设置为false;
5. 把业务请求切到备库B。
这个过程保证了数据一致,但是牺牲了一段时间的可用性(从2-5之间)
主备切换可用性优先策略执行过程:
就是说不等主备数据同步,直接把连接切到备库B,并且让备库B可以读写,那么系统几乎就没有不可用时间了,这样可能发生主从不一致
MySQL实战45讲