当前位置:Gxlcms > 数据库问题 > MySql-半同步复制

MySql-半同步复制

时间:2021-07-01 10:21:17 帮助过:8人阅读

> install plugin rpl_semi_sync_master soname ‘semisync_master.so‘; #安装插件
  • Query OK, 0 rows affected (0.07 sec)
  •  
  • mysql> show global variables like ‘%semi%‘;
  • +------------------------------------+--------------+
  • | Variable_name | Value |
  • +------------------------------------+--------------+
  • | rpl_semi_sync_master_enabled | OFF |
  • | rpl_semi_sync_master_timeout | 10000 |
  • | rpl_semi_sync_master_trace_level | 32 |
  • | rpl_semi_sync_master_wait_no_slave | ON |
  • | rpl_semi_sync_master_wait_point | AFTER_COMMIT |
  • +------------------------------------+--------------+
  • 5 rows in set (0.00 sec)
  •  
  • mysql> set global rpl_semi_sync_master_enabled=on; #启用插件
  • Query OK, 0 rows affected (0.02 sec)
  •  
  • mysql> set global rpl_semi_sync_master_timeout=2000; #设置超时时间
  • Query OK, 0 rows affected (0.00 sec)
  •  
  • mysql> show global variables like ‘%semi%‘;
  • +------------------------------------+--------------+
  • | Variable_name | Value |
  • +------------------------------------+--------------+
  • | rpl_semi_sync_master_enabled | ON |
  • | rpl_semi_sync_master_timeout | 2000 |
  • | rpl_semi_sync_master_trace_level | 32 |
  • | rpl_semi_sync_master_wait_no_slave | ON |
  • | rpl_semi_sync_master_wait_point | AFTER_COMMIT |
  • +------------------------------------+--------------+
  • 5 rows in set (0.00 sec)
  •  
  • rpl_semi_sync_master_enabled是控制Master是否开启半同步,开启或不开启,将其设置为ON或OFF(1or0).

    rpl_semi_sync_master_timeout是控制Master等待多长时间被告知Slave已收到,也就是所谓的超时时间。

    rpl_semi_sync_slave_enabled是控制Slave是否开启半同步,开启或不开启,将其设置为ON或OFF(1or0)。



    监控半同步复制的状态变量(几个常用的):

    Rpl_semi_sync_master_clients:查看有多少个开启半同步复制的插件的Slave

    Rpl_semi_sync_master_status:查看在Master上半同步复制是否正在运行,其值为ON时,说明Master已启用半同步且已被告知有Slave收到;其值为OFF时,说明Master没启用半同步或是没被告知,由于timeout等原因。

    Rpl_semi_sync_master_no_tx:查看有多少事务没有用半同步复制的机制进行复制。

    Rpl_semi_sync_master_yes_tx:查看有多少事务是通过半同步复制机制成功复制。

    Rpl_semi_sync_slave_status:查看Slave上半同步复制是否正常运行,其值为ON时,说明Slave正通过半同步复制且Slave I/O正在运行;为OFF时,反之。


    使用相同步骤配置从节点,完成后需要重启io_thread,不重启当执行时会超时,超时后则自动降为异步:

    1. MariaDB [mydb]> install plugin rpl_semi_sync_master soname ‘semisync_master.so‘;
    2. MariaDB [mydb]> set global rpl_semi_sync_master_enabled=on;
    3.  
    4. MariaDB [mydb]> stop slave io_thread;
    5. Query OK, 0 rows affected (0.01 sec)
    6.  
    7. MariaDB [mydb]> start slave io_thread;
    8. Query OK, 0 rows affected (0.00 sec)
    9.  
    10. mysql> show global status like ‘%semi%‘; #查看半同步客户端
    11. +--------------------------------------------+-------+
    12. | Variable_name | Value |
    13. +--------------------------------------------+-------+
    14. | Rpl_semi_sync_master_clients | 0 |
    15. | Rpl_semi_sync_master_net_avg_wait_time | 0 |
    16. | Rpl_semi_sync_master_net_wait_time | 0 |
    17. | Rpl_semi_sync_master_net_waits | 0 |
    18. | Rpl_semi_sync_master_no_times | 1 |
    19. | Rpl_semi_sync_master_no_tx | 3 |
    20. | Rpl_semi_sync_master_status | OFF |
    21. | Rpl_semi_sync_master_timefunc_failures | 0 |
    22. | Rpl_semi_sync_master_tx_avg_wait_time | 0 |
    23. | Rpl_semi_sync_master_tx_wait_time | 0 |
    24. | Rpl_semi_sync_master_tx_waits | 0 |
    25. | Rpl_semi_sync_master_wait_pos_backtraverse | 0 |
    26. | Rpl_semi_sync_master_wait_sessions | 0 |
    27. | Rpl_semi_sync_master_yes_tx | 0 |
    28. +--------------------------------------------+-------+
    29. 14 rows in set (0.00 sec)

    然后自行验证吧!

    总结:使用半同步复制机制,性能也许会受到影响,但其主要是为了维持数据完整性,安全性的的一个策略,虽会损失一点性能,但还是值得的。

    MySql-半同步复制

    标签:

    人气教程排行