mysqldump
MySQL
概要
mysqldump は、MySQL の DB データをダンプするコマンドです。
mysqldumpでダンプしたデータは簡単に復元できますので、データのバックアップ手段として非常に重宝します。
mysqldumpは、MySQL をインストールすると自動的にインストールされます。
使用方法
以下、使用例です。
% mysqldump -u username --password='xxxxxx' dbname > dbname.sql
usernameは DB 接続のユーザー名、xxxxxxはパスワード、dbnameは、ダンプしたいデータベース名です。
実行すると標準出力に dbname のデータダンプが出力されます。
上記の例では、dbname.sql にリダイレクトしてデータダンプを保存します。
mysqldump は非常に多くのオプションがあるのですが、以下その一部を紹介します。
オプション | 概要 |
---|---|
--all-databases | 全てのデータベースのデータをダンプする |
--skip-lock-tables | mysqldumpはダンプ実行時に各テーブルをロックするのだが、そのロックを行わない。 未指定時に "when using LOCK TABLES" といったエラーが出力される際に有効。 |
復元方法
mysqldump で取得したデータダンプは、以下のように単純に mysql コマンドに流し込むことによりデータの復元に利用できます。
% cat dbname.sql | mysql -u username -p
ただし、ダンプの取り方と現在の DB の状態によっては齟齬が発生する可能性がありますので、データの復旧については注意が必要です。
逆に言えば、復旧する時のことを考慮してダンプの取り方を検討する必要があります。
when using LOCK TABLES
mysqldump を実行すると、稀に "when using LOCK TABLES" というエラーが出ることがあります。
これはもちろん、テーブルにロックがかけれなくてダンプすることをあきらめてしまっていると思われますが、何故か特に問題が無い(アクセスが無い)状態でも上記のエラーが出ることがあります。
まったくもって原因不明なのですが、--skip-lock-tables というオプションを mysqldump に指定することにより、とりあえずダンプすることは出来ます。
ただし、本当にテーブルにアクセスがあってロックがかけれない場合には、ダンプ中にテーブル内のデータが変更される可能性があるので、DB 的には壊れた状態でダンプすることになるかもしれないことに注意が必要です。