MySQL系统数据库损坏

时间:2019-01-16 01:00:57

标签: mysql

前一段时间,我不小心删除了所有的MYSQL数据库。不知何故,我将它们全部恢复到MySQL中(我认为是从旧文件系统备份中获得的)。

但是,此后从未完全升级。我的意思是,apt-get将安装新的SQL版本,但表从未更新。几年来,MySQL运行良好,但有时尝试“ apt-get升级”(总是使MySQL安装后过程出错)后需要重新启动,以使其恢复运行。

当我运行“ dpkg --configure mysql-server-5.7”时,我得到以下输出:

Setting up mysql-server-5.7 (5.7.24-0ubuntu0.16.04.1) ...
Checking if update is needed.
Checking server version.
Running queries to upgrade MySQL server.
mysql_upgrade: [ERROR] 1812: Tablespace is missing for table `mysql`.`plugin`.
mysql_upgrade failed with exit status 5
dpkg: error processing package mysql-server-5.7 (--configure):
 subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
 mysql-server-5.7

很明显,系统表“插件”不在数据库文件中...但是如何找回它?如何重新创建?由于没有它,它运行良好,我的意思是,我可以从另一台服务器上窃取一台吗?是不是总比没有好?

我有数十个数据库,其中包含大量数据。我真的不想危及这一点...

我真的不知道从哪里开始...请帮助。

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以尝试使用mysqlcheck实用程序。

mysqlcheck mysql plugin

答案 1 :(得分:0)

因此,我可以使用它。尚未完全完成,但是对于每个“分离的”表,我使用以下命令:

alter table [error_table] import tablespace;

几个表抛出了一个错误,

Error Code: 1808. Schema mismatch (Table has ROW_TYPE_COMPACT row format, .ibd file has ROW_TYPE_DYNAMIC row format.)

我还没有解决这个问题。当我尝试更改行格式时,整个数据库崩溃。一旦确定,我将更新此解决方案。否则,如果有人有建议,我欢迎他们!