mysql版本为5.5以上
半同步的定义:主服务器端执行了写操作,必须往从服务器端复制一份,才能给客户端返回提交状态。
这里我们需要在主服务器端安装semisync_master.so从服务器端安装semisync_slave.so
查看是否存在
[root@localhost plugin]#cd /usr/local/mysql/lib/plugin/
[root@localhost plugin]# ls semisync_*
semisync_master.so semisync_slave.so
具体步骤如下:
在已经建立好的mysql主从上进行如下操作
主库
修改配置文件
#/etc/my.cof 添加如下
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=1000
从库
修改配置文件
rpl_semi_sync_slave_enabled=1
分别重启mysql数据库
可以不重启mysql数库增加该参数,但重启数据库需要重新增加该参数;
登陆主库执行
set global rpl_semi_sync_master_enabled=1;
set global rpl_semi_sync_master_timeout=1000; #时间为1秒 1000为毫秒
登陆从库执行
set global rpl_semi_sync_slave_enabled=1;
到此配置完成
主库上查看状态命令show status like "%rpl_semi%";
mysql> show status like "%rpl_semi%";
+--------------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------------+-------+
| Rpl_semi_sync_master_clients | 1 |
| Rpl_semi_sync_master_net_avg_wait_time | 0 |
| Rpl_semi_sync_master_net_wait_time | 0 |
| Rpl_semi_sync_master_net_waits | 0 |
| Rpl_semi_sync_master_no_times | 0 |
| Rpl_semi_sync_master_no_tx | 0 |
| Rpl_semi_sync_master_status | ON |
| Rpl_semi_sync_master_timefunc_failures | 0 |
| Rpl_semi_sync_master_tx_avg_wait_time | 0 |
| Rpl_semi_sync_master_tx_wait_time | 0 |
| Rpl_semi_sync_master_tx_waits | 0 |
| Rpl_semi_sync_master_wait_pos_backtraverse | 0 |
| Rpl_semi_sync_master_wait_sessions | 0 |
| Rpl_semi_sync_master_yes_tx | 0 |
+--------------------------------------------+-------+
从库查看状态命令show global variables like '%rpl%';
mysql> show global variables like '%rpl%';
+---------------------------------+-------+
| Variable_name | Value |
+---------------------------------+-------+
| rpl_recovery_rank | 0 |
| rpl_semi_sync_slave_enabled | ON |
| rpl_semi_sync_slave_trace_level | 32 |
+---------------------------------+-------