从FRM文件和IDB重新创建MySQL数据库
#devops #mysql #mariadb

最近,我在服务器上犯了一个巨大的错误,最终无法安装,没有备份。
我基本上有Plesk有几个WordPress网站,但偶然,我仍然可以访问我的数据,即使它不再可用。

因此,这是我如何恢复文件并能够获得带有结构和数据的.sql文件的方式。

首先,检索数据

所以我所有的mySQL数据都躺在我的/var/lib/mysql的服务器上,它在

中组织了
  • ibdata1(要保留的一个重要文件)
  • 每个数据库名称一个文件夹
  • 在每个文件夹中,.frm.idb文件

所以让我们使用scp
在我的计算机上进行所有内容

mkdir mysql
scp -r root@<ip>:/var/lib/mysql/* .

然后,检索mysql版本

为了能够重新创建数据库,我们需要使用MySQL/Mariadb

的相同版本

为此,在服务器上启动cat /var/lib/mysql/mysql_upgrade_info

我得到了类似10.1.48-MariaDB的东西。

在本地启动MySQL/Mariadb

我们知道我们需要的确切版本,我们现在将使用docker启动此版本的MySQL Server。
因此,在您的本地,运行:

docker pull mariadb:10.1.48
docker run -p 127.0.0.1:3307:3306 --name mariadbtest -e MYSQL_ROOT_PASSWORD=Password123! -d mariadb:10.1.48

为此,我们在端口3307上启动Docker,以防另一个MySQL Server正在运行。

现在,我们可以使用我们喜欢的MySQL Explorer登录到数据库,对我来说,它是Sequel Pro

您可以使用

连接到数据库
  • 主机:127.0.0.1
  • 用户名:root
  • 密码:密码123!
  • 端口:3307

ð您现在得到了您过去在服务器上使用的MySQL的相同版本。

将您的旧数据库复制到Docker机器

所以,现在,让我们将每个数据库移动到Docker中以访问它:

docker cp dbname/ mariadbtest:/var/lib/mysql

dbname开始持有.frm.idb文件的文件夹。

从那里,如果您在续集Pro中刷新数据库,则应查看数据库,但是当您尝试打开任何表时发生错误。

Table 'dbname.mod844_icl_string_status' doesn't exist例如

修正错误

为了解决此问题,您需要复制我们备份的先前文件:

docker cp ibdata1 mariadbtest:/var/lib/mysql

之后,重新启动Docker Machine,您应该能够使用Sequel Pro访问数据。

导出您的数据

现在,您可以安全地将数据导出到.sql文件中,并考虑从现在开始设置备份系统!

干杯

我的名字叫马丁·拉特纳德(Martin Ratinaud),我是一个完整的堆栈开发人员

我运行一个staking crypto comparator,以帮助您找到任何加密货币的最佳价格。

自2016年以来作为一名偏远工人,我还希望您根据自己的爱好来发现your sweet spot,以便您可以外籍和过上最好的生活。