最近,我在服务器上犯了一个巨大的错误,最终无法安装,没有备份。
我基本上有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,以便您可以外籍和过上最好的生活。