MySQLで特定のテーブルだけ除外して、バックアップ(mysqldump)する方法

テーブルに関わるエラー

MySQL5.5(または5.1)のmysqldumpを使う場合で、たまにテーブルが壊れていて、正常にバックアップできない場合があります。

次のような場合です。

# mysqldump -u root -p db_name | gzip > /home/data/20110709.dump.gz

Enter password:
mysqldump: Couldn't execute 'SELECT /*!40001 SQL_NO_CACHE */ * FROM `table_name`': invalid table assigned (1024)

mysqldumpでの解決方法

このような場合、壊れているテーブルだけ除外して、mysqldumpすると、正しくダンプされます。

実際の方法は、以下のオプションを使います。

--ignore-table=db_name.table_name

オプションのdb_nameはデータベース名、table_nameはテーブル名です。


実際には次のように使います。

# mysqldump -u root -p --ignore-table=db_name.table_name db_name | gzip > /home/data/20110709.dump.gz

Enter password:
#


db_nameをつけるのを忘れないでください。

その他

mysqldumpを安全に行いたい場合、時間が多少かかりますが、
デフォルトのオプションをはずす「--skip-opt」とかを使うのもありです。