云服务器MySQL 8.0主从复制部署指南
文章分类:更新公告 /
创建时间:2025-08-12
在云服务器上部署MySQL 8.0主从复制,能有效提升数据库可用性、读写性能与数据安全性。无论是电商系统的订单数据同步,还是企业应用的读写分离需求,这套方案都能提供稳定支撑。以下从准备到测试全流程拆解,新手也能快速掌握。
准备工作:两台云服务器的基础配置
首先需要两台云服务器(一台主服务器、一台从服务器),建议选择同地域云服务器降低网络延迟。两台服务器均需安装MySQL 8.0,安装方式因操作系统而异:
- CentOS系统用`yum install mysql-server-8.0`
- Ubuntu系统用`apt-get install mysql-server-8.0`
安装完成后,通过`mysql -V`命令验证版本(输出应显示"Ver 8.0")。需注意:云服务器默认可能关闭3306端口,需在安全组中放行该端口(主从服务器间需互访3306端口)。
主服务器配置:开启数据同步的核心设置
主服务器是数据写入源头,关键是开启二进制日志(记录所有数据变更操作)并创建复制账号。
第一步:修改配置文件
编辑MySQL配置文件(路径通常为`/etc/mysql/mysql.conf.d/mysqld.cnf`),添加/修改以下参数:
[mysqld]
server-id = 1 # 全局唯一标识,主从不能重复
log-bin = mysql-bin # 开启二进制日志,文件名前缀为mysql-bin
binlog-do-db = demo # 指定需要同步的数据库名(如demo库)
修改后重启服务:`systemctl restart mysql`
第二步:创建复制用户
登录MySQL客户端(`mysql -u root -p`),执行以下命令创建专用复制账号:
CREATE USER 'repl_user'@'%' IDENTIFIED BY 'StrongPass123!';
GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%';
FLUSH PRIVILEGES;
- `repl_user`:从服务器连接主服务器的专用账号
- `%`:允许所有IP连接(生产环境建议限制为从服务器IP)
- `REPLICATION SLAVE`权限:仅允许复制操作,保障主库安全
第三步:记录日志位置
执行`SHOW MASTER STATUS;`命令,会看到类似输出:
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 156 | demo | |
+------------------+----------+--------------+------------------+
需记录`File`(当前二进制日志文件名)和`Position`(当前日志偏移量),后续从服务器配置会用到。
从服务器配置:同步主库的关键步骤
从服务器需要指向主库的日志位置,并启动复制线程。
第一步:配置唯一标识
编辑从服务器的`mysqld.cnf`,设置`server-id=2`(与主库不同即可),重启MySQL服务。
第二步:关联主服务器信息
登录从服务器MySQL客户端,执行以下命令关联主库:
CHANGE MASTER TO
MASTER_HOST='主服务器公网IP',
MASTER_USER='repl_user',
MASTER_PASSWORD='StrongPass123!',
MASTER_LOG_FILE='mysql-bin.000001', # 对应主库的File值
MASTER_LOG_POS=156; # 对应主库的Position值
第三步:启动并验证复制
执行`START SLAVE;`启动复制线程,再通过`SHOW SLAVE STATUS\G`检查状态。重点看两个指标:
- `Slave_IO_Running`:是否为`Yes`(表示IO线程正常连接主库获取日志)
- `Slave_SQL_Running`:是否为`Yes`(表示SQL线程正常执行日志中的操作)
两项均为`Yes`,说明主从复制配置成功。
测试验证:确认数据同步效果
在主服务器执行写入操作测试同步:
USE demo;
CREATE TABLE user (id INT PRIMARY KEY, name VARCHAR(20));
INSERT INTO user VALUES (1, '张三');
在从服务器执行查询:
USE demo;
SELECT * FROM user;
若能看到刚插入的`(1, '张三')`,说明主从复制已生效。
通过这套方案,云服务器上的MySQL数据库能实现自动数据同步,即使主库故障,从库也能快速接管服务,大幅降低数据丢失风险。日常维护中建议定期检查`SHOW SLAVE STATUS`结果,关注`Seconds_Behind_Master`(主从延迟时间),若超过10秒需排查网络或主库负载问题。
上一篇: 海外云服务器环境下K8s配置修改操作指南