阿里云RDS数据库MySQL5.7实例主从搭建过程

说明

  • 工作中遇到需要搭建阿里云RDS数据库MySQL5.7实例主从集群,在此记录搭建过程
  • 主库
    • 阿里云RDS数据库MySQL5.7实例
  • 从库
    • 本地服务器MySQL5.7,通过公网访问阿里云RDS实例

阿里云RDS实例准备操作

  • 登录阿里云管理控制台
  • 选择【云数据库RDS版】
  • 切换到【云数据库RDS版】界面,左上角选择【数据中心】,在【实例列表】中找到主库,点击右侧的【管理】
  • 在【基本信息】可以看到主库的【外网地址】和端口
    • 外网地址示例:rm-xxxxxxxxxxxxxxx.mysql.rds.aliyuncs.com
    • 端口:3306
  • 切换到【账号管理】,点击【创建账号】
    • 用户名:repuser
    • 密码:repuserpassword
    • 账号类型:普通帐号
    • 授权数据库:选择需要同步的数据库,选择完毕后,权限统一设置为【只读】
  • 登录阿里云RDS实例,查看主库信息
    • show variables like '%binlog_format%';
    • show variables like 'server_id';

从库

  • 安装MySQL5.7,这里网上很多教程,自行解决
  • 修改从库my.cnf
1
2
3
4
5
6
7
8
9
10
11
12
13
[mysqld]
# 这里的server-id要跟RDS主库查询到的server-id不一样
server-id = 3306
log_bin = /data/mysql-data
expire_logs_days = 7
max_binlog_size = 100M
replicate-ignore-db = ccccc #不想同步的数据库
replicate-ignore-db = ddddd #不想同步的数据库
# 启动GTID
gtid_mode = on
enforce_gtid_consistency = on
binlog_format = row #设置 binlog 为 row
log-slave-updates = 1
  • 在从库上对阿里云RDS实例做一次dump备份

假设我们要同步的是aaa和bbb两个库

1
2
3
4
5
6
7
8
9
mysqldump -u'repuser' \
-h'rm-xxxxxxxxxxxxxxx.mysql.rds.aliyuncs.com' \
-P 3306 \
-p'repuserpassword' \
--set-gtid-purged=ON \
--master-data=2 \
--single-transaction \
--default-character-set=utf8mb4 \
--databases aaa bbb > aliyun_rds_dump.sql
  • 从库导入dump备份
1
2
3
4
mysql -u'root' \
-p \
-P3306 \
< aliyun_rds_dump.sql
  • 设置从库

启用基于GTID的主从同步

1
2
3
4
5
6
7
mysql> change master to master_host = 'xxxxxxxxxxxxxxx.mysql.rds.aliyuncs.com',
master_port = 3306,
master_user = 'repuser',
master_password='repuserpassword',
master_connect_retry=10,
master_auto_position=1;
mysql> start slave;
  • 检查主从同步状态
1
2
mysql> show slave status \G
mysql> show processlist \G