Mysql主从同步有三种复制模式,分别是异步复制,同步复制,半同步复制
-异步复制(Asynchronous replication):主库执行完一次事物时,立刻将结果返回给客户端,并不关心从服务器是否接受到数据并完成同步
-同步复制(Fully synchronous replication):当主库执行完一次事物后,确定所有从库都完成数据同步,再返回结果给客户端
-半同步复制(Semisychronous replication):当主库执行完一次事物后,确定至少有一台从库完成数据同步,然后返回结果给客户端
通过分析这三种模式,我们从返回结果的速度和数据安全性作对比
结果返回速度:异步复制>半同步复制>同步复制
数据安全性:同步复制>半同步复制>异步复制
开启半同步复制模式是配置主从同步中的主主模式的前提
[主从同步互为主从教程]https://blog.youkuaiyun.com/ck784101777/article/details/100898344
配置半同步复制模式
Mysql默认是使用异步复制模式,如果想要修改为半同步复制模式,你需要加载两个模块并且启用配置
主要有一下步骤:
1)查看是否允许动态加载模块
2)加载插件
3)启用半同步复制模式
要配置复制模式,必须允许动态加载模块,在mysql下查看一下是某允许加载模块,默认是允许的
mysql-> show variables like 'have_dynamic_loading';
加载两个插件
- mysql> install plugin rpl_semi_sync_master SONAME ”semisync_master.so”; //加载master模块
- mysql> install plugin rpl_semi_sync_slave SONAME 'semisync_slave.so'; //加载slave模块
查看是否加载成功
- 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 |
- +----------------------+---------------+
- 2 rows in set (0.00 sec)
启用两个半同步复制(默认关闭)
- mysql> set global rpl_semi_sync_master_enabled = 1; //启用master半同步复制
- Query OK, 0 rows affected (0.00 sec)
- mysql> set global rpl_semi_sync_slave_enabled = 1; //启用slave半同步复制
- Query OK, 0 rows affected (0.00 sec)
查看是否启动
- mysql> show variables like "rpl_semi_sync_%_enabled";
- +------------------------------+-------+
- | Variable_name | Value |
- +------------------------------+-------+
- | rpl_semi_sync_master_enabled | ON | //模块已启用
- | rpl_semi_sync_slave_enabled | ON |
- +------------------------------+-------+
- 2 rows in set (0.00 sec)
配置永久修改
- [root@master51 ~]# 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
- rpl-semi-sync-slave-enabled = 1
- :wq