如何在两台CentOS服务器上搭建MySQL 8.0的主从半同步复制?

雨强姑娘_6467

雨强姑娘_6467

2026-07-03

744人浏览

原创

必须在主从两端分别安装并启用rpl_semi_sync_master和rpl_semi_sync_slave插件,仅配置参数或只装单边插件无效;主库需先INSTALL PLUGIN再设rpl_semi_sync_master_enabled=ON,否则启动报错;从库须同时装slave插件、开read_only、启relay_log并执行START SLAVE;验证须查Rpl_semi_sync_master_status和Rpl_semi_sync_slave_status均为ON。

如何在两台centos服务器上搭建mysql 8.0的主从半同步复制?

rpl_semi_sync_master 和 rpl_semi_sync_slave 插件必须在主从两端分别安装并启用,否则半同步形同虚设——只开主库插件或只配参数,复制仍是异步的。

主库必须先装插件再启配置,否则 mysqld 启动失败

MySQL 8.0 默认不加载半同步插件,rpl_semi_sync_master_enabled=ON 这类配置项只有在插件已安装的前提下才生效。如果先写配置再启动,mysqld 会直接报错退出,日志里出现类似 Unknown variable 'rpl_semi_sync_master_enabled' 的错误。

正确顺序是:

  • 登录主库 MySQL,执行:INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
  • 确认安装成功:SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE 'rpl_semi%';(应看到 rpl_semi_sync_master 状态为 ACTIVE)
  • 再编辑 /etc/my.cnf 或 /etc/my.cnf.d/mysql-server.cnf,添加以下几行:
[mysqld]
server-id = 1
log-bin = mysql-bin
binlog-format = ROW
rpl_semi_sync_master_enabled = ON
rpl_semi_sync_master_timeout = 3000

rpl_semi_sync_master_timeout 单位是毫秒,设为 3000 表示等 3 秒,超时就退化为异步;这个值不能设为 0(会无限等待),也不建议设太高(影响写入延迟)。

从库要装 slave 插件 + 开启只读 + 配 relay_log

从库只装 rpl_semi_sync_slave 插件还不够,必须同时满足三个条件才能参与半同步:

  • 执行:INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';(注意不是 semisync_master.so)
  • 配置文件中必须有 server-id(不能和主库重复),且开启 relay_log(如 relay-log = relay-bin)
  • 务必设置 read_only = ON(防止误写导致 GTID 冲突或数据不一致)

典型从库配置片段:

[mysqld]
server-id = 2
relay-log = relay-bin
read_only = ON
rpl_semi_sync_slave_enabled = ON

装完插件后重启 mysqld,再连上 MySQL 执行 START SLAVE; —— 此时 SHOW SLAVE STATUS\G 中的 Seconds_Behind_Master 应为 0 或稳定增长,且 Slave_SQL_Running_State 显示 Waiting for master transaction to commit 才算真正进入半同步状态。

MySQL
MySQL

编写正确的MySQL查询,避免字符集、索引和锁方面的常见陷阱。

下载

账号权限和网络连通性常被忽略

主从之间靠一个复制账号通信,这个账号必须满足:

  • 在主库创建时,用 CREATE USER 'repl'@'%' IDENTIFIED WITH 'caching_sha2_password' BY 'StrongPass123!';(MySQL 8.0 默认认证插件变了)
  • 授权必须包含 REPLICATION SLAVE,例如:GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
  • 从库连接主库时,CHANGE MASTER TO 语句里的 MASTER_HOST 必须能被 DNS 或 /etc/hosts 解析,且 telnet 主库IP 3306 要通(防火墙、SELinux、bind-address 都可能拦住)

特别注意:bind-address 默认是 127.0.0.1,必须改成 0.0.0.0 或具体内网 IP,否则从库根本连不上。

验证半同步是否真生效,别只看配置文件

配置写对了 ≠ 半同步跑起来了。最可靠的验证方式是查两个变量:

  • 主库执行:SHOW GLOBAL VARIABLES LIKE 'rpl_semi_sync_master_status'; → 返回 ON 才说明插件已激活且至少有一个从库响应过
  • 主库执行:SHOW GLOBAL STATUS LIKE 'Rpl_semi_sync_master_yes_tx'; → 这个值会随事务提交递增,如果是 0 就说明压根没走半同步路径
  • 从库执行:SHOW GLOBAL VARIABLES LIKE 'rpl_semi_sync_slave_status'; → 必须是 ON,且 SHOW PROCESSLIST 里能看到 semi-sync slave io thread

GTID 模式下还要额外确认:SELECT @@global.gtid_mode, @@global.enforce_gtid_consistency; 两者都得是 ON,否则 CHANGE MASTER TO 会报错。

半同步的“半”字很关键:它不保证所有从库都收到,只保证至少一个;但一旦那个“至少一个”掉线或超时,主库立刻降级回异步——这个切换是自动的,不会报错,所以必须定期查状态,不能配完就不管。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

centos mysql mysql 8.0

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

457

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

960

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

3292

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

1076

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

969

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

514

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

3016

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

5672

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

867

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
CentOS 官方文档
CentOS 官方文档

共0课时 | 0人学习