1.在mysql中引入GTID的模式
对mysql的一主多从做优化,引入gtid不用每次都要指定从master中复制文件名信息
首先对master设置
slave(1)设置
在slave(2)设置
测试:
2.主从节点的IO缺陷及优化方法 (IO -> relaylog 原始主从结构的IO不稳定,因为master采用异步的方式发送数据,如果slave端没有接收到的话,会导致主从数据不一致。因此需要“无损复制”,即“半同步复制”。
安装插件(master和slave不一样)
需要先重启slave中的IO线程才会生效
更改配置文件——设置启动即生效
测试:
故障模拟:
重新激活slave端的IO线程(<START SLAVE IO_THREAD>),在master端可以立即看到异步同步的信息已更新为正常。
测试:
3.GTID的两种模式——AFTER_COMMIT和AFTER_SYNC
AFTER_COMMIT(5.6版本)模式:
AFTER_SYNC(5.7版本)模式:
两种模式的区别是:
SYNC比COMMIT多出一个步骤。SYNC会在收到slave端的反馈确认已成功接收信息后,才会向用户返回“OK”值;而COMMIT则在发送完成后就显示“OK”,并没有确认slave端是否成功接收。
4.延迟复制
当master中的输入数据后,不会立即同步到slave端。而是可以有“撤回/后悔”的机会。这就需要引入延迟同步机制。
参考资料:
设置:
在slave中执行如下操作,时间设置为30秒(也就是30秒的后悔时间)。需要先关闭SQL线程。
测试:
5. 主从节点的SQL缺陷及优化方法
SQL默认是单线程的,需要同步的数据较多时会造成很高的延迟,因此需要开启多线程模式。
在slave修改配置文件
6.慢查询
自动查询执行比较慢的mysql语句,并记录在指定文件中。
慢查询功能默认是关闭的。