MySQL数据库innodb启动失败无法重启的解决方法

您所在的位置:网站首页 mysqld重启失败 MySQL数据库innodb启动失败无法重启的解决方法

MySQL数据库innodb启动失败无法重启的解决方法

2023-04-01 03:36| 来源: 网络整理| 查看: 265

MySQL

数据库

innodb

启动失败⽆法重启的解决⽅法

问题介绍

电脑在使⽤过程中死机,重启后发现

mysql

没有启动成功,查看错误⽇志发现是

innodb

出现问题导致

mysql

启动失败。

错误⽇志

$ mysql.server start

Starting MySQL

. ERROR! The server quit without updating PID file (/usr/local/var/mysql/fdipzonedeMacBook-Air.local.pid).

22:08:37 mysqld_safe Starting mysqld daemon with databases from /usr/local/var/mysql

2016-04-23 22:08:38 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).

2016-04-23 22:08:38 0 [Note] /usr/local/Cellar/mysql/5.6.24/bin/mysqld (mysqld 5.6.24) starting as process 3604 ...

2016-04-23 22:08:38 3604 [Warning] Setting lower_case_table_names=2 because file system for /usr/local/var/mysql/ is case insensitive

2016-04-23 22:08:38 3604 [Note] Plugin 'FEDERATED' is disabled.

2016-04-23 22:08:38 3604 [Note] InnoDB: Using atomics to ref count buffer pool pages

2016-04-23 22:08:38 3604 [Note] InnoDB: The InnoDB memory heap is disabled

2016-04-23 22:08:38 3604 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins

2016-04-23 22:08:38 3604 [Note] InnoDB: Memory barrier is not used

2016-04-23 22:08:38 3604 [Note] InnoDB: Compressed tables use zlib 1.2.3

2016-04-23 22:08:38 3604 [Note] InnoDB: Using CPU crc32 instructions

2016-04-23 22:08:38 3604 [Note] InnoDB: Initializing buffer pool, size = 128.0M

2016-04-23 22:08:38 3604 [Note] InnoDB: Completed initialization of buffer pool

2016-04-23 22:08:38 3604 [Note] InnoDB: Highest supported file format is Barracuda.

2016-04-23 22:08:38 3604 [Note] InnoDB: Log scan progressed past the checkpoint lsn 68929933440

2016-04-23 22:08:38 3604 [Note] InnoDB: Database was not shutdown normally!

2016-04-23 22:08:38 3604 [Note] InnoDB: Starting crash recovery.

2016-04-23 22:08:38 3604 [Note] InnoDB: Reading tablespace information from the .ibd files...

2016-04-23 22:08:38 3604 [ERROR] InnoDB: checksum mismatch in tablespace ./test_user/user_recommend_code#P#pmax.ibd (table test_user/user_recommend_code#P#pmax)

2016-04-23 22:08:38 3604 [Note] InnoDB: Page size:1024 Pages to analyze:64

2016-04-23 22:08:38 3604 [Note] InnoDB: Page size: 1024, Possible space_id count:0

2016-04-23 22:08:38 3604 [Note] InnoDB: Page size:2048 Pages to analyze:48

2016-04-23 22:08:38 3604 [Note] InnoDB: Page size: 2048, Possible space_id count:0

2016-04-23 22:08:38 3604 [Note] InnoDB: Page size:4096 Pages to analyze:24

2016-04-23 22:08:38 3604 [Note] InnoDB: Page size: 4096, Possible space_id count:0

2016-04-23 22:08:38 3604 [Note] InnoDB: Page size:8192 Pages to analyze:12

2016-04-23 22:08:38 3604 [Note] InnoDB: Page size: 8192, Possible space_id count:0

2016-04-23 22:08:38 3604 [Note] InnoDB: Page size:16384 Pages to analyze:6

2016-04-23 22:08:38 3604 [Note] InnoDB: VALID: space:2947354 page_no:3 page_size:16384

2016-04-23 22:08:38 3604 [Note] InnoDB: Page size: 16384, Possible space_id count:1

2016-04-23 22:08:38 3604 [Note] InnoDB: space_id:2947354, Number of pages matched: 1/1 (16384)

2016-04-23 22:08:38 3604 [Note] InnoDB: Chosen space:2947354

2016-04-23 22:08:38 3604 [Note] InnoDB: Restoring page 0 of tablespace 2947354

2016-04-23 22:08:38 3604 [Warning] InnoDB: Doublewrite does not have page_no=0 of space: 2947354

2016-04-23 22:08:38 7fff79b9e300 InnoDB: Operating system error number 2 in a file operation.

InnoDB: The error means the system cannot find the path specified.

InnoDB: If you are installing InnoDB, remember that you must create

InnoDB: directories yourself, InnoDB does not create them.

InnoDB: Error: could not open single-table tablespace file ./test_user/user_recommend_code#P#pmax.ibd

InnoDB: We do not continue the crash recovery, because the table may become

InnoDB: corrupt if we cannot apply the log records in the InnoDB log to it.

InnoDB: To fix the problem and start mysqld:

InnoDB: 1) If there is a permission problem in the file and mysqld cannot

InnoDB: open the file, you should modify the permissions.

InnoDB: 2) If the table is not needed, or you can restore it from a backup,

InnoDB: then you can remove the .ibd file, and InnoDB will do a normal

InnoDB: crash recovery and ignore that table.

InnoDB: 3) If the file system or the disk is broken, and you cannot remove

InnoDB: the .ibd file, you can set innodb_force_recovery > 0 in my.cnf

InnoDB: and force InnoDB to continue crash recovery here.

解决⽅法

1.

如果数据不重要或已经有备份,只需要恢复

mysql

启动

进⼊

mysql

⽬录,⼀般是:

 

/usr/local/var/mysql/ 

删除

ib_logfile*

 

删除

ibdata*

删除所有数据库物理⽬录(例如数据库为

test_db,

则执⾏

rm -rf test_db

 

重启动

mysql 

重新建⽴数据库或使⽤备份覆盖

2.

如果数据很重要且没有备份

可以使⽤

innodb_force_recovery

参数,使

mysqld

跳过恢复步骤,启动

mysqld

,将数据导出然后重建数据库。

innodb_force_recovery 

可以设置为

1-6

,⼤的数字包含前⾯所有数字的影响

     1

(SRV_FORCE_IGNORE_CORRUPT):

忽略检查到的

corrupt

页。

     2

(SRV_FORCE_NO_BACKGROUND):

阻⽌主线程的运⾏,如主线程需要执⾏

full purge

操作,会导致

crash



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3