本文共 2459 字,大约阅读时间需要 8 分钟。
今天遇到了一个客户反馈MySQL数据库无法启动的问题。客户在尝试使用service mysql start
命令启动数据库时,出现了以下错误信息:
Starting MySQL... ERROR! The server quit without updating PID file (/usr/local/mysql/mysql.pid).
初步来看,问题可能与权限有关,但经过仔细检查,发现权限设置没有问题。于是接下来查看了MySQL的错误日志文件testdb.err
,以进一步诊断问题。
在错误日志中,发现以下相关信息:
2020-06-12T08:30:25.273479Z 0 [Note] --secure-file-priv is set to NULL. Operations related to importing and exporting data are disabled
此外,还有多个InnoDB初始化相关的日志条目:
2020-06-12T08:30:25.286777Z 0 [Note] InnoDB: PUNCH HOLE support available2020-06-12T08:30:25.286827Z 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins2020-06-12T08:30:25.286838Z 0 [Note] InnoDB: Uses event mutexes2020-06-12T08:30:25.286845Z 0 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier2020-06-12T08:30:25.286852Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.112020-06-12T08:30:25.286856Z 0 [Note] InnoDB: Using Linux native AIO2020-06-12T08:30:25.288765Z 0 [Note] InnoDB: Number of pools: 12020-06-12T08:30:25.288939Z 0 [Note] InnoDB: Using CPU crc32 instructions2020-06-12T08:30:25.291804Z 0 [Note] InnoDB: Initializing buffer pool, total size = 4G, instances = 8, chunk size = 128M2020-06-12T08:30:25.552835Z 0 [Note] InnoDB: Completed initialization of buffer pool2020-06-12T08:30:25.589770Z 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of se
2020-06-12T08:30:25.603855Z 0 [Note] InnoDB: Highest supported file format is Barracuda
然而,最关键的错误信息出现在以下几行:
2020-06-12T08:30:25.627920Z 0 [ERROR] InnoDB: Ignoring the redo log due to missing MLOG_CHECKPOINT between the checkpoint 3970243421 and the end 3970243072.2020-06-12T08:30:25.627962Z 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error2020-06-12T08:30:26.229118Z 0 [ERROR] Plugin 'InnoDB' init function returned error.2020-06-12T08:30:26.229160Z 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.2020-06-12T08:30:26.229168Z 0 [ERROR] Failed to initialize builtin plugins.2020-06-12T08:30:26.229172Z 0 [ERROR] Aborting
通过分析错误日志,发现InnoDB插件在初始化过程中出现了严重问题,具体是由于事务日志存在断档的情况,无法找到对应的MLOG_CHECKPOINT,导致数据库无法正常启动。这种情况通常发生在数据库未能正常停止时,或者在系统崩溃、硬件故障等情况下导致事务日志文件(如ib_logfile0
和ib_logfile1
)无法同步完成。
为了解决这个问题,可以采取以下步骤:
删除或重命名旧的事务日志文件:由于事务日志文件可能已经损坏或无法同步,建议将ib_logfile0
和ib_logfile1
文件删除或重命名,以避免导致数据库无法启动的问题。
重新启动MySQL数据库:完成上述操作后,尝试再次使用以下命令启动MySQL数据库:
service mysql start
如果启动成功,数据库将会完成初始化并进入正常运行状态。
经过上述操作后,客户的MySQL数据库终于能够正常启动,问题得到了成功解决。
转载地址:http://undfk.baihongyu.com/