MysqL 的增强半同步复制介绍
发布时间:2023-09-21 10:15:59 所属栏目:MySql教程 来源:
导读:传统的异步复制有个很大的缺点,主从库的复制难免会存在一定的延迟,为了解决复制延迟问题,MysqL 引入了半同步复制。本小节主要介绍 MysqL 的增强半同步复制。
1. 增强半同步复制
增强半同步复制,号称无损半同
1. 增强半同步复制
增强半同步复制,号称无损半同
传统的异步复制有个很大的缺点,主从库的复制难免会存在一定的延迟,为了解决复制延迟问题,MysqL 引入了半同步复制。本小节主要介绍 MysqL 的增强半同步复制。 1. 增强半同步复制 增强半同步复制,号称无损半同步复制,从库丢失数据的概率非常小。下面从实战的角度一步步搭建增强半同步复制环境。 1.1 基本环境 Master Slave MysqL版本 MysqL-5.7.31-x86_64 MysqL-5.7.31-x86_64 IP 192.168.0.1 192.168.0.2 port 3306 3306 1.2 主库配置 1. 修改配置 --安装半同步组件 install plugin rpl_semi_sync_master soname 'semisync_master.so'; --动态修改参数 set global rpl_semi_sync_master_enabled = ; set global rpl_semi_sync_master_timeout = ; #1 second --修改my.cnf配置文件 [MysqLd] rpl_semi_sync_master_enabled = ; rpl_semi_sync_master_timeout = ; #超过1s转换成传统复制 gtid-mode = on enforce-gtid-consistency = binlog_format = row server-id = log-bin = /MysqL/log/MysqL-bin binlog_cache_size = 1M 2. 创建复制用账号 create user 'repl'@'.' identified by ''; grant replication slave on *.* to 'repl'@'.'; 1.3 从库配置 1. 修改配置 --安装半同步组件 install plugin rpl_semi_sync_slave soname 'semisync_slave.so'; --动态修改 set global rpl_semi_sync_slave_enabled = ; --修改my.cnf配置文件 [MysqLd] rpl_semi_sync_slave_enabled = ; gtid-mode = on enforce-gtid-consistency = binlog_format = row server-id = log-bin = /MysqL/log/MysqL-bin binlog_cache_size = 1M skip_slave_start = 2. 导出导入 --主库导出 MysqLdump -uroot -p --single-transaction --master-data=2 --databases test123 > test_200908.sql --从库导入 MysqL -uroot -p < test_200908.sql --调整复制起点 change master to master_host='192.168.0.1', master_port=, master_user='repl', master_password='123456', master_auto_position=; --开始复制 start slave; --查看复制 show slave status\G; 1.4 检查配置 #主从库确认半同步模块是否加载成功 show plugins; +------------------------+----------+------------------+--------------------+---------+ | Name | Status | Type | Library | License | +------------------------+----------+------------------+--------------------+---------+ | rpl_semi_sync_master | ACTIVE | REPLICATION | semisync_master.so | GPL | | rpl_semi_sync_slave | ACTIVE | REPLICATION | semisync_slave.so | GPL | +------------------------+----------+------------------+--------------------+---------+ #主从库确认半同步参数是否设置成功 show global variables like '%semi%'; +-------------------------------------------+------------+ | Variable_name | Value | +-------------------------------------------+------------+ | rpl_semi_sync_master_enabled | ON | | rpl_semi_sync_slave_enabled | ON | | rpl_semi_sync_master_timeout | | | rpl_semi_sync_master_wait_point | AFTER_SYNC | +-------------------------------------------+------------+ 1.5 环境校验 1. 主库 --主库,创建表t1并插入数据 use test123; create table t1(id int); insert into t1 values(); select * from t1; 2. 从库 --从库,检查t1表是否存在 use test123; select * from t1; 3. 监控增强半同步状态 --主要监控主库相关状态值 show global status like '%semi%'; --关注以下status Rpl_semi_sync_master_no_tx #传统方式复制,如果Rpl_semi_sync_master_no_tx的值较大,需关注 Rpl_semi_sync_master_yes_tx #半同步方式复制 Rpl_semi_sync_master_net_waits #网络等待时间 2. 切换同步模式 1. 增强半同步 -> 半同步 --主库 set global rpl_semi_sync_master_wait_point= 'AFTER_COMMIT' show global variables like '%semi%'; --从库 set global rpl_semi_sync_master_wait_point= 'AFTER_COMMIT' show global variables like '%semi%'; 2. 半同步 -> 增强半同步 --主库 set global rpl_semi_sync_master_wait_point= 'AFTER_SYNC' show global variables like '%semi%'; --从库 set global rpl_semi_sync_master_wait_point= 'AFTER_SYNC' show global variables like '%semi%'; 3.小结 本小节主要从实战角度,介绍了 MysqL 增强半同步复制的搭建方式,与异步复制的搭建方式相比,多了一些参数的调整。 一般来说,为了运维的简单,主库和从库的参数配置建议保持一致。 --安装半同步组件 install plugin rpl_semi_sync_master soname 'semisync_master.so'; install plugin rpl_semi_sync_slave soname 'semisync_slave.so'; --动态修改全局参数 set global rpl_semi_sync_master_enabled = ; set global rpl_semi_sync_master_timeout = ; #超过1s转换成传统复制 set global rpl_semi_sync_slave_enabled = ; --修改my.cnf配置文件 [MysqLd] rpl_semi_sync_master_enabled = ; rpl_semi_sync_master_timeout = ; #超过1s转换成传统复制 rpl_semi_sync_slave_enabled = ; (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |