zoukankan      html  css  js  c++  java
  • ubuntu下处理mysql无法启动故障一例

    故障现象:

    mysql无法启动

    1: dmesg |grep mysql

    [101353.820000] init: mysql post-start process (9077) terminated with status 1
    [101354.650000] init: mysql main process (9113) terminated with status 1
    [101354.650000] init: mysql respawning too fast, stopped

    2: grep mysql /var/log/syslog

    213 Apr  1 19:35:33 Asiulo kernel: [101110.450000] init: mysql post-start process (8815) terminated with status 1
    214 Apr  1 19:35:33 Asiulo kernel: [101110.590000] init: mysql main process (8846) terminated with status 1
    215 Apr  1 19:35:33 Asiulo kernel: [101110.590000] init: mysql respawning too fast, stopped

    3: tail -100 /var/log/mysql/error.log

      1 130401 10:27:28 [Note] Plugin 'FEDERATED' is disabled.
       2 130401 10:27:28 InnoDB: The InnoDB memory heap is disabled
       3 130401 10:27:28 InnoDB: Mutexes and rw_locks use GCC atomic builtins
       4 130401 10:27:28 InnoDB: Compressed tables use zlib 1.2.7
       5 130401 10:27:28 InnoDB: Using Linux native AIO
       6 130401 10:27:28 InnoDB: Initializing buffer pool, size = 128.0M
       7 130401 10:27:28 InnoDB: Completed initialization of buffer pool
       8 130401 10:27:28 InnoDB: highest supported file format is Barracuda.
       9 InnoDB: The log sequence number in ibdata files does not match
      10 InnoDB: the log sequence number in the ib_logfiles!
      11 130401 10:27:28  InnoDB: Database was not shut down normally!
      12 InnoDB: Starting crash recovery.
      13 InnoDB: Reading tablespace information from the .ibd files...
      14 InnoDB: Restoring possible half-written data pages from the doublewrite
      15 InnoDB: buffer...
      16 130401 10:27:28  InnoDB: Assertion failure in thread 3062129168 in file fsp0fsp.c line 2102
      17 InnoDB: Failing assertion: inode
      18 InnoDB: We intentionally generate a memory trap.
      19 InnoDB: Submit a detailed bug report to http://bugs.mysql.com.
      20 InnoDB: If you get repeated assertion failures or crashes, even
      21 InnoDB: immediately after the mysqld startup, there may be
      22 InnoDB: corruption in the InnoDB tablespace. Please refer to
      23 InnoDB: http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html
      24 InnoDB: about forcing recovery.
      25 02:27:28 UTC - mysqld got signal 6 ;
      26 This could be because you hit a bug. It is also possible that this binary
      27 or one of the libraries it was linked against is corrupt, improperly built,
      28 or misconfigured. This error can also be caused by malfunctioning hardware.
      29 We will try our best to scrape up some info that will hopefully help
      30 diagnose the problem, but since we have already crashed,
      31 something is definitely wrong and this may fail.
      32
      33 key_buffer_size=16777216
      34 read_buffer_size=131072
      35 max_used_connections=0
      36 max_threads=151
      37 thread_count=0
      38 connection_count=0
      39 It is possible that mysqld could use up to
      40 key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 346079 K  bytes of memory
      41 Hope that's ok; if not, decrease some variables in the equation.
      42
      43 Thread pointer: 0x0
      44 Attempting backtrace. You can use the following information to find out
      45 where mysqld died. If you see no messages after this, something went
      46 terribly wrong...
      47 stack_bottom = 0 thread_stack 0x30000
      48 The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains
      49 information that should help you find out what is causing the crash.

    核实是INNODB出现故障导致。根据红色链接中的方法:

    you can add the following line to the [mysqld] section of your option file before restarting the server:

    [mysqld]
    innodb_force_recovery = 4

    将这个设置加入到/etc/mysql/my.cnf, 后start mysql服务恢复正常。

    注释:

    4 (SRV_FORCE_NO_IBUF_MERGE)

    Prevent insert buffer merge operations. If they would cause a crash, do not do them. Do not calculate table statistics.

    前期处理重新安装mysql的过程也记录下:

    重新安装mysql

    删除mysql:

    apt-get autoremove --purge mysql-server

    apt-get remove mysql-common

    清理残留数据:

    dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P

    最后再执行下 apt-get autoremove

    安装 mysql:
    apt-get install mysql-server-5.5
    apt-get install mysql-client-5.5  //正常情况,此步已经包含在上步中,无需再安装。
    apt-get install php5-mysql

    安装完毕执行

    #dpkg-reconfigure重新配置
    dpkg-reconfigure mysql-server-5.5

    #quick mysql package check
    dpkg -l *mysql*

    禁止mysql做域名解析
    [mysqld]
    skip-name-resolve

    完毕!

    本文系作者原创,转载请注明出处。如您阅读的是转载,请最好再看下原文,原文随时会更新和勘误的。

    @Gordon_chang
    1997年毕业于北京联合大学,先后在中国万网,新媒传信,亚信等公司工作,现在在一家创业型公司担任云计算与大数据运维方面的 PM & Engineer。 专注于以下四个领域: 分布式存储 分布式数据库 云计算 大数据 重点通过技术架构与性能优化(底层)实现基于私有云的大数据平台能力

  • 相关阅读:
    Redis主从、事务、哨兵、消息、代理分片
    Java中反射
    java操作文件流对象
    Java中线程和线程池
    杂记
    Hadoop伪分布式环境快速搭建
    Git 基础
    React Context(一):隐式传递数据
    搭建React项目(一):在网页中使用
    jQuery MD5 加密
  • 原文地址:https://www.cnblogs.com/gordonchang/p/6681712.html
Copyright © 2011-2022 走看看