加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MysqL 的增强半同步复制介绍

发布时间:2023-09-21 10:15:59 所属栏目:MySql教程 来源:
导读:传统的异步复制有个很大的缺点,主从库的复制难免会存在一定的延迟,为了解决复制延迟问题,MysqL 引入了半同步复制。本小节主要介绍 MysqL 的增强半同步复制。

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 = ;
 

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章