Virtualizor主控to_master表损坏

69 0

1 发现问题

登录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表异常:

可以看到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文件. 
通过下载安装脚本(http://files.virtualizor.com/install.sh),找到服务器上的安装日志文件,幸运的是没有自动删除.

在日志文件中不断搜索,就能找到virtualizor本体的压缩包,(话说我当时在那边研究emps.tar.gz😂真是傻啊),里面就能找到virtualizor.sql了.
定位到to_master处,得到建表语句:

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后台,发现成功登录,事件告一段落.

这家伙太懒了,什么也没留下。
最新回复 ( 0 )
发新帖