主库配置开启binglog
cnf
log-bin=/mysql/mysql-bin/mysql-bin
binlog-format=ROW
server_id=1
从库配置
查询主库的server_id,从库配置不要重复就行
sql
show variables like '%server_id%';
编辑从库的my.cnf文件
在文件中增加如下配置
cnf
server-id = 123456789 //服务 ID,主从实例 server-id 需不同。
log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10;
max_binlog_size = 100M
replicate-do-db = exampledb //需要同步的数据库
replicate-ignore-db = mysql //不需要同步的数据库
replicate-ignore-db = information_schema //不需要同步的数据库
replicate-ignore-db = performance_schema //不需要同步的数据库
# GTID
gtid_mode=on
enforce_gtid_consistency=on
binlog_format=row //设置 binlog 为 row
log-slave-updates=1
设置同步选项
sh
change master to master_host='rm-xxx.mysql.rds.aliyuncs.com', master_user='xxx', master_password='xxxx', master_port=3306, master_log_file='mysql-bin.000637', master_log_pos= 6433378, master_connect_retry=30;
其中的master_log_file
和master_log_file
通过在master上执行show master status;
获得
但是需要注意如果主库数据有变更,这两个值可能会一直有变动,可以先执行如下命令锁表
sql
# 锁表
flush tables with read lock;
# 解锁
unlock tables
启动从实例
sh
start slave;
检查同步结果
sh
show slave status\G
查看系统返回信息中 Slave_IO_Running 和 Slave_SQL_Running 的状态是否为 Yes,如下所示。
其他
同步阿里云的RDS至自建数据库也是可以的,阿里云rds默认开启了binglog,所以我们无需对主库进行配置,直接配置从库即可