zoukankan      html  css  js  c++  java
  • mysql5.7半自动同步设置【转】

    mysql的主从复制主要有3种模式:

    a..主从同步复制:数据完整性好,但是性能消耗高

    b.主从异步复制:性能消耗低,但是容易出现主从数据唯一性问题

    c.主从半自动复制:介于上面两种之间。既能很好的保持完整性,又能提高性能

    所以前面文章配置完主从之后,想改成半自动复制,下面是步骤:

    1.主从的各个节点都要安装半自动复制插件,方法是登陆mysql执行一下脚本:

    主库:

    install plugin rpl_semi_sync_master soname 'semisync_master.so';

    从库:

    INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';

    执行完可以查看安装状态,没有启动,所以‘rpl_semi_sysnc_master_enabled’是‘OFF’

    show global variables like 'rpl%';

    2.在主从数据库的my.cnf里面加入下面:

    在Master和Slave的my.cnf中编辑:

    # On Master

    [mysqld]

    rpl_semi_sync_master_enabled=1

    rpl_semi_sync_master_timeout=1000   #此单位是毫秒

    #可以不写,这里只为演示,默认就是AFTER_SYNC

    #rpl_semi_sync_master_wait_point=AFTER_SYNC

    # On Slave

    [mysqld]

    rpl_semi_sync_slave_enabled=1

    新版本的semi sync 增加了rpl_semi_sync_master_wait_point参数 来控制半同步模式下 主库在返回给会话事务成功之前提交事务的方式。

    该参数有两个值:

    • AFTER_COMMIT(5.6默认值)

       master将每个事务写入binlog ,传递到slave 刷新到磁盘(relay log),同时主库提交事务。master等待slave 反馈收到relay log,只有收到ACK后master才将commit OK结果反馈给客户端。

    • AFTER_SYNC(5.7默认值,但5.6中无此模式)

    master 将每个事务写入binlog , 传递到slave 刷新到磁盘(relay log)。master等待slave 反馈接收到relay log的ack之后,再提交事务并且返回commit OK结果给客户端。 即使主库crash,所有在主库上已经提交的事务都能保证已经同步到slave的relay log中。

    因此5.7引入了after_sync模式,带来的主要收益是解决after_commit导致的master crash主从间数据不一致问题,因此在引入after_sync模式后,所有提交的数据已经都被复制,故障切换时数据一致性将得到提升。

    3.查看状态

    showstatus like "%rpl_semi%";

    注意看RPL_SEMI_SYNC_MASTER_CLIENTS 后面的value代表链接了介个从库

    转自

    http://blog.csdn.net/yuanfen99xia/article/details/51837044

  • 相关阅读:
    HDU-1875-畅通工程再续(最小生成树)
    HDU-1325-Is It A Tree?(并查集+有向树)
    HDU-2473-Junk-Mail Filter(并查集删除)
    HDU-1233-还是畅通工程(最小生成树)
    POJ-2492-A Bug's Life(并查集分类)
    asp.net core 中KindEditor的使用
    使用FormsAuthenticationTicket进行登陆验证
    c#生成随机字符串
    string.Format对C#字符串格式化
    在Ubuntu上使用noip动态域名的方法(ddns)
  • 原文地址:https://www.cnblogs.com/paul8339/p/8023806.html
Copyright © 2011-2022 走看看