reset master 不能乱用呀

 

在主从环境了  用这个  从会挂掉的呢

谈谈这两天做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;

 

 

posted @ 2018-04-25 10:31  lazyball  阅读(13525)  评论(0编辑  收藏  举报