223_mysql_复制技术_搭建半同步复制
【摘要】 复制模式半同步复制的实现
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)