zoukankan      html  css  js  c++  java
  • MySQL主从同步报错排错结果及修复过程之:Slave_SQL_Running: No

    起因调查:

      收到大量邮件报警想必事出有因,就问同事到底发生了什么?同事登录从库查看,发现出现如下报错提示,表示与主库同步失败,一直卡在哪里,看他弄了两个多小时,问题越来越多,解决一个恢复平静了一两分钟又不行了。。。。于是报警的邮件又是一封又一份。。。于是向我求助。登录从库后发现:

      其中一台从库报错内容为:

    复制代码
    1 mysql> show slave statusG;
    2 
    3 Slave_IO_Running: Yes
    4 Slave_SQL_Running: No
    5 
    6 Last_Errno: 1008
    7 
    8 Last_Error: Error 'Can't drop database 'lcp'; database doesn't exist' on query. Default database: 'lcp'. Query: 'drop database lcp'
    复制代码

    创建库失败,

    查看日志

    1 mysql> SHOW  GLOBAL VARIABLES LIKE '%log%';
    2 
    3 | log_error                               | /application/mysql/data/db03.err     日志路径并没有动,默认  
    4 
    5 | log_warnings                            | 1                    还好启用日志了。。。

    切一个窗口查看日志:

    发现错误报告,不能与主库同步,上一条报告lcp库已存在。。纳闷你拿我名字当库名干啥。。。狠批一顿。(后来得知是觉得我名字有威慑力,吓唬吓唬服务器,笑哭...)

     言归正传

      我看了一下他的历史操作记录,想创建“lcp”库却发现此库已存在,想删掉“lcp”库,却发现系统报错此库不存在。然后我就很郁闷的问他你到底对服务器做了啥!!!

      真是不怕没脑子的队友,,就怕。。。。哈哈,当然开个玩笑,排错也是成长的过程,我很喜欢我这个队友,他经常给我提供成长的空间。(Ps:不要轻易模仿!!尤其是生产环境!!!)

    1  160524 10:53:41 [Warning] Slave: Can't create database 'min'; database exists Error_code: 1007
    2  160524 10:53:41 [ERROR] Error running query, slave SQL thread aborted. Fix the problem, and restart the slave SQL thread with "SLAVE START". We stopped at log 'mysql-b
    3  in.000758' position 1077
    4  160524 11:53:17 [ERROR] Error reading packet from server: Lost connection to MySQL server during query ( server_errno=2013)

      于是我继续往上翻错误日志,发现一条类似的提示:min库已存在,无法完成创建。当时似乎想到了什么。就问了一句,你是不是在两台mysql服务器上同时创建了min库?猪一样的队友给我的回答竟然是:“是!”!!!!!好吧原谅他是新手。既然问题找到了方法自然就简单了,还好是其中一台从库,不会造成很大的影响,于是选择最简单的办法:

       将binglog指针下移一个位置。

    解决方案:

    mysql> slave stop; 
    Query OK, 0 rows affected (0.01 sec)

    mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
    Query OK, 0 rows affected (0.00 sec)

    mysql> slave start;
    Query OK, 0 rows affected (0.00 sec)

    mysql> show slave statusG;

    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes

    Last_IO_Errno: 0
    Last_IO_Error: 
    Last_SQL_Errno: 0

     至此解决完成,虽然用了规避的方法去解决有点不太光明磊落(1007可以忽略),但是排错思路一定要清晰,虽说不是生产环境,如果要是生产环境超出5分钟的排措时间都不是一个合格的运维人应该做的事情,此处发一篇博文也给自己存个档,顺便帮助一下需要的人。

  • 相关阅读:
    mysql 历史版本下载
    mysql 5.7 版本 You must reset your password using ALTER USER statement before executing this statement报错处理
    5.7 zip 版本的安装 以及遇到的坑
    mysql 5.6zip版本的卸载与5.7 zip 版本的安装
    mysql数据库的备份与还原
    本地Navicat连接docker里的mysql
    docker修改数据库密码
    docker 在push镜像到本地registry出现的500 Internal Server Error
    linux 没有界面内容显示不全解决办法
    json与map互相转换
  • 原文地址:https://www.cnblogs.com/xumaojun/p/8521750.html
Copyright © 2011-2022 走看看