zoukankan      html  css  js  c++  java
  • MYSQL之半同步复制(实时同步)

    1.半同步复制的作用

    解决主从数据一致性问题
    

    2.半同步复制工作原理的变化

    1. 主库执行新的事务,commit时,更新 show master  statusG ,触发一个信号给
    2. binlog dump 接收到主库的 show master statusG信息,通知从库日志更新了
    3. 从库IO线程请求新的二进制日志事件
    4. 主库会通过dump线程传送新的日志事件,给从库IO线程
    5. 从库IO线程接收到binlog日志,当日志写入到磁盘上的relaylog文件时,给主库ACK_receiver线程
    6. ACK_receiver线程触发一个事件,告诉主库commit可以成功了
    7. 如果ACK达到了我们预设值的超时时间,半同步复制会切换为原始的异步复制.
    
    5.5版本:出现概念,但是不建议使用,性能太差
    5.6版本:出现group commit 组提交功能,来提升开启半同步复制的性能
    5.7版本:更加完善了,在group commit基础上出现了MGR
    5.7版本:的增强半同步复制的新特性:after commit; after sync;
    

    3.配置半同步

    1.主库操作

    # 登录数据库
    [root@db01 ~]# mysql -uroot -p123
    # 查看是否有动态支持
    mysql> show global variables like 'have_dynamic_loading';
    # 安装自带插件
    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;
    # 修改配置文件
    [root@db01 ~]# vim /etc/my.cnf
    # 在[mysqld]标签下添加如下内容(不用重启库)
    [mysqld]
    rpl_semi_sync_master_enabled=1
    rpl_semi_sync_master_timeout=1000
    检查安装:
    mysql> show variables like'rpl%';
    mysql> show global status like 'rpl_semi%';
    

    2.从库操作

    # 登录数据库
    [root@mysql-db02 ~]# mysql -uroot -poldboy123
    # 安装slave半同步插件
    mysql>  INSTALL PLUGIN rpl_semi_sync_slave SONAME'semisync_slave.so';
    # 启动插件
    mysql> SET GLOBAL rpl_semi_sync_slave_enabled = 1;
    # 重启io线程使其生效
    mysql> stop slave io_thread;
    mysql> start slave io_thread;
    # 编辑配置文件(不需要重启数据库)
    [root@mysql-db02 ~]# vim /etc/my.cnf
    # 在[mysqld]标签下添加如下内容
    [mysqld]
    rpl_semi_sync_slave_enabled =1
    

    3.额外参数

    rpl_semi_sync_master_timeout=milliseconds
    设置此参数值(ms),为了防止半同步复制在没有收到确认的情况下发生堵塞,如果Master在超时之前没有收到任何确认,将恢复到正常的异步复制,并继续执行没有半同步的复制操作。
    
    rpl_semi_sync_master_wait_no_slave={ON|OFF}
    如果一个事务被提交,但Master没有任何Slave的连接,这时不可能将事务发送到其它地方保护起来。默认情况下,Master会在时间限制范围内继续等待Slave的连接,并确认该事务已经被正确的写到磁盘上。
    可以使用此参数选项关闭这种行为,在这种情况下,如果没有Slave连接,Master就会恢复到异步复制。
    
  • 相关阅读:
    SAE J2534介绍
    低价替代Vector CANoe CAN总线适配解决方案支持所有USBCAN(周立功CAN、PCAN、Kvaser、ValueCAN、NI CAN)
    位运算学习
    [C#] 利用方向鍵移動 TextBox Focus
    CANoe 入门 Step by step系列(二)CAPL编程【转】
    CANoe 入门 Step by step系列(三)简单例子的剖析【转】
    ios7适配一些问题以及64位32位
    iOS项目中的version和build
    you don't have permission to view it 解决
    iOS 学习资料整理
  • 原文地址:https://www.cnblogs.com/Applogize/p/13381447.html
Copyright © 2011-2022 走看看