在数据同步和备份策略中,将阿里云 RDS 配置为主库,自建数据库配置为从库是一个常见的做法。这种配置可以利用云服务的高可用性和可扩展性,同时保持自建数据库的备份和冗余。本文将详细介绍如何实现这一配置,包括所需的步骤和注意事项。
1. 准备工作
在开始之前,请确保以下条件已满足:
- 阿里云 RDS 实例:已创建并配置好,并且具备主库的功能。(版本:5.7.43-log)
- 自建数据库:已安装并运行,并且能够访问。
- 网络配置:确保阿里云 RDS 和自建数据库之间的网络连接畅通。(RDS设置了白名单,应将自建数据库的IP地址添加上)
2. 配置阿里云 RDS 实例
- 登录阿里云控制台:
- 访问 阿里云控制台
- 选择 RDS 实例:
- 导航到 RDS 控制台,选择你作为主库的 RDS 实例。
- 配置参数:
- 确保 RDS 实例的 binlog_format 设置为
ROW
(行级日志),因为这是支持主从同步的必要配置。 - 在 数据库参数 设置中,启用
gtid_mode
并设置为ON
,这是 GTID(全局事务标识符)模式的配置。 - RDS 实例的 master_info_repository 设置为
TABLE
。 - RDS 实例的 relay_log_info_repository' 设置为
TABLE
。
- 创建同步用户:
- 在 RDS 实例中创建一个用于从库连接的同步用户:
CREATE USER 'repl_user'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION MASTER ON *.* TO 'repl_user'@'%';
FLUSH PRIVILEGES;
- 获取主库的二进制日志文件和位置:
- 执行以下命令获取当前的二进制日志文件和位置:
SHOW MASTER STATUS;
3. 配置自建数据库
- 开启二进制日志:
- 编辑自建数据库的
my.cnf
配置文件,启用二进制日志和 GTID 模式: - 设置需要同步的数据库。test
[mysqld]
log-bin=mysql-bin
gtid-mode=ON
enforce-gtid-consistency=ON
binlog-format=row
replicate-do-db=test
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
replicate-ignore-db=mysql
replicate-ignore-db=sys
- 重启数据库:
- 保存更改并重启数据库以应用新的配置:
sudo systemctl restart mysql
我的服务器是安装的lnmp一键安装,用这句命令。
lnmp mysql restart
- 配置从库:
- 连接到自建数据库,配置其作为从库并连接到阿里云 RDS:
CHANGE MASTER TO
MASTER_HOST='阿里云 RDS 的 IP 地址',
MASTER_PORT=3306,
MASTER_USER='repl_user',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001', -- 从 RDS 获取 SHOW MASTER STATUS;
MASTER_LOG_POS=154; -- 从 RDS 获取
- 启动复制:
- 启动自建数据库上的复制进程:
START SLAVE;
- 检查复制状态:
- 确保复制进程正常运行,没有错误:
SHOW SLAVE STATUS\G;
4. 验证和维护
- 验证同步:
- 在阿里云 RDS 实例上创建一些测试数据,然后在自建数据库上检查这些数据是否被同步。
- 监控复制状态:
- 定期检查
SHOW SLAVE STATUS
输出,确保没有错误并且Slave_IO_Running
和Slave_SQL_Running
状态为Yes
。
- 处理错误:
- 如果出现错误,可以根据错误信息采取相应的措施,例如跳过错误、修复数据不一致等。
- 可能的错误:主库某个表有那一条记录,而从库没有那条记录,当进行更新时,从库找不到这一条记录。原因是,从库在开始执行同步时,表中的记录与主库没有一致。在从主库导出sql后,应该记录主库的记录状态,即:show master status;
- 实际案例
两个Yes,Yes,同步正常:
修改表结构和增加表也同步过来了。
最开始,只有一张表user, 字段值:uid,last_login_time.
主库增加了字段login_count, 又增加了一张表,_article.
6. 总结
将阿里云 RDS 作为主库,自建数据库作为从库的配置,可以实现数据的高可用性和冗余,同时享受云服务带来的灵活性和扩展性。通过本文提供的步骤,你可以顺利完成主从库的同步配置,并在实际运行中保持监控和维护,以确保系统的稳定性和数据一致性。
如果你在配置过程中遇到问题或有其他问题需要解决,请随时与我联系。希望这篇指南对你有所帮助!