signed

QiShunwang

“诚信为本、客户至上”

mysqldump 远程同步阿里RDS数据

2020/8/20 11:28:58   来源:

数据迁移

同步起始,需要将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则代表同步成功了
在这里插入图片描述