实现主从同步的工作模式:
1、异步:master执行完一次操作以后,立即把结果返回给client,不需要关心slave是否执行。(默认方式,用户体验好,数据安全得不到保障)
2、全同步:master执行完一次操作后,要等到所有的slave都执行完毕以后,才把结果返回给client。(用户体验不好,数据安全性得到了保障)
3、半同步:介于异步和全同步之间。master执行完一次操作之后,至少有一个slave执行完毕以后,才把结果返回给client。
配置半同步复制模式:
如果一台主机仅为master,则只需配置master的半同步。
如果一台主机仅为slave,则只需配置slave的半同步。
如果一台主机既是master又是slave,则配置master和slave的半同步。
命令行配置:(立即生效,重启后失效,使用root登录mysql后进行操作)
1、查看是否允许加载动态模块:
show variables like 'have_dynamic_loading';
2、加载模块:
master模块:
install plugin rpl_semi_sync_master SONAME ”semisync_master.so”;
# rpl_semi_sync_master 模块类型,表示了是master
# SONAME ”semisync_master.so” 指明了模块的名
slave模块:
install plugin rpl_semi_sync_slave SONAME "semisync_slave.so";
3、查看加载的模块:
select plugin_name, plugin_status from information_schema.plugins \
where plugin_name like '%semi%';
+----------------------+---------------+
| PLUGIN_NAME | PLUGIN_STATUS |
+----------------------+---------------+
| rpl_semi_sync_master | ACTIVE | # active表示安装成功
| rpl_semi_sync_slave | ACTIVE |
+----------------------+---------------+
4、启用模块:
set global rpl_semi_sync_master_enabled = 1; #启动master半同步
set global rpl_semi_sync_slave_enabled = 1; #启动slave半同步
5、查看模块是否启动:
show variables like "rpl_semi_sync_%_enabled";
+------------------------------+-------+
| Variable_name | Value |
+------------------------------+-------+
| rpl_semi_sync_master_enabled | ON | #on表示开启成功
| rpl_semi_sync_slave_enabled | ON |
+------------------------------+-------+
永久配置:
vim /etc/my.cnf
[mysqld]
...
plugin-load=
"rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
rpl-semi-sync-master-enabled = 1 #开启master半同步
rpl-semi-sync-slave-enabled = 1 #开启slave半同步
...
重启服务:systemctl restart mysqld
写总结的第三十八天!!!
本文详细介绍了数据库主从同步的三种工作模式:异步、全同步和半同步,并重点讲解了如何配置半同步复制模式,包括加载模块、启用模块及永久配置的方法。

被折叠的 条评论
为什么被折叠?



