1、创建数据库,dump阿里云RDS数据,导入到自建MySQL
阿里云RDS的配置几乎不用动,只需从RDS开一个只读的账号出来。
在ECS服务器上远程导出RDS的数据库,执行下面命令,记得将[]内容替换掉
mysqldump -h http://***.mysql.rds.aliyuncs.com -u [USER] -P 3306 -p[PASSWORD] --opt --default-character-set=utf8 --triggers --hex-blob [库名] > 1010.sql
dump下来之后,再去ECS中的 mysql> 中导入dump文件:
create schema 库名 collate utf8mb4_general_ci; -- 注意和RDS库名保存一致,字符集也是一样
use [库名];
source 1010.sql;
2、停止从库自建MySQL,修改从库my.cnf 配置
service mysqld stop
修改ECS中自建的从库 MySQL 配置文件,在[mysqld]最后添加如下
vi /etc/my.cnf
server-id =1234567890 #不可与RDS主库id相同
port = 3306 #端口!!!需要更改
replicate-do-db =test #需要同步的数据库!!!需要更改binlog_format = row #日志文件格式
#log-bin = mysql-bin
#log-bin-index = mysql-bin.index
#relay-log = relay-log
#relay_log_index = relay-log.index
#slave-skip-errors = allgtid_mode = on #开启gtid模式
enforce_gtid_consistency = on
log-slave-updates = 1
sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
保存后重启mysql服务
#service mysqld restart
stop slave;
3、查询GTID,配置主从同步
主库执行,连接RDS主库,查询GTID,阿里云主库执行,复制出GTID
show global variables like 'gtid_purged';
从库执行,注意修改GTID
# 注意替换gtid
set global gtid_purged = 'f357055d-31ab-****-a651-00163e00f***:1-45184469';reset master;CHANGE MASTER TO
MASTER_HOST='***.mysql.rds.aliyuncs.com',
MASTER_PORT=3306,
MASTER_USER='user',
MASTER_PASSWORD='pwd',
master_auto_position=1;reset slave;start slave;show slave status\G;
大功告成,阿里云RDS MySQL与自建MySQL数据库进行主从同步。
可能遇到的问题:
问题:mysqldump: Got errno 11 on write
可能的问题:例如磁盘空间不足、文件权限问题等。
我出现这个问题就是/tmp 磁盘空间不足导致的 ,我将dump的文件放到tmp下
其他:
-- 查询当前已经执行过的gtid
use mysql;
SELECT * FROM gtid_executed;
gtid_purged:需要跳过的gtid
set @@global.gtid_purged='';