夜雪剑辰[yexuejc] 的个人博客 夜雪剑辰[yexuejc] 的个人博客

记录精彩的程序人生

目录
mysql主从同步,同步阿里云mysql(RDS)数据
/    

mysql主从同步,同步阿里云mysql(RDS)数据

  1. 先建立从数据库,这里用docker创建
docker run -d \
--name mysql-slave \
-e MYSQL_ROOT_PASSWORD=123456 \
-v /docker/mysql-slave/conf:/etc/mysql \
-v /docker/mysql-slave/data:/var/lib/mysql \
-v /docker/mysql-slave/logs:/var/log/mysql \
-p 3308:3306 \
-d mysql:5.7.26
  1. 同步前要先把RDS的数据库备份一份到从数据库,因为RDS已经有数据了。使用mysqldump进行备份RDS的数据库
> docker exec -it mysql-slave /bin/bash
> mysqldump -hxxxxxxxxxxx.mysql.rds.aliyuncs.com -uroot -pPassword --databases 需要的数据库(如`test test1 test2 test3`一般排除 information_schema、performance_schema 和 mysql) > db.sql
> //也可以使用如下备份全部数据库
> mysqldump -hxxxxxxxxxxx.mysql.rds.aliyuncs.com -uroot -pPassword --all-databases > db.sql
  1. 在从库恢复备份
> mysql -uroot -p123456
> mysql> source < db.sql
  1. 恢复备份后,使用show global variables like '%gtid%'\G 在主库(RDS)上查询gtid_purged的值,如8177958d-a3b3-11ea-8f76-00163e0fbc31:1-2372913image.png
  2. 使用show global variables like '%gtid%'\G 在从库查询gtid_purged的值是否为空,不为空,使用reset master 清空image.png
  3. 同步主从信息
docker exec -it mysql-slave mysql -P3306 -uroot -pPassw0rd -e "CHANGE MASTER TO MASTER_HOST='xxxxxxxx.mysql.rds.aliyuncs.com', MASTER_PORT=3306, MASTER_USER='root', MASTER_PASSWORD='Password', MASTER_AUTO_POSITION=1;" \
-e "START SLAVE;"

docker exec -it mysql-slave mysql -P3306 -uroot -pPassw0rd  -e "show slave status\G"

image.png

  1. 按照常规操作,RDS的一般会报错,主要问题在45步,重新走一下就ok
参考

解决mysql开启GTID主从同步出现1236错误问题

使用 RDS for MySQL 配置到自建数据库的主从复制

阿里云RDS与ECS自建库搭建主从复制


标题:mysql主从同步,同步阿里云mysql(RDS)数据
作者:yexuejc
地址:https://yexuejc.top/articles/2021/03/01/1614610295770.html