• 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.)

  • 相关阅读:
    北京清北 综合强化班 Day1
    Noip2015 提高组 Day1
    Noip2016 提高组 Day2 T1 组合数问题
    2017.9.23 NOIP2017 金秋杯系列模拟赛 day1 T1
    [51NOD1103] N的倍数(鸽笼原理)
    [51NOD1420] 数袋鼠好有趣(贪心)
    [CF808A] Lucky Year(规律)
    [CF808B] Average Sleep Time([强行]树状数组,数学)
    [CF808C] Tea Party(贪心)
    [CF808D] Array Division(暴力,枚举)
  • 原文地址:https://www.cnblogs.com/feika/p/4228579.html
Copyright © 2020-2023  润新知