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」とかを使うのもありです。