首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MariaDB:缺失FILE_CHECKPOINT

MariaDB:缺失FILE_CHECKPOINT
EN

Database Administration用户
提问于 2022-09-29 05:35:02
回答 2查看 2.4K关注 0票数 1

在Arch上运行MariaDB v10.9.3。多年来,我使用它承载了一个文件存储云。最近,我决定为另一个项目创建一个数据库,这对于MySQL交互来说是非常新的,所以我很可能在这样做的时候搞砸了一些事情。每次我尝试启动mariadb.service时,都会得到以下日志:

代码语言:javascript
复制
23:30:11 0 [Note] /usr/bin/mariadbd (server 10.9.3-MariaDB) starting as process 23038 ...
23:30:11 0 [Note] InnoDB: Compressed tables use zlib 1.2.12
23:30:11 0 [Note] InnoDB: Number of transaction pools: 1
23:30:11 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
23:30:11 0 [Note] InnoDB: Using Linux native AIO
23:30:11 0 [Note] InnoDB: Initializing buffer pool, total size = 128.000MiB, chunk size = 2.000MiB
23:30:11 0 [Note] InnoDB: Completed initialization of buffer pool
23:30:12 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)
23:30:12 0 [ERROR] InnoDB: Missing FILE_CHECKPOINT(988439302) at 988439302
23:30:12 0 [ERROR] InnoDB: Log scan aborted at LSN 988439302
23:30:12 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
23:30:12 0 [Note] InnoDB: Starting shutdown...
23:30:12 0 [ERROR] Plugin 'InnoDB' init function returned error.
23:30:12 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
23:30:12 0 [ERROR] Unknown/unsupported storage engine: InnoDB
23:30:12 0 [ERROR] Aborting

我在这一点上做了很多研究,但在这个问题上我什么也找不到。我发现最近的是这个JIRA页面:https://jira.mariadb.org/browse/MDEV-28976

据我所知,同样的信息是不同的问题。按照该报告中使用的示例,我尝试使用自己错误的十六进制值(988439302 -> 0x3AEA6306)执行以下命令:

代码语言:javascript
复制
# od -Ax -t x1 -t a -j 0x3AEA6306 ib_logfile0
od: cannot skip past end of combined input

结合我所读到的这里,我最好的猜测是LSN检查点被设置为重做日志之外的值?这超出了我所知的范围,我也不知道该从哪里出发。有谁能对这个问题有什么见解,或者我下一步应该研究什么?

EN

回答 2

Database Administration用户

发布于 2022-10-14 04:58:01

我的解决方案(不是一个优雅的)最终是:

  • 在配置文件中设置innodb_force_recovery=6
  • 再次启动MariaDB
  • 使用mysqldump -f --all-databases > all.sql强制转储所有数据库
  • 停止MariaDB
  • 删除/var/lib/mysql的全部内容,但/var/lib/mysql/mysql除外
  • 从配置文件中删除innodb_force_recovery=6
  • 强制使用MariaDB将所有数据库导入mysql < all.sql -f

一些数据库经历了腐败,但幸运的是,最重要的数据库被完美地挽救。由于这更多是一种紧急的解决办法,而不是对实际问题的实际答案,我不会接受这个答案,并鼓励任何对这个问题有更多洞察力的人分享你的智慧。

票数 1
EN

Database Administration用户

发布于 2022-09-29 10:36:39

您可以尝试一些东西,特别是在数据库中没有任何有价值的数据时:

  1. 制作数据目录的备份副本(保留文件所有权和权限),以防万一。
  2. 诺姆b_力_回收服务器.cnf文件的[mysqld]部分中设置.cnf=6。您还可以阅读有关InnoDB恢复模式的文档。
  3. 再次尝试启动MariaDB服务器。
  4. 以root身份登录到mariadb
  5. 执行SET GLOBAL innodb_log_file_size=4096*1024;设置文件的最小大小。
  6. 再次删除innodb_force_recovery设置。
  7. 重新启动MariaDB服务器。

我从未在任何地方测试过上述任何一项。

我的答案来自于对票据MDEV 27199中的讨论的快速阅读,所以您可能想自己读一下。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/317572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档