zoukankan      html  css  js  c++  java
  • 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模式下,成功的事务数
    ---------------------

  • 相关阅读:
    Linux发行版 CentOS6.5 修改默认主机名
    《Linux就该这么学》培训笔记_ch06_存储结构与磁盘划分
    《Linux就该这么学》培训笔记_ch05_用户身份与文件权限
    《Linux就该这么学》培训笔记_ch04_Vim编辑器与Shell命令脚本
    《Linux就该这么学》培训笔记_ch03_管道符、重定向与环境变量
    《Linux就该这么学》培训笔记_ch02_一些必须掌握的Linux命令
    《Linux就该这么学》培训笔记_ch01_部署虚拟环境安装Linux系统
    《Linux就该这么学》培训笔记_ch00_认识Linux系统和红帽认证
    Swift笔记2
    request对象和response对象
  • 原文地址:https://www.cnblogs.com/zping/p/5364389.html
Copyright © 2011-2022 走看看