![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/46dc3c2b26dfb26321e28c8e7e6b11c7.png)
复制模式介绍
- 异步复制(Asynchronous replication)
- 主服务器执行完一次事务后,立即将结果返回给客户端,不关心从服务器是否已经同步数据
- 半同步复制(Semisynchronous replication)
- 介于异步复制和全同步复制之间
- 主服务器执行完一次事务后,等待至少一台从服务器同步数据完成,才将结果返回给客户端
配置半同步复制模式
-
查看是否允许动态加载模块(默认允许)
mysql> show variables like 'have_dynamic_loading'; +----------------------+-------+ | Variable_name | Value | +----------------------+-------+ | have_dynamic_loading | YES | +----------------------+-------+ 1 row in set (0.01 sec)
-
命令行加载插件
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)
-
修改配置文件,永久启用半同步复制
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
-
重启数据库服务,并查看状态信息
mystemctl restart mysqld mysql -uroot -p123qqq...A 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> 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)