今天我正在使用网站进行一些工作,然后出现错误,MySQL 无法重命名文件(在 BD 中进行更改)。接下来我尝试重新启动 MySQL,但无法停止 MySQL。然后我转到,/var/lib/mysql
我看到的只有:ib_logfile0+1
、ibdata1
和site
文件夹,其中包含我正在更改的表(不是表本身,只是#sql-b61_25a8e.MYI
)。
我可以恢复我的 MySQL 数据吗?我不需要所有表,因为我有它们的旧备份。我只需要包含所有用户的那张表(我正在更改包含用户的表)。是的,我确实因为一些愚蠢的原因关闭了 MySQL。
答案1
首先,您的备份在哪里?如果您没有备份,这应该是您恢复数据后的首要任务。
无论如何,只要你有 .frm 文件的副本,你能恢复数据。这些文件通常位于与 DB 数据相同的目录中,例如 /var/lib/mysql,但您的设置可能有所不同。如果您没有 .frm 文件的副本,则需要重新创建它们。frm 文件静态存储您的表布局,因此重新创建应该不太难,只要您保留了设计文件或使用提供的应用程序(例如 Wordpress)。然后只需创建该应用程序的新实例并将 frm 文件复制到您的恢复机器即可。
要进行恢复,请按照以下简单步骤操作:
- 在另一台机器上设置新的 MySQL 服务器,但
mysqld
暂时不要启动。 - 将您的
ibdata1
、ib_logfile0
和复制ib_logfile1
到新机器的/var/lib/mysql
文件夹。 - 确保这些文件属于 MySQL 用户,例如
chown mysql ibdata1 ...
- 查找日志文件的大小(以字节为单位),例如
ls -l
。 - 成为 MySQL 用户,例如
su mysql
。 - 使用恢复选项启动 mysqld,即
/usr/sbin/mysqld –innodb_log_file_size=<size_inbytes> –innodb_force_recovery=6
现在您应该会看到来自 MySQL 的一些消息,例如您设置的选项。片刻之后mysqld
应该就可以启动并运行了。一旦发生这种情况,您就可以提取数据库的正确副本,mysqldump
并将副本导入到生产机器中。