前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mysql启动后随即关闭问题解决(ibdata1文件损坏导致)

mysql启动后随即关闭问题解决(ibdata1文件损坏导致)

作者头像
洗尽了浮华
发布2018-01-22 16:40:58
1.4K0
发布2018-01-22 16:40:58
举报
文章被收录于专栏:散尽浮华

机房一台服务器上的mysql运行一段时间了,突然出现了一个很奇怪的现象:重启后无法恢复了!准确情况是:启动mysql后随即就又关闭了。

查看mysql错误日志如下:

160920 22:41:41 mysqld_safe Starting mysqld daemon with databases from /home/MysqlData/ 2016-09-20 22:41:41 0 [Note] /Data/app/mysql5.6.25/bin/mysqld (mysqld 5.6.25-log) starting as process 32372 ... 2016-09-20 22:41:42 32372 [Note] Plugin 'FEDERATED' is disabled. 2016-09-20 22:41:42 32372 [Warning] option 'innodb-write-io-threads': unsigned value 1000 adjusted to 64 2016-09-20 22:41:42 32372 [Warning] option 'innodb-read-io-threads': unsigned value 1000 adjusted to 64 2016-09-20 22:41:42 32372 [Note] InnoDB: Using atomics to ref count buffer pool pages 2016-09-20 22:41:42 32372 [Note] InnoDB: The InnoDB memory heap is disabled 2016-09-20 22:41:42 32372 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins 2016-09-20 22:41:42 32372 [Note] InnoDB: Memory barrier is not used 2016-09-20 22:41:42 32372 [Note] InnoDB: Compressed tables use zlib 1.2.3 2016-09-20 22:41:42 32372 [Note] InnoDB: Using CPU crc32 instructions 2016-09-20 22:41:42 32372 [Note] InnoDB: Initializing buffer pool, size = 1.0G 2016-09-20 22:41:42 32372 [Note] InnoDB: Completed initialization of buffer pool 2016-09-20 22:41:42 32372 [Note] InnoDB: Highest supported file format is Barracuda. 2016-09-20 22:41:42 32372 [Note] InnoDB: Log scan progressed past the checkpoint lsn 20293587957 2016-09-20 22:41:42 32372 [Note] InnoDB: Database was not shutdown normally! 2016-09-20 22:41:42 32372 [Note] InnoDB: Starting crash recovery. 2016-09-20 22:41:42 32372 [Note] InnoDB: Reading tablespace information from the .ibd files... 2016-09-20 22:41:42 32372 [Note] InnoDB: Restoring possible half-written data pages 2016-09-20 22:41:42 32372 [Note] InnoDB: from the doublewrite buffer... InnoDB: Doing recovery: scanned up to log sequence number 20293596130 2016-09-20 22:41:42 32372 [Note] InnoDB: Starting an apply batch of log records to the database... InnoDB: Progress in percent: 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 InnoDB: Apply batch completed InnoDB: Last MySQL binlog file position 0 136254, file name mysql-bin.000013 2016-09-20 22:41:43 32372 [Note] InnoDB: 128 rollback segment(s) are active. 2016-09-20 22:41:43 32372 [Note] InnoDB: Waiting for purge to start 2016-09-20 22:41:43 7f77a9edd700 InnoDB: Assertion failure in thread 140151928772352 in file trx0purge.cc line 699 InnoDB: Failing assertion: purge_sys->iter.trx_no <= purge_sys->rseg->last_trx_no InnoDB: We intentionally generate a memory trap. InnoDB: Submit a detailed bug report to http://bugs.mysql.com. InnoDB: If you get repeated assertion failures or crashes, even InnoDB: immediately after the mysqld startup, there may be InnoDB: corruption in the InnoDB tablespace. Please refer to InnoDB: http://dev.mysql.com/doc/refman/5.6/en/forcing-innodb-recovery.html InnoDB: about forcing recovery. 02:41:43 UTC - mysqld got signal 6 ; This could be because you hit a bug. It is also possible that this binary or one of the libraries it was linked against is corrupt, improperly built, or misconfigured. This error can also be caused by malfunctioning hardware. We will try our best to scrape up some info that will hopefully help diagnose the problem, but since we have already crashed, something is definitely wrong and this may fail.

分析日志后发现,数据库无法重启的原因是因为ibdata1文件损坏,重启后无法正常恢复。

解决办法: 需要跳过恢复步骤,修改my.cnf文件,在my.cnf中的[mysqld]中添加: innodb_force_recovery = 6 innodb_purge_threads = 1

解释: innodb_force_recovery可以设置为1-6,大的数字包含前面所有数字的影响。 具体数字对应的含义: 1-----(SRVFORCEIGNORECORRUPT):忽略检查到的corrupt页。 2-----(SRVFORCENOBACKGROUND):阻止主线程的运行,如主线程需要执行full purge操作,会导致crash。 3-----(SRVFORCENOTRXUNDO):不执行事务回滚操作。 4-----(SRVFORCENOIBUFMERGE):不执行插入缓冲的合并操作。 5-----(SRVFORCENOUNDOLOGSCAN):不查看重做日志,InnoDB存储引擎会将未提交的事务视为已提交。 6-----(SRVFORCENOLOG_REDO):不执行前滚的操作。

再次启动mysql就ok了~ 如果还无法启动,则需要删除数据目录datafile下的 ibdata1,ib_logfile*等文件。 启动后导出MySQL数据库,重新恢复即可。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-09-21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档