• 十九、Mysql的半同步复制


    一、什么是半同步复制

    半同步复制(Semisynchronous replication) 介于异步复制和全同步复制之间,主库在执行完客户端提交的事务后不是立刻返回给客户端,而是等待至少一个从库接收到并写到relay log中才返回给客户端。相对于异步复制,半同步复制提高了数据的安全性,同时它也造成了一定程度的延迟,这个延迟最少是一个TCP/IP往返的时间。所以,半同步复制最好在低延时的网络中使用。

    简单来说,半同步复制解决主从数据一致性问题。

    二、半同步复制工作原理的变化

    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达到了我们预设值的超时时间,半同步复制会切换为原始的异步复制.

    三、配置半同步复制

    1、加载插件
    主:
    [(none)]>INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
    从:
    [(none)]>INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
    2、查看是否加载成功:
    [(none)]>show plugins;
    3、启动:
    主:
    [(none)]>SET GLOBAL rpl_semi_sync_master_enabled = 1;
    从:
    [(none)]>SET GLOBAL rpl_semi_sync_slave_enabled = 1;
    4、重启从库上的IO线程
    [(none)]>STOP SLAVE IO_THREAD;
    [(none)]>START SLAVE IO_THREAD;
    5、查看是否在运行
    主:
    [(none)]>show status like 'Rpl_semi_sync_master_status';
    从:
    [(none)]>show status like 'Rpl_semi_sync_slave_status';
    [(none)]> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
    ERROR 1126 (HY000): Can't open shared library
    '/usr/local/mysql/lib/plugin/semisync_master.so'
    (errno: 22 libimf.so: cannot open shared object file:
    No such file or directory)
    
    #如果尝试安装插件导致在Linux上显示类似于此处所示的错误,则必须安装 libimf:
    #可以libimf从 https://dev.mysql.com/downloads/os-linux.html获得。

    更改配置文件

    主库配置

     
    [mysqld]
    rpl_semi_sync_master_enabled=1
    rpl_semi_sync_master_timeout=1000 # 1 second

    从库配置

    [mysqld]
    rpl_semi_sync_slave_enabled=1
  • 相关阅读:
    Codeforces 376A. Night at the Museum
    Assigning Workstations
    树的直径证明
    Frogger
    Circle
    HDU 1022 Train Problem I
    Argus
    树状数组总结
    C++ 容器(一):顺序容器简介
    C++ 输出缓冲区的管理
  • 原文地址:https://www.cnblogs.com/yaokaka/p/14083360.html
Copyright © 2020-2023  润新知