MySQL主从复制和半同步复制
1)在master上安装这个插件 mysql> install plugin rpl_semi_sync_master soname 'semisync_master.so';Query OK, 0 rows affected (1.51 sec)
(--删除插件的方法 mysql > uninstall plugin rpl_semi_sync_master;)
mysql> show global variables like 'rpl_semi_sync%'; --安装OK后,主上会多几个参数
+------------------------------------+-------+
| Variable_name | Value |
+------------------------------------+-------+
| rpl_semi_sync_master_enabled | OFF | --OFF表示半同步还没有开启
| rpl_semi_sync_master_timeout | 10000 | --默认主等待从返回信息的超时间时间,10秒。
| rpl_semi_sync_master_trace_level | 32 | --监控
| rpl_semi_sync_master_wait_no_slave | ON | --是否允许每个事物的提交都要等待slave的信号.on为每一个事物都等待
+------------------------------------+-------+
4 rows in set (0.83 sec)
2)在slave上安装插件
mysql> install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
Query OK, 0 rows affected (0.63 sec)
mysql> show global variables like 'rpl_semi_sync%';
+---------------------------------+-------+
| Variable_name | Value |
+---------------------------------+-------+
| rpl_semi_sync_slave_enabled | OFF |
| rpl_semi_sync_slave_trace_level | 32 |
+---------------------------------+-------+
2 rows in set (0.78 sec)
3)master上激活半同步复制
mysql>set global rpl_semi_sync_master_enabled =on;
Query OK, 0 rows affected (0.04 sec)
4)slave上激活半同步复制并重启IO线程
mysql> set global rpl_semi_sync_slave_enabled=on; --激活半同步
Query OK, 0 rows affected (0.04 sec)
mysql> stop slave IO_THREAD; --关闭IO线程
Query OK, 0 rows affected (0.14 sec)
mysql> start slave IO_THREAD; --启动IO线程
Query OK, 0 rows affected (0.11 sec)
5)在master查看状态
mysql> show global status like 'rpl_semi_sync%';
+--------------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------------+-------+
| Rpl_semi_sync_master_clients | 1 |--有一个从服务器启用半同步复制
| Rpl_semi_sync_master_net_avg_wait_time | 0 |--master等待slave回复的平均等待时间。单位毫秒
| Rpl_semi_sync_master_net_wait_time | 0 |--master总的等待时间。单位毫秒
| Rpl_semi_sync_master_net_waits | 0 |--master等待slave回复的总的等待次数
| Rpl_semi_sync_master_no_times | 0 |--master关闭半同步复制的次数
| Rpl_semi_sync_master_no_tx | 0 |--master 等待超时的次数
| Rpl_semi_sync_master_status | ON |--标记master现在是否是半同步复制状态
| Rpl_semi_sync_master_timefunc_failures | 0 |--master调用时间(如gettimeofday())失败的次数
| Rpl_semi_sync_master_tx_avg_wait_time | 0 |--master花在每个事务上的平均等待时间
| Rpl_semi_sync_master_tx_wait_time | 0 |--master花在事物上总的等待时间
| Rpl_semi_sync_master_tx_waits | 0 |--master事物等待次数
| Rpl_semi_sync_master_wait_pos_backtraverse | 0 |--后来的先到了,而先来的还没有到的次数
| Rpl_semi_sync_master_wait_sessions | 0 |--当前有多少个session因为slave回复而造成等待
| Rpl_semi_sync_master_yes_tx | 0 |--标记slave是否在半同步状态
+--------------------------------------------+-------+
14 rows in set (0.10 sec)
6)在slave上查看状态就只有下面一条信息
mysql> show global status like 'rpl_semi_sync%';
+----------------------------+-------+
| Variable_name | Value |
+----------------------------+-------+
| Rpl_semi_sync_slave_status | ON |
+----------------------------+-------+
1 row in set (0.00 sec)
页:
[1]