[MySQL] mysqldump のオプションを整理してみる
ベイスたん かわいいよ、ベイスたん・・・!ということで、みなさんこんにちは nakamura です。
またまた MySQL のちょいネタですが、今回は mysqldump コマンドのオプションをいくつか整理してみようと思います。mysqldump なんて数え切れないほど使っているはずなのに、まだまだ知らないオプションがあったりするんですね~。知ってるとちょいちょい使える場面あると思いますよ!
--opt
--opt は mysqldump コマンドのデフォルトオプションであり、--add-drop-table, --add-locks, --create-options, --disable-keys, --extended-insert, --lock-tables, --quick, --set-charset をひとつのオプションにまとめたものです。それぞれオプションの解説は以下の通りです。
--add-drop-table
CREATE TABLE 文の直前に DROP TABLE 文を出力します。
--add-locks
各テーブルのダンプ SQL を LOCK TABLE, UNLOCK TABLE で囲みます。これにより INSERT が早くなるとか。
--create-options
テーブルオプションを精密に再現するよう、CREATE TABLE 文を構成します。
--disable-keys
INDEX の生成を INSERT 文実行後に行うようにします。これにより INSERT が早くなるそうな。
--extended-insert
INSERT 文の形式を以下のようなものにします。これにより INSERT 文のサイズが小さくなり、リストアも早くなります。
INSERT INTO tbl VALUES (....), (....), (....);
--lock-tables
ダンプ取得の際に、ダンプされる側のテーブルをロックします。
--quick
メモリにバッファせず一行ずつダンプを出力します。データ量が大きい場合、有用なオプションです。
--set-charset
ダンプの冒頭に SET NAMES 文を出力します。セットされる文字コードには default_character_set が使われます。
--opt で指定されるオプションのうち特定のものをはずしたい場合は、--skip-extended-insert のようにオプションの頭に --skip を付けることで除外できます。
その他
その他でたまに使うもの。
--no-data
CREATE TABLE 文のみを出力します。テーブル構造のみをダンプしたい場合に使えます。
--no-create-info
--no-data とは逆で CREATE TABLE 文を出力しません。--no-data と組み合わせる事で任意のテーブルのみデータを入れつつそれ以外のテーブルは空っぽに、というのが可能になります。
--all-databases
全てのデータベースをまとめてダンプします。
--ignore-table
--ignore-table=db_name.tbl_name と指定する事で任意のテーブルをダンプ対象から除外する事ができます。
終わりに
上記以外にも mysqldump はやたらとオプションあるので man mysqldump 等で見てみてください。