多灾多难的美国灵车,多灾多难的7iNet😂
这次处理了差不多一个小时,剪贴板太多东西了,当时截的图都没有了. 下面配图会很少,有也是聊天记录里面复制出来的,见谅~
事先声明:这张表对于系统运行来说,我认为关系不大,所以最后是通过重建方式恢复的. 剧透一下,MYI文件整个丢了,也许把MYD文件复制回去能够恢复数据(?),反正我没试.
在没有日志和备份的情况下成功!

1 发现问题

灵车日常cpu起飞,按照惯例,我准备强制重启进入系统查占用,封机,一气呵成。
结果,这次出了点意外。登录Virtualizor时,我得到了一个报错:

Could not make the Query.
SELECT * FROM to_master
Array
(
    [0] => HY000
    [1] => 1017
    [2] => Can't find file: 'to_master' (errno: 2)
)

灾难,开始了。

2 分析问题

进入/usr/local/emps/var/mysql/virtualizor目录下,观察到to_master表异常:
9d667c169606c88bcf62c26eb44bb658
可以看到to_master没有和其他表一样有MYI索引文件,MYD文件结尾多了一个_19cb. 想必它发生了什么,但是我看不懂
不管了,硬着头皮上!

3 解决问题

① 命令行REPAIR TABLE,失败

什么情况?遇事不决,ctrl+a,拖出去bing一下!
搜到了一篇相关的文章:https://mellowhost.com/blog/could-not-make-the-query-virtualizor-error.html#:~:text=To%20solve%20this%2C%20we%20need%20to%20repair%20the,repair%20the%20table%3A%20Now%20the%20virtualizor%20shall%20work.
报错不一样,抱着试试的心态,我尝试进命令行repair了一下,不出意外,不行。

这里有一点,获取数据库密码的方式在这篇文章里有:

grep dbpass /usr/local/virtualizor/universal.php

记住他,待会要考.

② 官方文档repair database工具,失败

文档地址:https://www.virtualizor.com/docs/admin/repair-database/.
对于目前的情况来说,无效。不过在提前备份数据(mysqldump导出sql文件)时,他抛出了其他报错:task表同样出现了一些问题. 不过好消息是,这张表通过方法一成功解决了.

③ 重建表,成功

摆烂,只要能恢复服务,不择手段. 首先,我们需要找到安装的sql文件. 找这玩意花了我好长时间... virtualizor的安装程序install.php是ioncube加密的,我也不知道怎么解.
通过下载安装脚本(http://files.virtualizor.com/install.sh),找到服务器上的安装日志文件,幸运的是没有自动删除.
image
在日志文件中不断搜索,就能找到virtualizor本体的压缩包,(话说我当时在那边研究emps.tar.gz😂真是傻啊),里面就能找到virtualizor.sql了.
定位到to_master处,得到建表语句:
image

CREATE TABLE `to_master` (
  `tables` varchar(100) NOT NULL DEFAULT '',
  `columns` varchar(100) NOT NULL DEFAULT '',
  `id` varchar(32) NOT NULL DEFAULT '0',
  `unique_column` varchar(100) NOT NULL DEFAULT '',
  `value` MEDIUMTEXT,
  UNIQUE KEY `tables` (`tables`,`columns`,`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

先到/usr/local/emps/var/mysql/virtualizor目录下,把to_master有关的文件删除掉: rm to_master*
进入命令行,把表drop掉后执行建表语句.

尝试登录virtualizor后台,发现成功登录,事件告一段落.
关于方法三中提到的zip文件和sql文件,下载地址:https://drive.imxb.de/Blog-Resources/241227-%E8%A1%A8%E7%82%B8%E4%BA%86%EF%BC%8C%E6%80%8E%E4%B9%88%E5%8A%9E%EF%BC%9F%E2%80%94%E2%80%94%E8%AE%B0%E4%B8%80%E6%AC%A1Virtualizor%E4%B8%BB%E6%8E%A7to_master%E8%A1%A8%E6%8D%9F%E5%9D%8F%E4%BF%AE%E5%A4%8D