主库 10.0.40.200
从库 10.0.50.20
主库配置
登录主库,添加一个副库用来复制的账号
mysql -uroot -p123456axc666
GRANT REPLICATION SLAVE ON *.* to 'slave1'@'10.0.50.20' identified by '123456qqq666';
FLUSH PRIVILEGES;
修改主库配置文件,开启binlog,并设置server-id
vim /etc/my.cnf
server-id=400101 # 主库的唯一标识
log-bin=mysql-bin
expire_logs_days=3
image.png
不加 binlog-do-db 则是所有库
重启服务,查看状态
systemctl restart mysqld.service
登录 mysql 输入命令,获取当前最新数据偏移量作为从库同步开启的配置节点
show master status;
image.png
获取到 File 和 Position 参数
从库配置
配置文件修改
vim /etc/my.cnf
server-id=22 # 唯一的值
重启服务
进入从库 配置链接主库的信息
mysq -uroot -p123456
mysql> CHANGE MASTER TO MASTER_HOST='10.0.40.200',
MASTER_PORT=3306,
MASTER_USER='slave1',
MASTER_PASSWORD='Report_123',
MASTER_LOG_FILE='mysql-bin.000036',
MASTER_LOG_POS=1250;
启动slave进程
start slave;
查看同步状态
show slave status\G;
image.png
qa
只同步指定数据库
主库配置文件 my.cnf 中添加 binlog-do-db=test1
从库配置文件 my.cnf 中添加 replicate-do-db=test1
主从配置前,主库数据迁移
主库中 mysql data数据目录全部拷贝到从库后,由于 uuid 在data数据目录中,需要修改为原来的获取随便改一个,不然启动从库同步 start slave 会报错
uuid 存放默认位置 数据目录/auto.cnf
image.png
迁移数据前,建议停止主库的数据更新操作锁库或者停止服务
stop slave; 停止同步 start slave; 开始同步
后台迁移数据命令
nohup scp -P 22 -r mysql root@10.0.50.20:/usr/local/mysql >/dev/null 2>&1 &
意外情况主从断开后,需重新配置同步的节点和日志 File Position
可能遇到的报错
[ERROR 3021(HY000):this operation cannot be performed with a running salve io thread](https://www.cnblogs.com/jichi/p/12233037.html)
处理方法
1、停止已经启动的绑定
stop slave
2、重置绑定
reset master
3、执行复制主机命令
CHANGE MASTER TO MASTER_HOST='10.0.40.200',MASTER_PORT=3306,MASTER_USER='slave1',MASTER_PASSWORD='Report_123',MASTER_LOG_FILE='mysql-bin.000043',MASTER_LOG_POS=37954082;
4、发现此时已经不报错
5、启动复制
start slave