生产库 Slave_IO_Running: No 解决
迁移背景:
生产环境mysql主从同步中断,因中断时间太久、数据量太大,所以计划通过云平台的磁盘克隆功能实现数据全量同步。
环境说明:
主库:192.168.12.76
盘名:/dev/mapper/mysql-data
挂载位置:/home
配置文件:/etc/my.cnf
从库:192.168.12.78
盘名:/dev/mapper/mysql-data
挂载位置:/home
配置文件:/etc/my.cnf
迁移步骤:
1、关闭主从策略,关闭市级业务系统,关闭主、从数据库,防止数据录入
2、主库虚拟机进行镜像备份
3、对主库的数据盘进行克隆
4、将主库克隆好的盘挂载在从库的/deploy
5、修改从库的配置文件/etc/my.cnf,将home目录修改成deploy
6、启动从库,并登录,检查相关表是否可以增删改查
7、上述操作无误后,启动主库
8、重新配置数据库主从策略并观察
9、恢复底层组件、恢复业务后台、恢复业务前台
10、再次查看mysql主从策略是否正常
11、登录业务系统,系统检查功能点是否正常
12、系统正常后,运行观察一段时间
遇到的问题:
1、重新搭建主从后发现Slave_IO_Running: No
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.12.76
Master_User: slave
Master_Port: 3309
Connect_Retry: 60
Master_Log_File: mysql-bin.000708
Read_Master_Log_Pos: 154
Relay_Log_File: slave-relay-bin.000001
Relay_Log_Pos: 4
Relay_Master_Log_File: mysql-bin.000708
Slave_IO_Running: No
Slave_SQL_Running: Yes
问题原因:
1、两台主从数据库的uuid相同了(原因是直接克隆了linux服务器或磁盘,然后配置完主从数据库后,启动从数据库,发现的这个问题)
解决办法:
1、使用 find / -iname "auto.cnf" 命令查找你数据库的auto.cnf 配置文件
[yunwei@slave ~]# find / -iname "auto.cnf"
/deploy/mysql/data/auto.cnf
我的在/deploy下,同学们的也可能在其他目录,取决于你mysql放的位置
2、对这个配置文件的uuid进行更改。
vim /deploy/mysql/data/auto.cnf (文件路径修改成你的环境)
[auto]
server-uuid=9606480e-000c-11ed-a580-fa173ef47b56
注:我把最后的2改成了6,只要和主数据库不一样就可以
3、重新启动从mysql
[yunwei@slave ~]# /etc/init.d/mysql restart
Shutting down MySQL....... SUCCESS!
Starting MySQL... SUCCESS!
4、登录从mysql,重启slave,再次验证
mysql -uroot -p 登录mysql
stop slave; 停止链路
start slave; 启动链路
show slave status \G; 查看链路
如下,成功。
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.12.76
Master_User: slave
Master_Port: 3309
Connect_Retry: 60
Master_Log_File: mysql-bin.000709
Read_Master_Log_Pos: 19515123
Relay_Log_File: slave-relay-bin.000003
Relay_Log_Pos: 268268931
Relay_Master_Log_File: mysql-bin.000708
Slave_IO_Running: Yes
Slave_SQL_Running: Yes