MySQL“丢失”了所有数据(InnoBD)

MySQL“丢失”了所有数据(InnoBD)

今天我正在使用网站进行一些工作,然后出现错误,MySQL 无法重命名文件(在 BD 中进行更改)。接下来我尝试重新启动 MySQL,但无法停止 MySQL。然后我转到,/var/lib/mysql我看到的只有:ib_logfile0+1ibdata1site文件夹,其中包含我正在更改的表(不是表本身,只是#sql-b61_25a8e.MYI)。

我可以恢复我的 MySQL 数据吗?我不需要所有表,因为我有它们的旧备份。我只需要包含所有用户的那张表(我正在更改包含用户的表)。是的,我确实因为一些愚蠢的原因关闭了 MySQL。

答案1

首先,您的备份在哪里?如果您没有备份,这应该是您恢复数据后的首要任务。

无论如何,只要你有 .frm 文件的副本,你恢复数据。这些文件通常位于与 DB 数据相同的目录中,例如 /var/lib/mysql,但您的设置可能有所不同。如果您没有 .frm 文件的副本,则需要重新创建它们。frm 文件静态存储您的表布局,因此重新创建应该不太难,只要您保留了设计文件或使用提供的应用程序(例如 Wordpress)。然后只需创建该应用程序的新实例并将 frm 文件复制到您的恢复机器即可。

要进行恢复,请按照以下简单步骤操作:

  1. 在另一台机器上设置新的 MySQL 服务器,但mysqld暂时不要启动。
  2. 将您的ibdata1ib_logfile0和复制ib_logfile1到新机器的/var/lib/mysql文件夹。
  3. 确保这些文件属于 MySQL 用户,例如chown mysql ibdata1 ...
  4. 查找日志文件的大小(以字节为单位),例如ls -l
  5. 成为 MySQL 用户,例如su mysql
  6. 使用恢复选项启动 mysqld,即/usr/sbin/mysqld –innodb_log_file_size=<size_inbytes> –innodb_force_recovery=6

现在您应该会看到来自 MySQL 的一些消息,例如您设置的选项。片刻之后mysqld应该就可以启动并运行了。一旦发生这种情况,您就可以提取数据库的正确副本,mysqldump并将副本导入到生产机器中。

相关内容