mysql半同步复制
半同步的特性
收到ack或者超时关闭半同步
从库只有将binlog flush到repay log才会给主库的等待线程发送ack
超时转换为异步复制后,当至少一个半同步从节点赶上来是,主库便会自动转换为半同步复制
半同步必须在主从库上都是打开的状态,否则便为异步复制
相较于异步复制,半同步变慢时间至少是TCP/IP一次发送与接收所用的时间(多IDC部署本地至少有一个slave)
半同步主库端
after_flush -- 最后一个event才需要发送ACK
after_sync -- 从库数据可能会多余主库数据
after_commit -- 从库会丢数据,主库是commit后再等待
after_rollback -- 同after_commit
transmit_start -- 发送binlog之前做判断,所有等待这个点的主库线程都可以不等了,直接commit
transmit_stop -- 主库想从库发送完binlog结束之后
defore_send_event -- 发送binlog之前,是否需要从库发送ACK信息
after_send_event -- binlog发送完成之后,
after_reset_master -- reset_master语句执行之后
半同步从库端
半同步实现
插件安装
半同步自动开关
MySQL5.7多线程复制
延迟优化方法
增加buffer_pool的大小、缓存更多数据,减少IO压力
增大log_buffer_size及group,减少buffer_pool的刷盘IO,提升写入性能
修改flush_method为O_DIRECT,提升写入性能
如果可以的话,关掉从库binlog,或者log_slave_uodates
修改参数innodb_flush_log_at_trx_commit为0或者2
如果没有关掉binlog,修改参数sync_binlog为0或者更大的数,减少IO的压力
MySQL5.6多线程复制
1.数据库比较多
2.每个数据库的写入比较均匀
因为MySQL5.6复制分发级别设置的是库
MySQL5.7多线程复制
所有处于prepare阶段的事务都可以并行提交
last_commit
ordered commit
mysql运维日记
猜你喜欢
转载自www.cnblogs.com/geek-ace/p/8992103.html
今日推荐
周排行