質問: MySQLのデータベース内にある一つのテーブルを全て上書き(update)してしまいました。 バックアップは取っておりませんでした。 /var/lib/mysql/ディレクトリを見ると各テーブルのファイル(.MYD、.MYI.frm)が入っていました。 該当テーブルの.MYDファイルの中身をviで見てみると、 上書きする前のデータと上書きした後のデータが混在して書き込まれているようでした。 なんとかこの.MYDファイルから、上書きする前のデータを復元することはできないでしょうか。 よろしくお願いいたします。
回答: mydファイルはテーブルの実データが入っています。 直接触るのは危険な気がします。 バックアップを取っていないとのことで厳しいですが。。。 MySQLにはバイナリログというものがあり、定期的に削除するようにしていなければこれまで発行したSQLがここに溜まっていきます。 バイナリログからリストアすれば復旧する可能性はあるかもしれません。 MySQLバイナリログの仕様 意外と知らないMySQLのリストアとロールフォワード回復 MySQLで、特定のテーブルをTRUNCATEしちゃった時の復旧方法 ※検証する際は事故ったDBとは別の環境で検証してください。 ※上の人がいるなら報告して指示を仰いだ方がいいです。