mysql集群架构半同步复制解决数据丢失问题,mysql集群架构并行复制解决从库复制延迟问题。
一,master半同步复制配置
1。半同步复制就是主库的binlog数据发送到从库的ralay log的时候。从库需要给主库一个ack的确认消息。主库拿到从库的确认消息后再进行事物的提交。
2。登录主库mysql安装semi插件
mysql -uroot -p
3。查看是否可以安装动态插件
select @@have_dynamic_loading;
4。查看有那些插件
show plugins;
5。在master端安装semi,soname是semi插件的名字
install plugin rpl_semi_sync_master soname 'semisync_master.so';
6。查看semi的状态
show variables like '%semi%';
7。设置开启半同步
set global rpl_semi_sync_master_enabled=1;
8。设置半同步复制的延迟时间。单位毫秒
set global rpl_semi_sync_master_timeout=1000;
9。再次查看semi的状态
show variables like '%semi%';
二,slave半同步复制配置
1。登录从库mysql安装semi插件
mysql -uroot -p
2。在slave端安装semi,soname是semi插件的名字
install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
3。查看semi的状态
show variables like '%semi%';
4。开始从库的semi 半同步复制
set global rpl_semi_sync_slave_enabled=1;
5。重启slave
stop slave;
start slave;
ok 插入数据库后。最后可以通过日志 查看半同步是否启用成功。
日志地址
cat /var/log/mysqld.log
三,master并行复制配置
1。登录master的mysql
mysql -uroot -p
2。查看并行复制组的状态
show variables like '%binlog_group%';
3。设置组同步提交延迟(毫秒)
set global binlog_group_commit_sync_delay=1000;
4。设置组的事物数
set global binlog_group_commit_sync_no_delay_count=100;
5。查看并行复制的状态
show variables like '%binlog_group%';
四,slave并行复制配置
1。登录master的mysql
mysql -uroot -p
2。查看并行复制组的状态
show variables like '%slave%';
3。设置从库并行复制配置信息
vi /etc/my.cnf
slave-parallel-type=LOGICAL_CLOCK #设置并行复制是基于组提交
slave-parallel-workers=8 #设置并行复制线程数
master_info_repository=TABLE #设置数组保存为表的方式
relay_log_info_repository=TABLE #设置relay log保存是以表的方式
relay_log_recovery=1 #开始relay log
4。重启服务
systemctl restart mysqld
5。登录从库的mysql
mysql -uroot -p
6。查看relay log配置是否生效
show variables like '%relay_log%';
7。查看并行复制组的状态
show variables like '%slave%';
ok 主库插入数据后 执行命令查看从库的并行配置是否生效
打开库
use performance_schema;
查看并行复制是否生效
select * from replication_applier_status_by_worker;