关于复制选型
- MGR:有条件上MGR的,上MGR,对网络要求较高。
- 半同步复制:用默认的AFTER_SYNC模式,一般实例都建议使用(重点推荐)
- 异步复制:对从实例要求延时不高的,日志类的等等可以用
半同步复制
设置:主库执行
install plugin rpl_semi_sync_master soname 'semisync_master.so';
SET GLOBAL rpl_semi_sync_master_enabled=1;
设置:备库执行
1:安装slave插件
install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
set global slave_parallel_workers=8;
2:启用slave半同步复制
set global rpl_semi_sync_slave_enabled=1; ##启用slave半同步复制,可以写到配置文件中
3:重启slave上的IO线程
如果没有重启,则默认还是异步复制,重启后,slave会在master上注册为半同步复制的slave角色。
stop slave io_thread;
start slave io_thread;
或者:
stop slave;
set global slave_parallel_type='LOGICAL_CLOCK';
start slave;
状态
show global variables like ‘rpl_semi%‘;
主上:
- rpl_semi_sync_master_enabled:表示主上是否开启半同步复制功能,可以动态修改。可选值:ON\OFF
- rpl_semi_sync_master_timeout:为了防止半同步复制中主在没有收到S发出的确认发生堵塞,用来设置超时,超过这个时间值没有收到信息,则切换到异步复制,执行操作。默认为10000毫秒,等于10秒,这个参数动态可调,表示主库在某次事务中,如果等待时间超过10秒,那么则降级为异步复制模式,不再等待SLAVE从库。如果主库再次探测到,SLAVE从库恢复了,则会自动再次回到半同步复制模式。可以设置成1000,即1秒。
- rpl_semi_sync_master_wait_for_slave_count:控制slave应答的数量,默认是1,表示master接收到几个slave应答后才commit。
- rpl_semi_sync_master_wait_no_slave :当一个事务被提交,但是Master没有Slave连接,这时M不可能收到任何确认信息,但M会在时间限制范围内继续等待。如果没有Slave链接,会切换到异步复制。是否允许master每个事务提交后都要等待slave的接收确认信号。默认为on,每一个事务都会等待。如果为off,则slave追赶上后,也不会开启半同步复制模式,需要手工开启。
- rpl_semi_sync_master_wait_point:该参数表示半同步复制的主在哪个点等待从的响应,默认AFTER_SYNC,在得到slave的应答后再commit,可选值AFTER_COMMIT。
从上:
- rpl_semi_sync_slave_enabled:表示从上是否开启半同步复制功能,可以动态修改。可选值:ON\OFF
show global status like ‘rpl_semi%‘;
- Rpl_semi_sync_master_clients :说明支持和注册半同步复制的已连Slave数。
- Rpl_semi_sync_master_net_avg_wait_time :master等待slave回复的平均等待时间,单位毫秒。
- Rpl_semi_sync_master_net_wait_time :master总的等待时间。
- Rpl_semi_sync_master_net_waits :master等待slave回复的的总的等待次数,即半同步复制的总次数,不管失败还是成功,不算半同步失败后的异步复制。
- Rpl_semi_sync_master_no_times :master关闭半同步复制的次数。
- Rpl_semi_sync_master_no_tx :master没有收到slave的回复而提交的次数,可以理解为master等待超时的次数,即半同步模式不成功提交数量。
- Rpl_semi_sync_master_status :ON是活动状态(半同步),OFF是非活动状态(异步),用于表示主服务器使用的是异步复制模式,还是半同步复制模式。
- Rpl_semi_sync_slave_status :Slave上的半同步复制状态,ON表示已经被启用,OFF表示非活动状态。
- Rpl_semi_sync_master_tx_avg_wait_time :master花在每个事务上的平均等待时间。
- Rpl_semi_sync_master_tx_wait_time :master总的等待时间。
- Rpl_semi_sync_master_tx_waits :master等待成功的次数,即master没有等待超时的次数,也就是成功提交的次数
- Rpl_semi_sync_master_wait_pos_backtraverse :master提交后来的先到了,而先来的还没有到的次数。
- Rpl_semi_sync_master_wait_sessions :前有多少个session因为slave的回复而造成等待。
- Rpl_semi_sync_master_yes_tx :master成功接收到slave的回复的次数,即半同步模式成功提交数量。
复制参数建议:
set global slave_parallel_type=‘LOGICAL_CLOCK’; set global slave_parallel_workers=8;
事务隔离级别: set global transaction isolation level read committed;