• ADADADADAD

    mysql 半同步复制[ mysql数据库 ]

    mysql数据库 时间:2024-12-24 19:10:14

    作者:文/会员上传

    简介:

    一.半同步复制
    半同步复制特点
    1. 与传统的异步复制相比,半同步复制在多个Slave节点中会选取一个节点进行半同步复制。也就是说,当Master提交一个事务的时候,在这个半同步复制

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    一.半同步复制
    半同步复制特点
    1. 与传统的异步复制相比,半同步复制在多个Slave节点中会选取一个节点进行半同步复制。也就是说,当Master提交一个事务的时候,在这个半同步复制的Slave端返回一个同步完成的Ack包之后,服务器才会向用户返回事务提交成功,而其他的节点则是采用传统的异步复制方式进行同步。
    2. 半同步是复制是基于异步复制之上进行的,也就是说配置半同步复制之前需要先配置到异步复制。
    3. 半同步复制可以保证在主节点发生故障的时候,总有一个节点的数据与主节点一样。这样在进行切换的时候,可以更加快速地把这个Slave节点设置成主节点来使用。

    5.7

    5.6


    半同步复制性能
    - 半同步复制比异步复制性能低1/3
    - 模式after_sync 比 after_commit性能要高

    二.半同步复制安装条件
    1.必须是MySQL5.5或者以上
    2.MySQL必须有自动加载功能,即have_dynamic_loading变量为YES
    mysql> show variables like 'have_dynamic_loading';
    +----------------------+-------+
    | Variable_name| Value |
    +----------------------+-------+
    | have_dynamic_loading | YES |
    +----------------------+-------+
    3.主从复制已经配置好(异步复制)

    三.配置
    1.设置半同步模式(主库,5.7为默认值)
    SET rpl_semi_sync_master_wait_point= AFTER_SYNC;

    2.加载插件
    INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';(主库)
    INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';(从库)

    show plugins;(确认查看)

    3.启动半同步复制
    主库
    SET GLOBAL rpl_semi_sync_master_enabled = 1;
    从库
    SET GLOBAL rpl_semi_sync_slave_enabled = 1;
    以上的启动方式是在命令行操作,也可写在配置文件中。
    plugin_dir=/usr/local/mysql/lib/plugin
    plugin_load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
    loose_rpl_semi_sync_master_enabled = 1
    loose_rpl_semi_sync_slave_enabled = 1
    loose_rpl_semi_sync_master_timeout = 5000
    rpl_semi_sync_master_wait_point = AFTER_SYNC or AFTER_COMMIT
    rpl_semi_sync_master_wait_for_slave_count = 1

    重启从服务器IO线程,手动将异步模式切换为半同步模式。重启后,slave会在master上注册为半同步复制的slave角色。
    STOP SLAVE IO_THREAD;
    START SLAVE IO_THREAD;

    4.确认半同步复制运行状态
    主库
    mysql> show status like 'Rpl_semi_sync_master_status';
    +-----------------------------+-------+
    | Variable_name | Value |
    +-----------------------------+-------+
    | Rpl_semi_sync_master_status | ON|
    +-----------------------------+-------+
    从库
    mysql> show status like 'Rpl_semi_sync_slave_status';
    +----------------------------+-------+
    | Variable_name | Value |
    +----------------------------+-------+
    | Rpl_semi_sync_slave_status | ON|
    +----------------------------+-------+

    5.半同步复制相关参数
    主库
    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_master_timeout=1000默认1000毫秒,即10秒超时,将切换为异步复制
    从库
    Rpl_semi_sync_slave_status表示从服务器开启半同步复制

    6.测试
    模拟半同步复制slave server宕机
    - 关闭半同步slave server
    - 关闭后主库进行查看未发生变化
    mysql> show status like '%semi%';
    +--------------------------------------------+-------+
    | Variable_name | Value |
    +--------------------------------------------+-------+
    | Rpl_semi_sync_master_clients | 1|
    | Rpl_semi_sync_master_net_avg_wait_time| 0|
    | Rpl_semi_sync_master_net_wait_time| 0|
    | Rpl_semi_sync_master_net_waits| 2|
    | Rpl_semi_sync_master_no_times | 0|
    | Rpl_semi_sync_master_no_tx| 0|
    | Rpl_semi_sync_master_status| ON|
    | Rpl_semi_sync_master_timefunc_failures| 0|
    | Rpl_semi_sync_master_tx_avg_wait_time | 5754 |
    | Rpl_semi_sync_master_tx_wait_time | 11509 |
    | Rpl_semi_sync_master_tx_waits | 2|
    | Rpl_semi_sync_master_wait_pos_backtraverse | 0|
    | Rpl_semi_sync_master_wait_sessions| 0|
    | Rpl_semi_sync_master_yes_tx| 2|
    +--------------------------------------------+-------+
    - 主库执行事务,等待10秒
    mysql> delete from wwj.t3 where idt3=2;
    Query OK, 1 row affected (10.03 sec)
    - 再次查看
    mysql> show status like '%semi%';
    +--------------------------------------------+-------+
    | Variable_name | Value |
    +--------------------------------------------+-------+
    | Rpl_semi_sync_master_clients | 1|
    | Rpl_semi_sync_master_net_avg_wait_time| 0|
    | Rpl_semi_sync_master_net_wait_time| 0|
    | Rpl_semi_sync_master_net_waits| 3|
    | Rpl_semi_sync_master_no_times | 1|
    | Rpl_semi_sync_master_no_tx| 1|
    | Rpl_semi_sync_master_status| OFF |
    | Rpl_semi_sync_master_timefunc_failures| 0|
    | Rpl_semi_sync_master_tx_avg_wait_time | 5754 |
    | Rpl_semi_sync_master_tx_wait_time | 11509 |
    | Rpl_semi_sync_master_tx_waits | 2|
    | Rpl_semi_sync_master_wait_pos_backtraverse | 0|
    | Rpl_semi_sync_master_wait_sessions| 0|
    | Rpl_semi_sync_master_yes_tx| 2|
    +--------------------------------------------+-------+
    - 重新开启semi slave,半同步重新开启。

    mysql 半同步复制.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: mysql同步复制