在主从环境了 用这个 从会挂掉的呢
谈谈这两天做mysql guid主从的痛
需求1:
将一个单点mysql进行迁移
这个比较简单,我搭建了同版本的mysql,然后mysqldump备份数据导入,数据没有更新,完整就直接导入了
需求2:
觉得单点比较不靠谱,决定将以前的一个从库,注意这个从库是很久之前的旧的mysql主的从库,重新作为新的主库的从库
首先我直接向gtid可以自动寻找,那就直接将这个从库指向新的主库吧,结果报错找不到log文件,难道是以为从库是旧的,保留的都是曾经的主的gtid的信息,所以不行,这里我还是疑惑的
后来决定重新拿一份新主的最新备份,导入从库,重新做主从,还是报错1146,不知道为啥
我很气
我又重新搭建了最新的从库导入数据,也报错,我还鬼使神差的在主上执行了 reset master ,然后我就导入着数据,回家了,早晨来一看,主上的binlog没了,只剩00001了,又没有完整的日志文件了
现在我没辙 继续重新那一份最新的数据导入一下吧
如果你这么干了,恢复的方法
1.从主库拿一份最新的数据,新的程度要在做reset master; 这个操作之后
2.从库上(别执行,下边还有呢,看完了再说)
stop slave;
reset slave;
导入数据;
重新指定主;
start slave;
然后报错如下:
Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Slave has more GTIDs than the master has, using the master's SERVER_UUID. This may indicate that the end of the binary log was truncated or that the last binary log file was lost, e.g., after a power or disk failure when sync_binlog != 1. The master may or may not have rolled back transactions that were already replica'
解决方法:
在从上执行 reset master;
在从库上执行这个命令的作用是 清空从库的gtid
然后继续观察
如果还报错 就
stop slave;
reset slave;
重新指定主;
start slave;
reset master;
然后我的继续报错
Last_SQL_Errno: 1007
Last_SQL_Error: Error 'Can't create database 'mm'; database exists' on query. Default database: 'mm'. Query: 'create database mm'
这种错误叫可控的错误
两种方法:
在配置文件里设置跳过这个错误
在从库上删除这个库,然后stop slave; start slave;