[MySQL] mysqldump のオプションを整理してみる

[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 等で見てみてください。

  • このエントリーをはてなブックマークに追加

この記事を読んだ人にオススメ