售前咨询400-838-0503

如何在Linux云服务器上配置数据库主从复制?

技术文档 2025-04-03 20:21

Linux云服务器数据库主从复制配置完全指南

在现代化应用架构中,数据库高可用性是保障业务连续性的关键要素。本文将详细介绍在Linux云服务器环境下,如何高效配置MySQL数据库主从复制架构,帮助您实现数据冗余备份和读写分离。

一、准备工作

在开始配置前,请确保您已准备好以下资源:

  • 两台Linux云服务器:建议使用相同发行版和版本号
  • MySQL服务器:5.7或8.0版本(本文以MySQL 8.0为例)
  • 网络配置:确保主从服务器间网络互通,建议配置内网连接
  • SSH访问权限:需要root或具有sudo权限的账户

🔔 重要提示:生产环境建议配置防火墙规则,仅允许数据库服务器间通信。

二、主服务器配置

1. 修改MySQL配置文件

编辑/etc/mysql/mysql.conf.d/mysqld.cnf文件(路径可能因发行版而异):

[mysqld]
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_format = ROW
binlog_do_db = 需要复制的数据库名
expire_logs_days = 10
max_binlog_size = 100M
bind-address = 0.0.0.0

2. 创建复制专用账户

登录MySQL后执行:

CREATE USER 'replica_user'@'%' IDENTIFIED BY 'StrongPassword123!';
GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%';
FLUSH PRIVILEGES;

3. 锁定数据库并获取状态信息

FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;

记录File和Position值,从服务器配置时需要。

三、从服务器配置

1. 修改MySQL配置文件

[mysqld]
server-id = 2
relay-log = /var/log/mysql/mysql-relay-bin.log
read_only = 1

2. 配置主从复制

登录MySQL后执行:

CHANGE MASTER TO
MASTER_HOST='主服务器IP',
MASTER_USER='replica_user',
MASTER_PASSWORD='StrongPassword123!',
MASTER_LOG_FILE='前面记录的File值',
MASTER_LOG_POS=前面记录的Position值;

3. 启动复制进程

START SLAVE;

查看复制状态:

SHOW SLAVE STATUS\G

确认Slave_IO_Running和Slave_SQL_Running都为Yes表示成功。

四、验证与监控

1. 基本验证方法

  • 在主服务器创建测试表或插入数据
  • 在从服务器查询确认数据同步

2. 监控指标

指标 正常值 检查命令
复制延迟 Seconds_Behind_Master < 60 SHOW SLAVE STATUS
IO线程状态 Slave_IO_Running: Yes SHOW SLAVE STATUS
SQL线程状态 Slave_SQL_Running: Yes SHOW SLAVE STATUS

五、常见问题解决

1. 复制中断

现象:Slave_SQL_Running显示No

解决方案:

STOP SLAVE;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
START SLAVE;

2. 主从数据不一致

解决方案:

  1. 在主服务器使用mysqldump导出数据
  2. 在从服务器停止复制并导入数据
  3. 重新配置复制位置

通过本文详细的步骤指导,您应该已经成功在Linux云服务器上配置了MySQL主从复制。此架构不仅能提高系统的可用性,还能实现读写分离,显著提升数据库性能。建议定期监控复制状态,并考虑设置自动化告警机制。

💡 进阶建议:对于更高级的需求,可以研究GTID复制、半同步复制或组复制等更强大的复制技术。

如本公告涉及你的产品,或有不清楚之处,可提交工单确认。

提交工单