这里困扰了自己很久,写下来望有缘人看到节约一点时间

现在公司的线上用的mysql数据库,是购买的阿里云的RDS for mysql 服务,由于有服务需要读取mysql的bin-log,并且基于RDS的只读实例的bin-log不保证正确,所以自己搭建ECS从库,注意从库必须配置

binlog-format=ROW #为别的服务提供binlog
server_id=999 #避免server_id 跟master相同

gtid-mode=ON #开启gtid模式
log-slave-updates #这里作为中转需要此参数,如需深入了解,情况官档
enforce-gtid-consistency = ON #强制GTID的一致性

1、通过RDS数据备份,拉取全量备份
wget -c '<数据备份文件内网网下载地址>' -O full.tar.gz

2、用阿里提供的解压脚本(rds_backup_extract.sh)解压下载好的文件 full.tar.gz

3、用 innobackupex --defaults-file=/etc/my.cnf --apply-log /data_of_mysql 恢复

4、指定datadir,重启mysql,修改用户密码;

5、报这个错时,Slave is not configured or failed to initialize properly. You must at least set --server-id to enable either a master or a slave. Additional error messages can be found in the MySQL error log.
删除如下五个表,并重启mysql

use mysql
drop table slave_master_info;
drop table slave_relay_log_info;
drop table slave_worker_info;
drop table innodb_index_stats;
drop table innodb_table_stats;

6、根据 xtrabackup_slave_info中的第一行,设定 SET GLOBAL gtid_purged=''

7、设定master信息,
change master to master_host='RDS_URL',
master_port=3306,
master_user='mysql_username',
master_password='Passwd',
master_auto_position=1;

RDS主库、ECS自建mysql GTID 主从_第1张图片