MySQL Bug 系统表mysql.user损坏,参数read_only=ON时,无法启动

2023年 8月 15日 66.0k 0

生产环境 MySQL 机器使用备份恢复后,无法启动,报错信息为系统表 mysql.user 损坏,经过排查,发现是 MySQL 5.7 版本的一个 Bug。当 MySQL 启动时,如果 read_only 参数设置为 ON,此时如果系统表,比如 mysql.user 表发生损坏,则会导致 MySQL 无法自动修复该损坏的系统表,进而导致无法启动。

  • MySQL 版本:Percona Server for MySQL 5.7.30
  • Bug 信息:https://bugs.mysql.com/bug.php?id=100640

报错信息如下:

2021-02-02T19:42:26.275860+08:00 0 [ERROR] /usr/local/mysql/bin/mysqld: Table './mysql/user' is marked as crashed and should be repaired
2021-02-02T19:42:26.275899+08:00 0 [ERROR] Fatal error: Can't open and lock privilege tables: Table './mysql/user' is marked as crashed and should be repaired
2021-02-02T19:42:26.275914+08:00 0 [ERROR] Fatal error: Failed to initialize ACL/grant/time zones structures or failed to remove temporary table files.
2021-02-02T19:42:26.275944+08:00 0 [ERROR] Aborting

如何复现:
(1)设置 my.cnf 中的参数 read_only=ON
(2)启动 MySQL,创建一个新用户并授权
(3)kill -9 杀掉 MySQL 进程
(4)启动 MySQL(参数read_only=ON)

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论