• 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就会恢复到异步复制。
    
  • 相关阅读:
    PAT (Advanced Level) 1086. Tree Traversals Again (25)
    PAT (Advanced Level) 1085. Perfect Sequence (25)
    PAT (Advanced Level) 1084. Broken Keyboard (20)
    PAT (Advanced Level) 1083. List Grades (25)
    PAT (Advanced Level) 1082. Read Number in Chinese (25)
    HDU 4513 吉哥系列故事――完美队形II
    POJ Oulipo KMP 模板题
    POJ 3376 Finding Palindromes
    扩展KMP
    HDU 2289 Cup
  • 原文地址:https://www.cnblogs.com/Applogize/p/13381447.html
Copyright © 2020-2023  润新知