主从同步共有两个进程,I/O线程(stop slave IO_THREAD;)和SQL线程(stop slave SQL_THREAD;)
I/O线程会维护master.info信息的更新
SQL线程会维护relay-log.info信息的更新
一.从库关闭IO线程,导出数据
登录从库mysql
mysql -uroot -ppassword
关闭IO线程
mysql> stop slave IO_THREAD;
查看同步状态
mysql> show slave status\G
等待SQL线程执行完成,Relay_Master_Log_File等于Master_Log_File,Exec_Master_Log_Pos等于Read_Master_Log_Pos
备份数据
mysqldump -uroot -p --all-databases > /tmp/mysql.bak.sql
传递到新从库
scp /tmp/mysql.bak.sql root@192.168.128.101:/tmp/
二.主库授权新从库
登录到主库mysql
mysql -uroot -ppassword
授权replication slave权限给新从库
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave1'@'192.168.128.101';
三.新从库导入数据,配置主从同步
登录到新从库mysql
mysql -uroot -ppassword
停止同步
mysql> stop slave;
导入数据
mysql> source /tmp/mysql.bak.sql
设置同步,同步点是上面show slave status\G里的File、Position两项
CHANGE MASTER TO MASTER_HOST='192.168.206.145', MASTER_USER='slave1', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000005', MASTER_LOG_POS=154;
开启同步
mysql> start slave;
查看同步状态
mysql> show slave status\G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
同步正常
四.恢复从库IO线程
切换到旧从库,恢复IO线程
mysql> start slave IO_THREAD;