一、半同步服务模式概念:
- 主从同步复制模式,可以在任意数据库服务器启用半同步服务模式
- 主服务器启动半同步,从服务器必须也要启动半同步
- 操作实现分为:临时配置(配置完成即生效,重启服务失效)、永久配置
二、复制模式:
- 异步复制模式(默认):主服务器执行完一次事务后,立即将结果返给客户端,不关心从服务器是否已经同步数据。
- 半同步复制模式:主服务器在执行完一次事务后,等待至少一台从服务器同步数据完成,才将结果返回给客户端。
三、临时配置流程:
# 做为主服务器安装master模块
MySQL> install plugin rpl_semi_sync_master SONAME "semisync_master.so";
# 做为从服务器slave模块
MySQL> install plugin rpl_semi_sync_slave SONAME "semisync_slave.so";
mysql> SELECT plugin_name, plugin_status FROM information_schema.plugins
WHERE plugin_name LIKE "%semi%";
+----------------------+---------------+
| plugin_name | plugin_status |
+----------------------+---------------+
| rpl_semi_sync_master | ACTIVE |
| rpl_semi_sync_slave | ACTIVE |
+----------------------+---------------+
# 做为主服务器启用master模块
mysql> SET GLOBAL rpl_semi_sync_master_enabled=1;
# 做为从服务器启用slave模块
mysql> SET GLOBAL rpl_semi_sync_slave_enabled=1;
MySQL> SHOW VARIABLES LIKE "rpl_semi_sync_%_enabled";
+------------------------------+-------+
| Variable_name | Value |
+------------------------------+-------+
| rpl_semi_sync_master_enabled | ON |
| rpl_semi_sync_slave_enabled | ON |
+------------------------------+-------+
四、永久配置流程:
[root@host ~]# vim /etc/my.cnf
[mysqld]
# 只安装主服务模块
plugin-load="rpl_semi_sync_master=semisync_master.so"
# 只安装从服务模块
plugin-load="rpl_semi_sync_slave=semisync_slave.so"
# 同时安装主和从服务模块
plugin-load="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
# 启用主服务模块
rpl_semi_sync_master_enabled=1
# 启用从服务模块
rpl_semi_sync_slave_enabled=1
:wq
[root@host ~]# systemctl restart mysqld
# 进入sql环境查询开启状态
MySQL> SHOW VARIABLES LIKE "rpl_semi_sync_%_enabled";
+------------------------------+-------+
| Variable_name | Value |
+------------------------------+-------+
| rpl_semi_sync_master_enabled | ON |
| rpl_semi_sync_slave_enabled | ON |