游乐游手机版
首页/系统平台/文章详情

Linux如何配置MariaDB主从同步实现数据库高可用详细指南

时间:2026-07-03 07:37
配置MariaDB主从同步需确保主库开启binlog并设置唯一server-id,从库设置不同server-id且不开启binlog。关键步骤是利用主库当前的File和Position执行CHANGEMASTERTO。验证时确认Slave_IO_Running和Slave_SQL_Running均为Yes,且Seconds_Behind_Master为0,即

先说个核心观点:主从同步的配置本身并不复杂,但真正的难点都隐藏在细节里。很多开发者按照文档配置完成后,发现 Slave_IO_Running 显示为 No,就会陷入自我怀疑。实际上,问题通常只出现在三个地方:server-id 是否唯一、log-bin 是否被默认关闭、以及 CHANGE MASTER TO 中两个关键参数——MASTER_LOG_FILEMASTER_LOG_POS——必须与主库执行 SHOW MASTER STATUS 后实时输出的结果完全一致,哪怕差一位数都不行。

Linux怎么配置MariaDB数据库主从同步

主库配置:务必手动开启 binlog,不要依赖默认值

许多新手在第一步就踩了坑。在 CentOS 7 环境下,MariaDB 默认并未启用二进制日志。如果你仅仅修改了 server-id,服务并不会生效。必须在 /etc/my.cnf/etc/my.cnf.d/server.cnf 文件的 [mysqld] 段中,手动添加以下两行:

server-id = 1
log-bin = mysql-bin

除此之外,还有两个强烈建议加入的配置:

  • binlog-format = ROW —— 使用行模式复制,能够有效避免因 SQL 语句执行环境不一致导致的主从数据不一致问题。
  • expire_logs_days = 7 —— 自动清理 7 天前的 binlog 文件,防止日志占满磁盘空间,这是一个经典的生产事故隐患。

修改完成后,记得重启 MariaDB 服务:systemctl restart mariadb。然后进行验证:执行 mysql -e "SHOW VARIABLES LIKE 'log_bin';",看到输出结果为 ON 才算真正生效。接着,再运行 SHOW MASTER STATUS;,确保能看到非空的 FilePosition 值,这两个值就是后面复制配置时需要用到的关键信息。

从库配置:server-id 不要与主库冲突,log-bin 不要随意开启

从库的配置相对简单,核心要点只有一条:server-id 必须设置为一个非 0 且不与主库重复的数字,例如 server-id = 2。**千万不要画蛇添足地加上 log-bin**,除非你计划将来把这个从库升级为主库(比如搭建双主架构)。否则,开启它只会产生大量无用的 binlog 文件,既浪费磁盘空间,还可能干扰复制链路。

这里有两个常见的“送分题”级别的错误:

  • 忘记修改 server-id,默认值为 0。当你执行 START SLAVE 时,系统会立即返回 ERROR 1200 (HY000): The server is not configured as a replication slave 错误。
  • 主从两个库的 server-id 设置成了相同的值。这时从库运行 SHOW SLAVE STATUS\GSeconds_Behind_Master 会显示为 NULL,IO 线程根本无法连接,启动失败。

CHANGE MASTER TO:关键步骤,不要偷懒使用旧值

这是整个配置过程中最关键的一步,也是最容易出问题的地方。请记住:MASTER_LOG_FILEMASTER_LOG_POS 是主库当前 binlog 的“快照点”,它们是动态变化的。每次主库重启、刷新日志、甚至执行 FLUSH LOGS 都会改变它们。千万不要从之前的文档或历史记录中复制粘贴,那样无异于刻舟求剑。

标准操作流程如下:

  • 在主库执行 FLUSH TABLES WITH READ LOCK;,先锁定所有表,确保后续导出的数据是一致的。
  • 立即执行 SHOW MASTER STATUS;,当场记录下 File(例如 mysql-bin.000003)和 Position(例如 154)。
  • 接着,导出数据(使用 mysqldump 即可),传输到从库并导入。
  • 最后,在从库上执行 CHANGE MASTER TO 命令,将刚才记录的值填入。

命令示例如下(请替换其中的 IP、密码以及那两个关键值):

CHANGE MASTER TO
  MASTER_HOST='192.168.1.150',
  MASTER_USER='repl',
  MASTER_PASSWORD='your_pass',
  MASTER_PORT=3306,
  MASTER_LOG_FILE='mysql-bin.000003',
  MASTER_LOG_POS=154;

然后,再执行 START SLAVE;。注意不要漏掉最后的分号。

验证:不要只看 Yes/No,要学会解读状态

配置完成后,执行 SHOW SLAVE STATUS\G,看到 Slave_IO_RunningSlave_SQL_Running 均为 Yes,可以先松一口气。但这只是表象,更关键的证据在后面:

  • Seconds_Behind_Master: 0 —— 理想状态,表示无延迟。偶尔出现小幅度波动也算正常。
  • Master_HostMaster_User —— 确认一下是否与你刚才设置的值一致,避免连错了主库。
  • Last_IO_ErrnoLast_SQL_Errno —— **这两个值必须都是 0**。只要不是 0,就说明出现了错误。具体原因可以直接查看 Last_IO_ErrorLast_SQL_Error 字段,它们会清晰地指明问题所在。例如:网络不通、密码错误、binlog 文件被删除、或者 SQL 冲突(最常见的是主键重复)。

如果遇到阻塞且想先跳过一条错误,可以使用 SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;。但这只是临时止血措施,真正需要做的是找到根本原因并解决。

最后再提一个更隐蔽的问题。如果没有开启半同步复制,主库写入完成后就会返回,从库虽然不报错,但数据可能仍然滞留在传输队列中。此时 Seconds_Behind_Master 可能显示为 0,给人“数据已同步”的假象。这种情况最危险,因为一旦主库宕机,你就会丢失数据。如何防范?最可靠的办法是定期使用工具对比两边的表行数,或者计算校验和进行验证。

来源:https://www.php.cn/faq/2751599.html
上一篇Linux安装Solr搜索引擎详细完整教程 下一篇Linux yum安装软件依赖报错解决方法
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
Win11频繁断网提示默认网关不可用怎么办
系统平台 · 2026-07-03

Win11频繁断网提示默认网关不可用怎么办

先聊聊一个很常见的问题:Windows 11 电脑刚连接 Wi-Fi 或插上网线时还能正常访问网络,可几分钟后突然“掉线”,任务栏右下角出现“无 Internet”提示,右键诊断显示“默认网关不可用”。这时候重启电脑或点击“修复”能暂时恢复,但用不了多久又会断开。这说明系统其实已经获得了 IP 地址

Mac如何取消正在进行的系统备份任务
系统平台 · 2026-07-03

Mac如何取消正在进行的系统备份任务

Mac 正在执行时间机器备份时,进度条卡在“正在准备”或“备份中”迟迟不动,磁盘读写与网络带宽被持续占用——这种情形下,大多数用户都希望能立即中断任务。设想这样一个场景:你正赶着安装大型软件,或者急需拔出外接硬盘,但系统却执意继续备份。别担心,这里有一套行之有效的解决方案:先在“活动监视器”中强制退

电脑显示器刷新率锁死60Hz无法调整的解决方法
系统平台 · 2026-07-03

电脑显示器刷新率锁死60Hz无法调整的解决方法

显示器刷新率锁死60Hz时,需检查DP或HDMI线缆版本并更换VESA认证线缆;可通过显示适配器属性勾选隐藏刷新率选项、显卡控制面板自定义时序、清洁安装驱动或使用CRU工具修改EDID强制启用高刷模式。

Linux系统下Systemd服务管理从零开始方法步骤详解完整教程
系统平台 · 2026-07-03

Linux系统下Systemd服务管理从零开始方法步骤详解完整教程

systemctl管理systemd服务,修改配置于 etc systemd system,启用需daemon-reload再enable。查看状态关注Loaded行,masked服务需unmask并重载恢复。reload发SIGHUP,restart中断连接,reload-or-restart自动降级。日常禁用优先用disable。

Mac如何取消同步iPhone书签和历史记录
系统平台 · 2026-07-03

Mac如何取消同步iPhone书签和历史记录

彻底关闭iCloudSafari同步并选择“保留在Mac上”,然后手动删除书签文件夹或清理~ Library Safari Bookmarks plist文件,最后通过iCloud官网确认同步已失效,即可彻底清除Mac上的iPhone同步书签。