zoukankan      html  css  js  c++  java
  • Mysql 半同步复制配置

    以下是配置和监控半同步复制:

    1. 半同步复制功能以plugin的方式接入MySQL,需要在主库与从库两端同时开启半同步的支持,具体配置如下:

    On the master

    mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME ‘semisync_master.so’;

    mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;

    mysql> SET GLOBAL rpl_semi_sync_master_timeout = 1000;  # 1 second

    On the slave

    mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME ‘semisync_slave.so’;

    mysql> SET GLOBAL rpl_semi_sync_slave_enabled = 1;

    mysql> START SLAVE;

    NOTE: SLAVE端需要先开启半同步参数,然后启动从库复制,否则,Rpl_semi_sync_slave_status的状态始终为:OFF

    2. 通过以下参数可以判断半同步是否正常:

    Rpl_semi_sync_master_status -- 判断主库当前模式为半同步还是异步复制

    Rpl_semi_sync_master_clients -- 当前处于半同步状态的从库个数

    Rpl_semi_sync_master_yes_tx,Rpl_semi_sync_master_no_tx -- 主库收到正常确认以及超时未成功确认的事务个数

    Rpl_semi_sync_slave_status -- 从库半同步复制是否正常,当io_thread为NO时,状态为OFF

    查看半同步相关参数及状态参数命令:

    mysql> SHOW VARIABLES LIKE ‘rpl_semi_sync%’;

    mysql> SHOW STATUS LIKE ‘Rpl_semi_sync%’;

    -TAKE AWAY-

    半同步复制使MHA更加完美

    在之前的文章中曾和大家分享过MHA这种高可用的主从自动的failover方案,而这里说的半同步复制对于MHA是一个很有利的支持。

    半同步可以最大程度的保障主库执行过的语句被成功复制到从库relay log中;而当主库发生故障时,使从库的状态更接近主库,保持最小的数据差异。基于半同步这个特点,可以将其与MHA一起使用,当主库故障,故障自动切换被触发,在这个过程中MHA需要比较主库与从库日志差异,由于半同步的特点,差异日志会尽可能的少,那么MHA在进行判断比较、差异生成、拷贝直至最后的差异应用,这一系列的时间消耗都会得到缩减,这样MHA的切换时间就相应减少,数据库故障可以快速恢复。

    正常情况下,主库写入binlog日志的pos位置与从库读到的Read_Master_Log_Pos位置应该保持一致;测试中发现,当主库被意外关掉,仍存在少量的跟新语句没有被同步过去,这一点在手册里面有提及(If the master commits but a crash occurs while the master is waiting for acknowledgment from a slave, it is possible that the transaction may not have reached any slave.)

  • 相关阅读:
    HotSpot 的垃圾收集器
    HTML5之日历控件
    设计模式之抽象工厂模式
    设计模式之工厂模式
    设计模式之单例模式
    JavaScript实现input输入框限制输入值的功能
    微信公众号二维码获取
    mybatis的一对多,多对一,以及多对对的配置和使用
    kindeditor在Java项目中的应用以及图片上传配置
    Spring和quartz整合的入门使用教程
  • 原文地址:https://www.cnblogs.com/feika/p/4228579.html
Copyright © 2011-2022 走看看