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. 主从数据不一致
解决方案:
- 在主服务器使用mysqldump导出数据
- 在从服务器停止复制并导入数据
- 重新配置复制位置
通过本文详细的步骤指导,您应该已经成功在Linux云服务器上配置了MySQL主从复制。此架构不仅能提高系统的可用性,还能实现读写分离,显著提升数据库性能。建议定期监控复制状态,并考虑设置自动化告警机制。
💡 进阶建议:对于更高级的需求,可以研究GTID复制、半同步复制或组复制等更强大的复制技术。
