在实际生产流程中,当从MySQL备库查询数据时出现查无数据的情况,而主数据库中却存在对应数据。经过检查数据库的配置文件(/etc/my.cnf),我们发现主从同步设置为了跳过所有复制错误的模式(即slave_skip_errors = all)。为确保从库数据与主库保持一致,针对这一情况,我们决定采取冷备份的方式来重新同步从数据库的数据。
具体操作如下:
注:mysql_data指的是MySQL的数据目录(datadir)
1.master停库,slave停库 service mysqld stop
2.slave移走mysql_data:
mv mysql_data mysql_data_slaveerror
3.将master的mysql_data拷贝到slave
scp -r mysql_data root@192.168.5.28:/data/
拷贝成功后在salve库服务器:
修改目录权限:chown -R mysql:mysql mysql_data
进入mysql_data移走auto.cnf:mv auto.cnf auto.cnf_1
注:auto.cnf: 存储MySQL实例的全局唯一标识符(UUID)。这个值在MySQL启动时被读取,并保存在服务器内部变量server_uuid中。当MySQL实例首次启动时,如果auto.cnf不存在或者其中没有有效的UUID,MySQL将自动生成一个新的UUID并写入到这个文件。
4.主库从库都起库 service mysqld start、
5.进入从库重搭slave
stop slave;
reset slave; 查看rpl用户的密码:select user,host,authentication_string from mysql.user;
change master to master_host='172.256.0.1',master_user='rpl',master_password='123',master_port=3306,master_auto_position=1; start slave; show slave status\G;