• MySQL 半同步复制


    在主库初次启动时,执行如下语句加载semisync_master插件:

    mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';

    备库上则加载semisync_slave插件:

    mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';

    在初次加载插件后,MySQL会将该插件记录到系统表mysql.plugin中,下次启动时系统则会自动加载该插件了,无需再次执行上面的命令。

    另外,主备库的配置文件my.cnf还需要新增如下记录来打开semi-sync。主库上,新增如下参数:

    $vi my.cnf
    ...
    rpl_semi_sync_master_enabled=1
    rpl_semi_sync_master_timeout=1000
    ...

    备库上新增:

    $vi my.cnf
    ...
    rpl_semi_sync_slave_enabled=1
    ...

    那么主备在启动后,且slave线程开始dump主库的日志后,Semi-sync Replication就会开启,上面的配置(rpl_semi_sync_master_timeout=1000)表示主库在某次事务中,如果等待时间超过1000毫秒,那么则降级为普通模式,不再等待备库。如果主库再次探测到,备库恢复了,则会自动再次回到Semi-sync状态。

    3. 其他参数

    Semi-sync的配置参数不多,按照上面配置就可以了,其他少数几个参数默认即可。

    主库上的其他参数:

    mysql> show variables like "%rpl_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_no_slave | ON | +------------------------------------+-------+

    备库上有:

    mysql> show variables like "%rpl_semi%"; +------------------------------------+-------+ | Variable_name | Value | +------------------------------------+-------+ | rpl_semi_sync_master_wait_no_slave | ON | | rpl_semi_sync_slave_enabled | ON | | rpl_semi_sync_slave_trace_level | 32 | +------------------------------------+-------+

    root@localhost >show global status like '%semi%';
    +--------------------------------------------+-------+
    | Variable_name                              | Value |
    +--------------------------------------------+-------+
    | Rpl_semi_sync_master_clients               | 1     | 有多少个Semi-sync的备库
    | Rpl_semi_sync_master_net_avg_wait_time     | 0     | 事务提交后,等待备库响应的平均时间
    | Rpl_semi_sync_master_net_wait_time         | 0     | 等待网络响应的总次数
    | Rpl_semi_sync_master_net_waits             | 7     | 总的网络等待时间
    | Rpl_semi_sync_master_no_times              | 0     | 一共有几次从Semi-sync跌回普通状态
    | Rpl_semi_sync_master_no_tx                 | 0     | 库未及时响应的事务数,如果这个值很大就有问题
    | Rpl_semi_sync_master_status                | ON    | 主库上Semi-sync是否正常开启
    | Rpl_semi_sync_master_timefunc_failures     | 0     | 时间函数未正常工作的次数
    | Rpl_semi_sync_master_tx_avg_wait_time      | 410   | 开启Semi-sync,事务返回需要等待的平均时间
    | Rpl_semi_sync_master_tx_wait_time          | 2876  | 事务等待备库响应的总时间
    | Rpl_semi_sync_master_tx_waits              | 7     | 事务等待备库响应的总次数
    | Rpl_semi_sync_master_wait_pos_backtraverse | 0     | 改变当前等待最小二进制日志的次数
    | Rpl_semi_sync_master_wait_sessions         | 0     | 当前有几个线程在等备库响应
    | Rpl_semi_sync_master_yes_tx                | 7     | Semi-sync模式下,成功的事务数
    ---------------------

  • 相关阅读:
    Python算法与数据结构--求所有子数组的和的最大值
    Python算法练习--把搜索树转成双向链表
    将HTML字符转换为DOM节点并动态添加到文档中
    设计包含min函数的栈
    Python学习:类和实例
    Javascript 装饰器极速指南
    【翻译】旧技术成就新勒索软件,Petya添加蠕虫特性
    textarea的中文输入判断与搜狗输入法的特殊行为
    python 人工智能资源推荐
    Python 黑客相关电子资源和书籍推荐
  • 原文地址:https://www.cnblogs.com/zping/p/5364389.html
Copyright © 2020-2023  润新知