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分钟的排措时间都不是一个合格的运维人应该做的事情,此处发一篇博文也给自己存个档,顺便帮助一下需要的人。

  • 相关阅读:
    文档API
    vi编辑器常用方法
    storm实战入门一
    redis教程
    为redis分配一个新的端口
    Lucene分页查询
    Lucene搜索方式大合集
    HBase Scan类用法
    java.util.Queue用法
    Makefile中预定义变量
  • 原文地址:https://www.cnblogs.com/xumaojun/p/8521750.html
Copyright © 2011-2022 走看看