从磁盘映像恢复 MySQL 备份

Ant*_*ony 0 mysql backup

我最近搞砸了一个查询并破坏了 MySQL 中的一个表。我还意识到我没有一个 cron 来执行每晚的 SQL 转储。但我确实有一个夜间磁盘映像,我已将其恢复并安装在数据库服务器上。

我在 ~/my_restore/var/lib/mysql 中发现了一个巨大的“ibdata1”文件,听起来它可能是我的数据库。

我可以运行命令来直接从数据库文件进行转储吗?

或者也许我应该停止 mysql 并更新 /etc/mysql/my.cnf 以指向新的数据文件?

只是想在我把愚蠢与更愚蠢(呃)复合之前寻求建议。

Zor*_*che 5

首先,获取正在运行的 mysql 服务器的磁盘映像几乎肯定会导致备份损坏。这是一个糟糕的备份策略,您应该尽快纠正。mysqldump是首选工具,其次是停止mysql服务器。

无论如何,如果我处于您的位置并且能够承受一些停机时间,我将遵循的程序如下。

  • 使用受支持的方法对数据库进行备份(不想在修复过程中使情况变得更糟)。
  • 停止Mysql服务器
  • 将 mysql 数据目录重命名为某个临时位置 (mv /var/lib/mysql /var/lib/mysql_Production)
  • 尝试将数据从磁盘映像恢复到 /var/lib/mysql
  • 启动mysql服务器并查找错误
  • 备份/导出“恢复”的数据。
  • 切换回生产数据库
    • 停止服务器
    • git 删除恢复的 /var/lib/mysql
    • 将 /var/lib/mysql_product 移回 /var/lib/mysql
    • 启动mysql服务器
  • 从您对恢复的数据进行的导出中选择性地恢复各个表/数据/等。