223_mysql_复制技术_搭建半同步复制

举报
alexsully 发表于 2021/11/12 13:05:02 2021/11/12
【摘要】 复制模式半同步复制的实现

15 搭建半同步复制

1 使用半同步复制前提

  •         1 show variables like "have_dynamic_loading"  # Yes 表示动态加载
  •         2 主备复制正常
  •         3 不能配置多个复制通道(多源复制)

2 相关命令

INSTALL PLUGIN: 安装半同步复制插件
SET GLOBAL : 修改半同步复制系统变量, 例 主库修改半同步复制的超时等待时间
STOP SLAVE, START SLAVE: 重启已有的复制(原来是传统异步复制安装插件后)

查看已经安装的插件
show PLUGINS
SELECT plugin_name, plugin_status from information_schema.`PLUGINS` where plugin_name like "%semi%"

3 mysql安装包中包括相关插件库文件(分主备不同插件)

1 安装	
master 安装
mysql > installl plugin rpl_semi_sync_master soname "semisync_master.so" 

slave 安装
mysql > installl plugin rpl_semi_sync_slave soname "semisync_slave.so" 

如果报错 ibimf.so: cannot open shared object file:, No such file or directory 需要安装libimf

2 master& slave检查
SELECT plugin_name, plugin_status from information_schema.`PLUGINS` where plugin_name like "%semi%"
status : active


3 开启
安装成功后 默认是禁用的 需要修改配置文件或者系统变量来启动

master 启用
set  global rpl_semi_sync_master_enabled = 1
slave 启用
set  global rpl_semi_sync_slave_enabled =1 

4 检查状态是否启用
show status like "%semi%status%"
master: rpl_semi_sync_master_status ON 
slave :  rpl_semi_sync_slave_status  OFF   # 有异步复制正在运行,slave不感知半同步复制插件的配置变化,该值为OFF 


5 slave 感知半同步插件
	stop slave io_thread;
	start slave io_thread 
	
	show status like "%semi%status%"
	slave :  rpl_semi_sync_slave_status  on 
	

可以修改配置文件

master 
[mysqld]
plugin_load= "rpl_semi_sync_master=semisync_master.so"
rpl_semi_sync_master_enabled =1 
rpl_semi_sync_master_timeout = 1000  # 单位毫秒; 1S


slave
[mysqld]
plugin_load= "rpl_semi_sync_slave=semisync_slave.so"
rpl_semi_sync_slave_enabled =1

查看数据半同步复制状态

show status like "%semi%tx%"
 
 variable_name    value 
 rpl_semi_sync_master_no_tx  0  #如果不为0 说明使用传统异步复制到slave,不代表不正常如果持续时间久 检查网络原因
 rpl_semi_sync_master_tx_avg_wait_time 
 rpl_semi_sync_master_tx_wait_time
 rpl_semi_sycn_master_tx_waits
 rpl_semi_sync_master_yes_tx
 
 
 
 rpl_semi_sync_master_wait_no_slave 用于控制系统变量 rpl_semi_sync_master_timeout设置的超时时间内, slave变为0时,master是否仍等待 slave的ACK
 默认是 ON ; 5.7 默认只需要等待1个slave,如果等多个 设置变量:rpl_semi_sync_master_wait_for_slave_count 
 
 如果主从一致性要求高:  rpl_semi_sync_master_wait_no_slave =on  & 调大 rpl_semi_sync_master_timeout
 如果主从一致性要求不高: rpl_semi_sync_master_wait_no_slave =off & 调大 rpl_semi_sync_master_timeout  尽可能延长切换到异步复制的时间
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。