记一次mysql主从关系修复过程

1.故事背景

今天在使用sharding时,突然发现sharding服务居然启动不起来了。只好去查看日志,查看日志后发现报错信息为从库无法连接。

然后,就开始对比主从库的结构,然后发现主从库结构已经不一致了,然后手动执行建库sql后,从库也无法同步,所以只好查看下从库的状态。

利用mysql客户端连接从库,然后执行show slave status\G命令后错误内容如下:

      Replicate_Wild_Ignore_Table:

                   Last_Errno: 1049

                   Last_Error: Error 'Unknown database 'hasSharding_0'' on query. Default database: 'mysql'. Query: 'create table hasSharding_0.test_user22 (

   id int primary key,

   name varchar(128)

)'

 从上述内容中可以看出,从库上出现了无法执行的sql,所以初步判断主从连接应该没有断开,问题是sql出错了。

 

2.解决过程

既然是sql报错,那么我们需要做的就是让报错的sql成功执行即可,因为现在这个状态类似于是从库sql阻塞了,所以我们需要让报错的sql成功执行,然后这种阻塞的情况就能被疏通了,主从同步状态也能恢复正常了。

所以,首先是分析报错情况,提示的是没有hasSharding_0这个数据库导致无法建表,所以我们需要做的就是建好hasSharding_0这个名称的库也就是:

 

Create databse hasSharding_0;

 

然后执行stop slave;

最后执行start slave;即可

这个时候我们可以再次输入show slave status;查看从节点状态。

如果内容中出现了Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it,那么说明成功修复了。如果还有报错信息,就需要继续操作。

 

3.总结

多利用mysql本身的提示信息去修复问题,不要自己去瞎尝试,不然效率很低。而且需要多注意磁盘空间,磁盘空间满了就会导致主从数据无法同步,从而产生错误和阻塞。

你可能感兴趣的:(学习)