tset123 发表于 2018-10-5 13:06:57

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]
查看完整版本: MySQL主从复制和半同步复制