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

夜雪剑辰[yexuejc] 的个人博客 记录精彩的程序人生 本文由博客端 https://blog.yexuejc.top 主动推送

  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-2372913 image.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 自建库搭建主从复制

  • 一些有用的避坑指南。

    66 引用 • 90 回帖
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    594 引用 • 522 回帖 • 589 关注

广告 我要投放

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...