MySQL半同步复制

半同步复制是基于Google为MySQL开发的半同步复制的插件。半同步复制的原理是,一个事务在主服务器上执行完成后,必须至少确保至少在一台从服务器上执行完成后,事务才算提交成功。如果在一定时间内从服务器没有响应,则会自动降级为异步复制。
这个半同步复制是建立在异步复制的基础之上进行的。

Master 主库配置

  1. 安装插件:semisync_master.so
mysql>  INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
Query OK, 0 rows affected (1.00 sec)
  1. 配置全局变量
mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;
Query OK, 0 rows affected (0.00 sec)

mysql> SET GLOBAL rpl_semi_sync_master_timeout = 1000;
Query OK, 0 rows affected (0.00 sec)
  1. 查看配置
mysql> show variables like '%semi%';
+-------------------------------------------+------------+
| Variable_name                             | Value      |
+-------------------------------------------+------------+
| rpl_semi_sync_master_enabled              | ON         |
| rpl_semi_sync_master_timeout              | 1000       |
| rpl_semi_sync_master_trace_level          | 32         |
| rpl_semi_sync_master_wait_for_slave_count | 1          |
| rpl_semi_sync_master_wait_no_slave        | ON         |
| rpl_semi_sync_master_wait_point           | AFTER_SYNC |
+-------------------------------------------+------------+

6 rows in set (0.07 sec)

Slave 从库配置

  1. 安装插件:semisync_slave.so
install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
  1. 配置全局变量
mysql> SET GLOBAL rpl_semi_sync_slave_enabled = 1; 
Query OK, 0 rows affected (0.03 sec)

mysql> STOP SLAVE;
Query OK, 0 rows affected (0.10 sec)

mysql> START SLAVE;
Query OK, 0 rows affected (0.01 sec)
  1. 查看配置
mysql> show variables like '%semi%';
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| rpl_semi_sync_slave_enabled     | ON    |
| rpl_semi_sync_slave_trace_level | 32    |
+---------------------------------+-------+
2 rows in set (0.09 sec)

参考
https://www.jb51.net/article/76641.htm
https://www.jianshu.com/p/3110e279e679

你可能感兴趣的:(MySQL半同步复制)