redolog相关
这么一来,binlog 也可以组提交了。在执行图 5 中第 4 步把 binlog fsync 到磁盘时,如果有多个事务的 binlog 已经写完了,也是一起持久化的,这样也可以减少 IOPS 的消耗。
mysql的主从复制
binlog的statement模式,是unsafe的
你可以看到,当 binlog_format 使用 row 格式的时候,binlog 里面记录了真实删除行的主键 id,这样 binlog 传到备库去的时候,就肯定会删除 id=4 的行,不会有主备删除不同行的问题。
Mysql高可用
mysql备库并行复制
在官方的 5.6 版本之前,MySQL 只支持单线程复制,由此在主库并发高、TPS 高时就会出现严重的主备延迟问题。5.6推出了多线程复制
一主多从的主备切换
相比于一主一备的切换流程,一主多从结构在切换完成后,A’会成为新的主库,从库 B、C、D 也要改接到 A’。正是由于多了从库 B、C、D 重新指向的这个过程,所以主备切换的复杂性也相应增加了。
这跟基于位点的主备协议不同。基于位点的协议,是由备库决定的,备库指定哪个位点,主库就发哪个位点,不做日志的完整性判断。
Mysql读写分离
更新主库数据后,立刻读从库,会读到事务提交前的数据
判断主备无延迟 方案 :
1.先判断show slave status 结果里的 seconds_behind_master是否为0
2.对比位点确保主备无延迟
3.对比GTID集合确保主备无延迟
等主库位点方案 :
等GTID方案
查询内存的使用
因此,对于正常的线上业务来说,如果一个查询的返回结果不会很多的话,建议你使用 mysql_store_result 这个接口,直接把查询结果保存到本地内存。
查询的结果是分段发给客户端的,因此扫描全表,查询返回大量的数据,并不会把内存打爆。