数据迁移
同步起始,需要将rds的初始数据迁移到本地数据库
可以通过在本地服务器执行以下命令
[root@3423fd34k23 ~]# mysqldump -v -h [阿里RDS外网地址] -u[阿里RDS用户名] -p[阿里RDS用户密码] --single-transaction --set-gtid-purged=off [数据库名称] |mysql -uroot -p[本地数据库root用户密码] [数据库名称]
注意:阿里的RDS的白名单得将本地的ip加进去,–single-transaction表示不锁表,在备份过程中依然可以读写 ,-v是添加输出,可以看到执行到哪个表了
效果如下:
数据同步
上面的执行完成后,也就可以同步了,不过在同步前需要修改mysql的配置文件my.cnf,在[mysqld]下添加以下配置
# 打开gtid,一般rds是打开的,所有同步需要打开备机的gtid
gtid-mode=on
enforce-gtid-consistency=1
log-slave-updates=1
log-bin=mysql-bin
binlog-format=ROW
server_id=2
# 过滤mysql、information_schema、performance_schema以及sys的数据库变更
#因为rds是线上环境,会有心跳包,而本地不需要,所以以下库会出现变更,而rds的以下数据库和我们本地的以下数据库并不是完全一样,所以就会报错
replicate-wild-ignore-table=mysql.%
replicate-wild-ignore-table=information_schema.%
replicate-wild-ignore-table=performance_schema.%
replicate-wild-ignore-table=sys.%
配置完成后,重启就mysql
重启完成后,进入sql运行
change master to MASTER_HOST='RDS外网地址',
MASTER_USER='RDS数据库用户名',
MASTER_PASSWORD='RDS数据库用户密码';
然后运行start slave;
这时候运行show slave status\G;
以下Slave_IO_Running和Slave_SQL_Running都为Yes则代表同步成功了