场景
由于一些特殊的原因,某燃气公司线下ECS上需要在ECS上搭建一套从库,需要同步RDS数据库的数据(mysql5.7版本)。
实现RDS for mysql与线下ECS上自建数据库数据实时同步,阿里云官方推荐使用DTS方式进行。原因有两个:
1、mysql-bin正常情况下,RDS在本地只保存18个小时
2、当RDS实例切换时,会影响自建ECS数据同步(这个经过测试可以排除)
操作步骤
配置RDS主实例
# show variables like 'server_id';
系统返回如下信息:
+-------------------------+-----------------+
| Variable_name | Value |
+-------------------------+-----------------+
| server_id |678888899909 |
| server_id_bits | 32 |
+-------------------------+-----------------+
配置ECS上从实例
. 修改从实例 mysql 配置文件。
1)打开从实例 MySQL 配置文件。
vim /etc/my.cnf
. 配置从实例的 server-id 和要同步的数据库。
server-id = 123456789
log_bin=/data/dbdata/mysql-bin
expire_logs_days = 7
max_binlog_size = 100M
replicate-ignore-db = mysql #不需要同步的数据库
replicate-ignore-db = information_schema #不需要同步的数据库
replicate-ignore-db = performance_schema #不需要同步的数据库
replicate-ignore-db = sys #不需要同步的数据库
#GTID
gtid_mode=on
enforce_gtid_consistency=on
binlog_format=row #设置 binlog 为 row
log-slave-updates=1
# show variables like '%binlog_format%';
系统返回如下信息:
+-------------------------+-----------------+
| Variable_name | Value |
+-------------------------+-----------------+
| binlog_format | ROW |
+-------------------------+-----------------+
方式二:通过mysqldump进行导出数据库及导入数据
注:这里大家应该比较熟悉,就不详细介绍
. 登录数据库,设置同步选项。
mysql>change master to master_host = 'rds服务地扯', master_port = 3306, master_user = 'root', master_password='masterpassword', master_auto_position = 1;
mysql>slave start;
mysql>show slave status\G
查看系统返回信息中 Slave_IO_Running 和 Slave_SQL_Running 的状态是否为 Yes,如下所示。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
注: Slave_IO_Running、Slave_SQL_Running两个参数均为yes,表示IO进程及SQL进程都正常,表示配置RDS主从实例成功。