给主库加读锁
务必严格按照下面的先后顺序!!!
必须先加锁,再把主库数据备份到新从库(如:用navicat备份数据到新从库)
#登录mysql(mariadb)
mysql -u root -p
#加锁
flush tables with read lock;
#必须先加锁,再把主库数据备份到新从库(如:用navicat备份数据到新从库)
#查询主库状态
show master status;
新从库绑定主库
#登录mysql(mariadb)
mysql -u root -p
#绑定主库
CHANGE MASTER TO MASTER_HOST='192.168.1.11',MASTER_USER='copy',MASTER_PASSWORD='copy',MASTER_LOG_FILE='mariadb-bin.000001',MASTER_LOG_POS=330;
#新从库进行主从复制
start slave;
回到主库进行解锁
unlock tables;
回到从库查看是否主从复制
SHOW SLAVE STATUS\G;
从库这2个都为Yes才代表成功,有一个是No都不成功!!!
lave_IO_Running: Yes
Slave_SQL_Running: Yes
错误解决
错误1:Slave failed to initialize relay log info structure from the repository
#停止新从库主从复制
STOP SLAVE;
#重置新从库主从复制数据
reset slave all;
注意事项:
- 没有解锁主库,则再回到新从库绑定主库操作一遍。
- 解锁了主库,要给主库重新加锁(因为解锁会把新数据写入主库,导致新从库数据不一致,进而导致新从库主从复制失败!),然后重新备份数据到新从库,再重新操作一遍。