前提条件
1.MYSQL 大版本一致mysql -v
2.还没想到
一、配置SERVER_ID
1. 获取主库server_id
show variables like '%server_id%';
记录下主库server_id,下面要用
二、配置从库
1. 停止从库的MySQL服务:
service mysql stop
2. 修改从库配置文件
vim /etc/my.cnf
这里要注意配置的参数放在[mysqld]下:
server-id = 2222 //服务 ID,主从实例 server-id 需不同。
log_bin = 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同步模式,binlog格式为ROW,同样放置在[mysqld]下:
#GTID
gtid_mode=on
enforce_gtid_consistency=on
binlog_format=row //设置 binlog 为 row
log-slave-updates=1
3. 启动MySql服务:
systemctl start mysqld
4.检查配置是否生效
进入MySQL,执行语句,查看配置是否生效(值为ROW即生效):
show variables like '%binlog_format%';
三、导出主库全部数据
1. 主库加锁
首先登陆数据库,然后刷新所有的表,同时给数据库加上一把锁,阻止对数据库进行任何的写操作
flush tables with read lock;
2. 获取二进制日志信息
然后执行下面的语句获取二进制日志的信息
show master status;
File:当前使用的二进制日志的文件名
Position:该日志里面的位置信息
备注:记下这两个值,下面配置从服务器时用到
3. 导出数据
mysqldump -h RDS数据库ip -P RDS数据库端口 -u RDS数据库账号 -p 数据库名 > 导出的文件名.sql
输入密码等待完成
可以忽略以下报错
Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions, even those that changed suppressed parts of the database. If you don't want to restore GTIDs, pass --set-gtid-purged=OFF. To make a complete dump, pass --all-databases --triggers --routines --events.
4.数据库解锁
恢复对主数据库的操作
unlock tables;
四、从库操作
1. 导入主库数据
CREATE DATABASE 数据库名;
USE 数据库名;
SOURCE 导出的文件名.sql
2. 配置同步信息
使用上面获取的主库日记信息
change master to master_host='192.168.0.104', //Master 服务器Ip
master_port=3306,
master_user='test',
master_password='mysql',
master_log_file='master-bin.000001',//Master服务器当前使用的二进制日志的文件名(File值)
master_log_pos=0; //Master服务器该日志里面的位置信息(Position值)
3. 启动slave
start slave;
4. 查看slave状态:
show slave status\G;
如果Slave_IO_Running 和 Slave_SQL_Running 的状态是否都为 Yes的话则配置成功!
参考文章:
感谢作者辛苦付出