1.异步复制模式
主库执行完成一个事务后,立即将结果返回给客户端,并不关心客户端是否已经接受并处理
2.全同步复制模式
主库执行完成一个事务后,且所有的从库都执行该事务并返回给客户端
3.半同步复制模式
介于异步复制模式和全同步复制模式之间
主库执行完成一个事务后,等待至少一个从库接收到,并写入relay log中才能返回给客户端
默认条件下是异步复制模式
要主从数据库的复制模式要保证数据是一样的
实验操作:
启动半同步复制模式:
允许动态加载模块
mysql> show variables like "have_dynamic_loading";
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| have_dynamic_loading | YES |
+----------------------+-------+
1 row in set (0.00 sec)
sql命令行加载模块启动半同步复制模式
主库51安装:
安装启动模块
mysql> install plugin rpl_semi_sync_master soname 'semisync_master.so';
Query OK, 0 rows affected (0.06 sec)
查看安装模块
mysql> select plugin_name,plugin_status from information_schema.plugins where plugin_name like '%semi%';
+----------------------+---------------+
| plugin_name | plugin_status |
+----------------------+---------------+
| rpl_semi_sync_master | ACTIVE |
+----------------------+---------------+
1 row in set (0.00 sec)
启动半同步复制模式:
mysql> set global rpl_semi_sync_master_enabled=1;
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 |
+------------------------------+-------+
1 row in set (0.00 sec)
从库 (slave) 52操作:
mysql> install plugin rpl_semi_sync_master soname 'semisync_master.so';
Query OK, 0 rows affected (0.05 sec)
查看安装模块
mysql> select plugin_name,plugin_status from information_schema.plugins where plugin_name like '%semi%';
+----------------------+---------------+
| plugin_name | plugin_status |
+----------------------+---------------+
| rpl_semi_sync_master | ACTIVE |
+----------------------+---------------+
1 row in set (0.00 sec)
启动半同步复制模式:
mysql> set global rpl_semi_sync_slave_enabled=1;
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 |
+------------------------------+-------+
1 row in set (0.01 sec)
(以上的配置都是临时配置,要想永久配置要写进配置文件)
配置文件永久启用半同步复制
– 命令配置临时配置,重启服务会失效
– 修改后需要重启服务
– 写在主配置文件 /etc/my.cnf 的 [mysqld] 下方
主服务器:
plugin-load=rpl_semi_sync_master=semisync_master.so
rpl_semi_sync_master_enabled=1
systemctl stop mysqld
systemctl start mysqld
从服务器:
plugin-load=rpl_semi_sync_slave=semisync_slave.so
rpl_semi_sync_slave_enabled=1
systemctl stop mysqld
systemctl start mysqld
在有的高可用架构下, master 和 slave 需同时启动
– 以便在切换后能继续使用半同步复制
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
[root@host52 ~]# systemctl stop mysqld
[root@host52 ~]# systemctl start mysqld
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.01 sec)