Linux云服务器数据库主从复制配置全攻略
在当今数据驱动的时代,数据库高可用性配置已成为企业IT基础设施的必备方案。本文将详细介绍在Linux云服务器上配置MySQL数据库主从复制的完整流程,帮助您构建可靠的数据备份和读写分离架构。
一、准备工作
在开始配置前,请确保您已准备好以下环境:
- 两台Linux云服务器(建议使用相同发行版)
- MySQL 5.7或以上版本已安装
- 服务器间网络互通(建议配置内网连接)
- root或具有sudo权限的用户
重要提示:生产环境建议使用专用网络通道,避免通过公网传输敏感数据。
二、主服务器配置
1. 修改MySQL配置文件
# 编辑my.cnf文件(路径可能因发行版而异) sudo vi /etc/mysql/my.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
2. 创建复制专用账户
mysql> CREATE USER 'replicator'@'从服务器IP' IDENTIFIED BY '强密码'; mysql> GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'从服务器IP'; mysql> FLUSH PRIVILEGES;
3. 锁定数据库并获取主库状态
mysql> FLUSH TABLES WITH READ LOCK; mysql> SHOW MASTER STATUS;
记录File和Position的值,从服务器配置时需要用到。
三、从服务器配置
1. 修改MySQL配置文件
server-id = 2 # 必须与主服务器不同 relay_log = /var/log/mysql/mysql-relay-bin.log log_bin = /var/log/mysql/mysql-bin.log binlog_format = ROW read_only = 1 # 从库设为只读
2. 配置复制链路
mysql> CHANGE MASTER TO MASTER_HOST='主服务器IP', MASTER_USER='replicator', MASTER_PASSWORD='密码', MASTER_LOG_FILE='主库记录的File值', MASTER_LOG_POS=主库记录的Position值;
3. 启动复制进程
mysql> START SLAVE; mysql> SHOW SLAVE STATUS\G
检查Slave_IO_Running和Slave_SQL_Running是否为Yes。
四、验证与监控
在主库创建测试数据,观察从库是否同步:
# 主库操作 mysql> CREATE DATABASE replication_test; mysql> USE replication_test; mysql> CREATE TABLE test_table(id INT); # 从库验证 mysql> SHOW DATABASES; # 应能看到replication_test
常用监控命令:
SHOW SLAVE STATUS\G
– 查看复制状态SHOW PROCESSLIST;
– 查看数据库进程SHOW MASTER STATUS;
– 查看主库二进制日志状态
五、故障排除
常见问题及解决方案:
- Slave_IO_Running为Connecting:检查网络连接、防火墙设置和复制账户权限
- 复制位置错误:使用
STOP SLAVE; RESET SLAVE; CHANGE MASTER TO...
重新配置 - 数据不一致:考虑使用
mysqldump
重新初始化从库
建议设置定期监控脚本,自动检查复制状态并及时报警。
总结
通过本文的详细步骤,您已成功在Linux云服务器上配置了MySQL主从复制。这种架构不仅能提高数据安全性,还能通过读写分离提升系统整体性能。随着业务增长,您可以进一步考虑配置级联复制或使用GTID实现更灵活的拓扑结构。
记住定期检查复制状态,并考虑实现自动化监控方案,确保数据同步的可靠性。