mysqldump クライアントは、論理バックアップ を実行するユーティリティーで、元のスキーマオブジェクト、テーブルデータ、または両方を再現するために実行できる SQL ステートメントのセットを生成します。バックアップまたは別の SQL サーバーへの転送のため、1 つまたは複数の MySQL データベースをダンプします。mysqldump コマンドは、CSV、その他の区切り文字で区切られたテキスト、または XML 形式でも出力を生成できます。
mysqldump では、ダンプされるテーブルに対する SELECT
権限、ダンプされるビューに対する SHOW VIEW
、ダンプされるトリガーに対する TRIGGER
、および --single-transaction
オプションが使用されない場合には LOCK TABLES
が少なくとも必要です。オプションの説明に示すように、一部のオプションではその他の権限が必要な場合があります。
ダンプファイルをリロードするには、CREATE
ステートメントを手動で発行してダンプされる各オブジェクトを作成するために必要な権限と同じものを持っていなければなりません。
mysqldump 出力には、データベースの照合順序を変更する ALTER DATABASE
ステートメントを含めることができます。これらは、ストアドプログラムをダンプする際に文字のエンコードを維持するために使用できます。このようなステートメントを含むダンプファイルをリロードするには、影響されるデータベースに対する ALTER
権限が必要です。
パフォーマンスおよびスケーラビリティーに関する考慮事項
mysqldump
の利点には、リストアする前に出力を表示して編集もできるという便利さと柔軟性があります。開発およびデータベース管理用にデータベースのクローンを作成したり、テスト用に既存のデータベースとわずかに異なるデータベースを作成したりできます。大量のデータのバックアップのための、高速でスケーラブルなソリューションを意図したものではありません。データサイズが大量の場合、バックアップのステップにかかる時間が妥当だとしても、SQL ステートメントの再現には、挿入やインデックスの作成などのディスク I/O が含まれるため、データのリストアに非常に長い時間がかかることがあります。
大規模なバックアップとリストアでは、データファイルを高速でリストアできる元の形式でコピーする、物理バックアップの方が適切です。
テーブルが主に
InnoDB
テーブルである場合、またはInnoDB
テーブルとMyISAM
テーブルが混在する場合は、MySQL Enterprise Backup 製品の mysqlbackup コマンドを使用することを検討してください。(Enterprise サブスクリプションの一部として含まれています。)これにより、最低限の中断でもっともパフォーマンスのよいInnoDB
のバックアップを実行できます。また、MyISAM
およびその他のストレージエンジンからのテーブルもバックアップでき、さまざまなバックアップシナリオに対応するための便利なオプションを多数提供します。セクション25.2「MySQL Enterprise Backup」を参照してください。テーブルが主に
MyISAM
テーブルである場合は、代わりに mysqlhotcopy を使用することを検討してください。mysqldump のバックアップおよびリストア操作よりも優れたパフォーマンスを提供します。セクション4.6.10「mysqlhotcopy — データベースバックアッププログラム」を参照してください。
mysqldump は、テーブルの内容を 1 行ずつ取得してダンプすることも、ダンプする前にテーブルからすべての内容を取得して、メモリーにバッファリングすることもできます。大きなテーブルをダンプしている場合、メモリーへのバッファリングが問題になる場合があります。テーブルを 1 行ずつダンプする場合、--quick
オプションを使用してください (または --opt
を指定すれば --quick
が有効になります)。--opt
オプションは (したがって --quick
も) デフォルトで有効なため、メモリーへのバッファリングを有効にするには、--skip-quick
を使用します。
最近のバージョンの mysqldump を使用して、非常に古い MySQL サーバーにリロードされるダンプを生成する場合は、--opt
オプションまたは --extended-insert
オプションの代わりに --skip-opt
オプションを使用します。
mysqldump の詳細は、セクション7.4「バックアップへの mysqldump の使用」を参照してください。
構文
次に示すように、一般に mysqldump を使用するには、1 つまたは複数のテーブルのセットのダンプ、1 つまたは複数の完全なデータベースのセット、または MySQL サーバー全体の 3 つの方法があります。
shell> mysqldump [options] db_name [tbl_name ...]
shell> mysqldump [options] --databases db_name ...
shell> mysqldump [options] --all-databases
データベース全体をダンプするには、db_name
に続けてテーブルを指名しないか、または --databases
オプションまたは --all-databases
オプションを使用します。
使用しているバージョンの mysqldump がサポートするオプションのリストを表示するには、コマンド mysqldump --help を発行します。
オプション構文 - アルファベット順のサマリー
mysqldump は次のオプションをサポートします。これらはコマンド行またはオプションファイルの [mysqldump]
グループおよび [client]
グループで指定できます。MySQL プログラムによって使用されるオプションファイルの詳細については、セクション4.2.6「オプションファイルの使用」を参照してください。
表 4.8 mysqldump のオプション
オプション名 | 説明 | 導入 |
---|---|---|
--add-drop-database | DROP DATABASE ステートメントを CREATE DATABASE ステートメントの前に追加 | |
--add-drop-table | DROP TABLE ステートメントを CREATE TABLE ステートメントの前に追加 | |
--add-drop-trigger | DROP TRIGGER ステートメントを CREATE TRIGGER ステートメントの前に追加 | |
--add-locks | LOCK TABLES と UNLOCK TABLES ステートメントで各テーブルダンプを囲む | |
--all-databases | すべてのデータベース内のすべてのテーブルをダンプ | |
--allow-keywords | キーワードであるカラム名の作成を許可 | |
--apply-slave-statements | CHANGE MASTER ステートメントの前に STOP SLAVE を含め、START SLAVE を出力の最後に含める | |
--bind-address | 指定されたネットワークインタフェースを使用して MySQL サーバーに接続 | 5.6.1 |
--comments | ダンプファイルにコメントを追加 | |
--compact | よりコンパクトな出力を生成 | |
--compatible | 古い MySQL サーバーやほかのデータベースシステムとの互換性がより高い出力を生成 | |
--complete-insert | カラム名を含む完全な INSERT ステートメントを使用 | |
--create-options | すべての MySQL に固有なテーブルオプションを CREATE TABLE ステートメントに含める | |
--databases | 複数のデータベースをダンプ | |
--debug | デバッグのログを書き込み | |
--debug-check | プログラムの終了時にデバッグ情報を出力 | |
--debug-info | プログラムの終了時に、デバッグ情報、メモリー、および CPU の統計を出力 | |
--default-auth | 使用する認証プラグイン | |
--default-character-set | デフォルト文字セットを指定 | |
--defaults-extra-file | 通常のオプションファイルに加えてオプションファイルを読み取る | |
--defaults-file | 指名されたオプションファイルのみを読み取る | |
--defaults-group-suffix | オプショングループのサフィクス値 | |
--delayed-insert | INSERT ステートメントではなく INSERT DELAYED ステートメントを書き出す | |
--delete-master-logs | マスターレプリケーションサーバーで、ダンプ操作の実行後にバイナリログを削除 | |
--disable-keys | 各テーブルについて、キーを無効にするステートメントおよび有効にするステートメントで INSERT ステートメントを囲む | |
--dump-date | --comments が指定された場合、ダンプ日を "Dump completed on" コメントとして含める | |
--dump-slave | スレーブのマスターのバイナリログ座標をリストする CHANGE MASTER ステートメントを含める | |
--events | ダンプされたデータベースからイベントをダンプ | |
--extended-insert | 複数の VALUES リストを含む、複数行 INSERT 構文を使用 | |
--fields-enclosed-by | このオプションは --tab オプションとともに使用され、LOAD DATA INFILE の対応する句と同じ意味を持つ | |
--fields-escaped-by | このオプションは --tab オプションとともに使用され、LOAD DATA INFILE の対応する句と同じ意味を持つ | |
--fields-optionally-enclosed-by | このオプションは --tab オプションとともに使用され、LOAD DATA INFILE の対応する句と同じ意味を持つ | |
--fields-terminated-by | このオプションは --tab オプションとともに使用され、LOAD DATA INFILE の対応する句と同じ意味を持つ | |
--flush-logs | ダンプを始める前に MySQL サーバーログファイルをフラッシュ | |
--flush-privileges | mysql データベースのダンプ後、FLUSH PRIVILEGES ステートメントを発行 | |
--help | ヘルプメッセージを表示して終了 | |
--hex-blob | バイナリカラムを 16 進変換表記法を使用してダンプ (たとえば、'abc' は 0x616263) | |
--host | 接続先のホスト (IP アドレスまたはホスト名) | |
--ignore-table | 指定されたテーブルをダンプしない | |
--include-master-host-port | --dump-slave ともに生成された CHANGE MASTER ステートメントに MASTER_HOST/MASTER_PORT オプションを含める | |
--insert-ignore | INSERT ステートメントではなく INSERT IGNORE ステートメントを書き出す | |
--lines-terminated-by | このオプションは --tab オプションとともに使用され、LOAD DATA INFILE の対応する句と同じ意味を持つ | |
--lock-all-tables | データベース内のテーブルをすべてロック | |
--lock-tables | テーブルをダンプする前にすべてロック | |
--log-error | 警告およびエラーを指名されたファイルに追加 | |
--login-path | ログインパスオプションを .mylogin.cnf から読み取り | 5.6.6 |
--master-data | バイナリログファイルの名前と場所を出力に書き込む | |
--max_allowed_packet | サーバーとの間で送受信するパケットの最大長 | |
--net_buffer_length | TCP/IP とソケット通信のバッファーサイズ | |
--no-autocommit | ダンプされたテーブルごとに、INSERT ステートメントを SET autocommit = 0 ステートメントと COMMIT ステートメントで囲む | |
--no-create-db | このオプションは CREATE DATABASE ステートメントを抑制 | |
--no-create-info | 各ダンプされたテーブルを再作成する CREATE TABLE ステートメントを書き出さない | |
--no-data | テーブルの内容をダンプしない | |
--no-defaults | オプションファイルを読み取らない | |
--no-set-names | --skip-set-charset と同じ | |
--no-tablespaces | CREATE LOGFILE GROUP ステートメントおよび CREATE TABLESPACE ステートメントを出力に書き出さない | |
--opt | --add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset の短縮形。 | |
--order-by-primary | 各テーブルの行を、主キーまたは最初の一意のインデックスでソートしてダンプ | |
--password | サーバーに接続する際に使用するパスワード | |
--pipe | Windows で、名前付きパイプを使用してサーバーに接続 | |
--plugin-dir | プラグインがインストールされているディレクトリ | |
--port | 接続に使用する TCP/IP ポート番号 | |
--print-defaults | デフォルトを出力 | |
--protocol | 使用する接続プロトコル | |
--quick | サーバーからのテーブルについて、一度に 1 行ずつ取得 | |
--quote-names | 識別子を逆引用符文字で囲む | |
--replace | INSERT ステートメントではなく REPLACE ステートメントを書き出す | |
--result-file | 指定されたファイルに出力 | |
--routines | ダンプされたデータベースからストアドルーチン (プロシージャーおよび関数) をダンプ | |
--secure-auth | 古い (4.1.1 より前の) 形式でサーバーにパスワードを送信しない | 5.6.17 |
--set-charset | SET NAMES default_character_set を出力に追加 | |
--set-gtid-purged | SET @@GLOBAL.GTID_PURGED を出力に追加するかどうか | 5.6.9 |
--shared-memory-base-name | 共有メモリー接続に使用する共有メモリーの名前 | |
--single-transaction | このオプションは、サーバーからデータをダンプする前に BEGIN SQL ステートメントを発行 | |
--skip-add-drop-table | DROP TABLE ステートメントを CREATE TABLE ステートメントの前に追加しない | |
--skip-add-locks | ロックを追加しない | |
--skip-comments | ダンプファイルにコメントを追加しない | |
--skip-compact | よりコンパクトな出力を生成しない | |
--skip-disable-keys | キーを無効にしない | |
--skip-extended-insert | extended-insert をオフにする | |
--skip-opt | --opt で設定されたオプションをオフにする | |
--skip-quick | サーバーからのテーブルについて、一度に 1 行ずつ取得しない | |
--skip-quote-names | 識別子を引用符で囲まない | |
--skip-set-charset | SET NAMES ステートメントを抑制 | |
--skip-triggers | トリガーをダンプしない | |
--skip-tz-utc | tz-utc をオフにする | |
--socket | ローカルホストへの接続で、使用する Unix ソケットファイル | |
--ssl | 接続に SSL を有効化 | |
--ssl-ca | 信頼された SSL CA のリストを含むファイルのパス | |
--ssl-capath | 信頼された SSL CA の PEM 形式の証明書を含むディレクトリのパス | |
--ssl-cert | PEM 形式の X509 証明書を含むファイルのパス | |
--ssl-cipher | SSL の暗号化に使用される、許可された暗号のリスト | |
--ssl-crl | 証明書失効リストを含むファイルのパス | 5.6.3 |
--ssl-crlpath | 証明書失効リストファイルを含むディレクトリのパス | 5.6.3 |
--ssl-key | PEM 形式の X509 鍵を含むファイルのパス | |
--ssl-verify-server-cert | サーバーへの接続時に、サーバーの証明書内のコモンネーム値をホスト名に対して検証 | |
--tab | タブ区切りのデータファイルを生成 | |
--tables | --databases オプションまたは -B オプションをオーバーライド | |
--triggers | ダンプされた各テーブルについて、トリガーをダンプする | |
--tz-utc | SET TIME_ZONE='+00:00' をダンプファイルに追加 | |
--user | サーバーへの接続時に使用する MySQL ユーザー名 | |
--verbose | 冗長モード | |
--version | バージョン情報を表示して終了 | |
--where | 所定の WHERE 条件で選択された行のみダンプ | |
--xml | XML 出力を生成 |
接続オプション
mysqldump コマンドは MySQL サーバーにログインして情報を抽出します。次のオプションは、同じマシンまたはリモートシステム上の MySQL サーバーに接続する方法を指定します。
-
複数のネットワークインタフェースを持つコンピュータで、このオプションを使用して、MySQL サーバーへの接続に使用するインタフェースを選択します。
このオプションは MySQL 5.6.1 からサポートされています。
-
クライアントとサーバーの両方が圧縮をサポートしている場合、その間で送受信される情報をすべて圧縮します。
-
使用するクライアント側の認証プラグイン。セクション6.3.7「プラガブル認証」を参照してください。
-
--host=
,host_name
-h
host_name
与えられたホスト上の MySQL サーバーからデータをダンプします。デフォルトホストは
localhost
です。 -
指名されたログインパスから
.mylogin.cnf
ログインファイルのオプションを読み取ります。「ログインパス」は、host
、user
、およびpassword
という限定されたオプションのセットのみを許可するオプショングループです。ログインパスは、サーバーホストおよびそのサーバーで認証するための認証情報を示す値のセットであると考えてください。ログインパスファイルを作成するには、mysql_config_editor ユーティリティーを使用します。セクション4.6.6「mysql_config_editor — MySQL 構成ユーティリティー」を参照してください。このオプションは MySQL 5.6.6 で追加されました。 -
--password[=
,password
]-p[
password
]サーバーに接続する際に使用するパスワードです。短いオプション形式 (
-p
) を使用した場合は、オプションとパスワードの間にスペースを置くことはできません。コマンド行で、--password
オプションまたは-p
オプションに続けてpassword
の値を指定しなかった場合、mysqldump はそれを要求します。コマンド行でのパスワード指定は、セキュアでないと考えるべきです。セクション6.1.2.1「パスワードセキュリティーのためのエンドユーザーガイドライン」を参照してください。オプションファイルを使用すれば、コマンド行でパスワードを指定することを回避できます。
-
Windows で、名前付きパイプを使用してサーバーに接続します。このオプションは、サーバーが名前付きパイプ接続をサポートしている場合にのみ適用されます。
-
プラグインを検索するディレクトリ。
--default-auth
オプションを使用して認証プラグインを指定したが、mysqldump がそれを検出できない場合は、このオプションを指定しなければならない可能性があります。セクション6.3.7「プラガブル認証」を参照してください。 -
接続に使用する TCP/IP ポート番号。
-
--protocol={TCP|SOCKET|PIPE|MEMORY}
サーバーへの接続に使用する接続プロトコル。このオプションは、ほかの接続パラメータによって、必要なプロトコル以外のものが通常使用される場合に役立ちます。許可される値の詳細は、セクション4.2.2「MySQL サーバーへの接続」を参照してください。
-
古い (4.1 より前の) 形式でサーバーにパスワードを送信しません。これにより、新しいパスワード形式を使用するサーバー以外への接続を防ぎます。このオプションはデフォルトで有効です。無効にするには
--skip-secure-auth
を使用します。このオプションは MySQL 5.6.17 で追加されました。注記4.1 より前のハッシュ方式を使用するパスワードはネイティブのパスワードハッシュ方式を使用するパスワードよりもセキュアでないため、使用しないようにしてください。4.1 よりも前のパスワードは非推奨であり、これらのサポートは今後の MySQL リリースで削除される予定です。アカウントのアップグレード手順については、セクション6.3.8.3「4.1 よりも前のパスワードハッシュ方式と mysql_old_password プラグインからの移行」を参照してください。
-
localhost
への接続用に使用する、Unix ソケットファイル、または Windows では使用する名前付きパイプの名前。 -
--ssl
で始まるオプションは、SSL を使用してサーバーに接続することを許可するかどうかを指定し、SSL 鍵および証明書を検索する場所を指定します。セクション6.3.10.4「SSL コマンドのオプション」を参照してください。 -
--user=
,user_name
-u
user_name
サーバーへの接続時に使用する MySQL ユーザー名。
--
構文を使用すれば、次の変数も設定できます。
var_name
=value
-
クライアント/サーバー通信用のバッファーの最大サイズ。デフォルトは 24M バイト、最大は 1G バイトです。
-
クライアント/サーバー通信用のバッファーの初期サイズ。複数行の
INSERT
ステートメント (--extended-insert
オプションまたは--opt
オプションを使用する場合など) を作成する場合、mysqldump はnet_buffer_length
までの長さの行を作成します。この変数を増加させる場合は、MySQL サーバー内のnet_buffer_length
変数が少なくともこの大きさであることを確認してください。
オプションファイルオプション
これらのオプションは、どのオプションファイルを読み取るかを制御するために使用されます。
-
--defaults-extra-file=
file_name
このオプションファイルは、グローバルオプションファイルのあとに読み取りますが、(UNIX では) ユーザーオプションファイルの前に読み取るようにしてください。ファイルが存在しないかアクセスできない場合、エラーが発生します。
file_name
は、フルパス名でなく相対パス名として指定された場合、現行ディレクトリを基準にして解釈されます。 -
指定されたオプションファイルのみ使用します。ファイルが存在しないかアクセスできない場合、エラーが発生します。
file_name
は、フルパス名でなく相対パス名として指定された場合、現行ディレクトリを基準にして解釈されます。 -
通常のオプショングループだけでなく、通常の名前に
str
のサフィクスが付いたグループも読み取ります。たとえば、mysqldump は通常[client]
グループおよび[mysqldump]
グループを読み取ります。--defaults-group-suffix=_other
オプションを指定した場合、mysqldump は[client_other]
グループおよび[mysqldump_other]
グループも読み取ります。 -
オプションファイルを読み取りません。オプションファイルから不明のオプションを読み取ることが原因でプログラムの起動に失敗する場合、
--no-defaults
を使用して、オプションを読み取らないようにできます。例外として、
.mylogin.cnf
ファイルは、存在する場合はすべての場合に読み取られます。これにより、--no-defaults
が使用された場合にも、コマンド行よりも安全な方法でパスワードを指定できます。(.mylogin.cnf
は mysql_config_editor ユーティリティーによって作成されます。セクション4.6.6「mysql_config_editor — MySQL 構成ユーティリティー」を参照してください)。 -
プログラム名と、オプションファイルから受け取るすべてのオプションを出力します。
DDL オプション
mysqldump の使用シナリオには、新しい MySQL インスタンス全体 (データベーステーブルを含む) のセットアップ、および既存のインスタンス内部のデータを既存のデータベースおよびテーブルで置換することが含まれます。次のオプションを使用すると、ダンプファイル内にさまざまな DDL ステートメントをエンコードすることによって、ダンプをリストアする際に何を削除し何をセットアップするのかを指定できます。
-
DROP DATABASE
ステートメントを各CREATE DATABASE
ステートメントの前に追加します。通常このオプションは、--all-databases
オプションまたは--databases
オプションとともに使用されます。これらのオプションのいずれかを指定しないとCREATE DATABASE
ステートメントが書き込まれないからです。 -
DROP TABLE
ステートメントを各CREATE TABLE
ステートメントの前に追加します。 -
DROP TRIGGER
ステートメントを各CREATE TRIGGER
ステートメントの前に追加します。 -
NDB
テーブルが使用するテーブルスペースを作成するために必要なすべての SQL ステートメントをテーブルダンプに追加します。そうしないと、この情報は mysqldump の出力には含まれません。このオプションは、現在 MySQL Cluster テーブルに対してのみ有効です。 -
このオプションは、
--databases
オプションまたは--all-databases
オプションが指定されていた場合、出力に含まれるCREATE DATABASE
ステートメントを抑制します。 -
ダンプされた各テーブルを再作成する
CREATE TABLE
ステートメントを書き込みません。注記このオプションは、ログファイルグループまたはテーブルスペースを作成するステートメントを、mysqldump 出力から除外しません。ただし、このためには
--no-tablespaces
オプションを使用できます。 -
このオプションは、mysqldump の出力内のすべての
CREATE LOGFILE GROUP
ステートメントおよびCREATE TABLESPACE
ステートメントを抑制します。 -
INSERT
ステートメントではなくREPLACE
ステートメントを書き込みます。
デバッグオプション
次のオプションは、デバッグ情報を出力したり、ダンプファイルにデバッグ情報をエンコードしたり、または潜在的な問題にかかわらずダンプ操作を続行させたりします。
-
キーワードであるカラム名の作成を許可します。これは各カラム名にテーブル名のプリフィクスを用いることで機能します。
-
プログラムバージョン、サーバーバージョン、およびホストなどの追加情報をダンプファイルに書き込みます。このオプションはデフォルトで有効となっています。この追加情報を抑制するには、
--skip-comments
を使用してください。 -
--debug[=
,debug_options
]-# [
debug_options
]デバッグのログを書き込みます。一般的な
debug_options
文字列はd:t:o,
です。デフォルト値はfile_name
d:t:o,/tmp/mysqldump.trace
です。 -
プログラムの終了時に、デバッグ情報を出力します。
-
プログラムの終了時に、デバッグ情報とメモリーおよび CPU 使用率の統計を出力します。
-
--comments
オプションが指定された場合、mysqldump はダンプの最後に次の形式でコメントを生成します。-- Dump completed on DATE
ただし、別のときに取られたダンプファイルが、日付以外のデータがまったく同じでも日付のために異なって見えます。
--dump-date
および--skip-dump-date
は、コメントに日付を追加するかどうかを制御します。デフォルトは--dump-date
(日付をコメントに含める) です。--skip-dump-date
は日付の出力を抑制します。 -
テーブルダンプの最中に SQL エラーが発生しても続行します。
このオプションの使い方の 1 つとして、削除されたテーブルをビュー定義が参照するために無効になっているビューを検出したときにも、mysqldump が実行を続けるようにすることです。
--force
を指定しないと、mysqldump はエラーメッセージで終了します。--force
を使用すると、mysqldump はエラーメッセージを出力しますが、さらにビュー定義を含む SQL コメントをダンプ出力に書き込み、実行を継続します。 -
警告およびエラーを、指名されたファイルに追加することによってログに記録します。デフォルトでは、ロギングを行いません。
-
--comments
オプションの説明を参照してください。 -
冗長モード。プログラムの動作についてより多くの情報を出力します。
ヘルプオプション
次のオプションは、mysqldump コマンド自身に関する情報を表示します。
国際化オプション
次のオプションは、mysqldump コマンドが各国語の設定で文字データを表現する方法を変更します。
-
文字セットがインストールされているディレクトリ。セクション10.5「文字セットの構成」を参照してください。
-
--default-character-set=
charset_name
charset_name
をデフォルト文字セットとして使用します。セクション10.5「文字セットの構成」を参照してください。文字セットが指定されていない場合、mysqldump はutf8
を使用します。 -
--set-charset
設定をオフにします。--skip-set-charset
を指定するのと同様です。 -
出力に
SET NAMES
を追加します。このオプションはデフォルトで有効となっています。default_character_set
SET NAMES
ステートメントを抑制するには、--skip-set-charset
を使用してください。
レプリケーションオプション
mysqldump コマンドは、レプリケーションの構成において、空のインスタンスまたはデータを含むインスタンスをスレーブサーバーに作成するためによく使用されます。次のオプションは、レプリケーションマスターサーバーおよびスレーブサーバーでデータのダンプおよびリストアに適用されます。
-
--dump-slave
オプションで作成されたスレーブダンプで、STOP SLAVE
ステートメントをCHANGE MASTER TO
ステートメントの前に、START SLAVE
ステートメントを出力の最後に、それぞれ追加します。 -
マスターレプリケーションサーバーで、ダンプ操作の実行後にサーバーに
PURGE BINARY LOGS
ステートメントを送信することにより、バイナリログを削除します。このオプションは自動的に--master-data
を有効にします。 -
このオプションは、ダンプされたサーバーと同じマスターを持つスレーブとして別のサーバーをセットアップするために使用できるダンプファイルを生成するために、レプリケーションスレーブサーバーをダンプするために使用することを除き、
--master-data
と同様です。これにより、ダンプされたスレーブのマスターのバイナリログ座標 (ファイル名とファイル位置) を示すCHANGE MASTER TO
ステートメントがダンプ出力に追加されます。これらは、スレーブがレプリケーションを開始するマスターサーバーの座標です。--dump-slave
を使用すると、座標は--master-data
オプションのようにダンプされたサーバーのものではなく使用されるマスターのものになります。さらに、このオプションを指定すると--master-data
オプションが使用されている場合はオーバーライドされ、実質上無視されるようになります。オプション値は
--master-data
と同様に処理され (値を設定しないか、1 を設定するとCHANGE MASTER TO
ステートメントがダンプに書き込まれ、2 を設定するとステートメントは書き込まれますが SQL コメントで囲まれます)、ほかのオプションを有効または無効にする点およびロッキングの処理において、--master-data
と同様の効果があります。このオプションを使用すると、mysqldump はダンプ前にスレーブ SQL スレッドを終了し、ダンプ後に再起動します。
--dump-slave
とともに、--apply-slave-statements
オプションおよび--include-master-host-port
オプションも使用できます。 -
--dump-slave
を使用して生成されたスレーブダンプ内のCHANGE MASTER TO
ステートメントに、スレーブのマスターのホスト名および TCP/IP ポート番号のMASTER_HOST
オプションおよびMASTER_PORT
オプションを追加します。 -
マスターレプリケーションサーバーをダンプして、別のサーバーをマスターのスレーブとして設定するために使用できるダンプファイルを生成する場合に、このオプションを使用します。これにより、ダンプされたサーバーのバイナリログ座標 (ファイル名とファイル位置) を示す
CHANGE MASTER TO
ステートメントがダンプ出力に追加されます。これらは、ダンプファイルをスレーブにロードしたあとで、スレーブがレプリケーションを開始するマスターサーバーの座標です。オプションの値が 2 の場合、
CHANGE MASTER TO
ステートメントは SQL コメントとして書き込まれるため、情報提供の意味しかなく、ダンプファイルがリロードされるときには何の効果もありません。オプション値が 1 の場合、ステートメントはコメントとしては書き込まれず、ダンプファイルがリロードされるときに実行されます。オプション値が指定されていない場合は、デフォルト値は 1 です。このオプションには
RELOAD
権限が必要で、バイナリログが有効にされていなければいけません。--master-data
オプションは自動的に--lock-tables
をオフにします。また、--single-transaction
も指定されていない場合は、--lock-all-tables
をオンにします。その場合、ダンプの最初のわずかな時間のみグローバル読み取りロックが取得されます (--single-transaction
の説明を参照してください)。どの場合でも、ログに対するアクションはすべてダンプと同時に発生します。--dump-slave
オプションを使用してマスターの既存のスレーブをダンプすることによって、スレーブをセットアップすることも可能です。--master-data
は、これによってオーバーライドされ、両方のオプションが使用された場合には無視されます。MySQL 5.6.4 より前では、レプリケーションログテーブルのダンプにはこのオプションが必要でした (セクション17.2.2「レプリケーションリレーおよびステータスログ」を参照してください)。
-
このオプションを使用すると、
SET @@GLOBAL.gtid_purged
ステートメントを出力に追加するかどうかを指定することによって、ダンプファイルに書き込まれるグローバルトランザクション ID (GTID) 情報を制御できます。次の表は、許可されるオプション値を示しています。デフォルト値は
AUTO
です。値 意味 OFF
出力に SET
ステートメントを追加しません。ON
出力に SET
ステートメントを追加します。サーバーで GTID が有効になっていない場合は、エラーが発生します。AUTO
サーバーで GTID が有効になっている場合に、出力に SET
ステートメントを追加します。このオプションは MySQL 5.6.9 で追加されました。
形式オプション
次のオプションは、ダンプファイル全体またはダンプファイル内のある種のデータの提示方法を指定します。また、ある種のオプションの情報をダンプファイルに書き込むかどうかも制御します。
-
よりコンパクトな出力を生成します。このオプションは、
--skip-add-drop-table
、--skip-add-locks
、--skip-comments
、--skip-disable-keys
、および--skip-set-charset
オプションを有効にします。 -
古い MySQL サーバーやほかのデータベースシステムとの互換性がより高い出力を生成します。
name
の値はansi
、mysql323
、mysql40
、postgresql
、oracle
、mssql
、db2
、maxdb
、no_key_options
、no_table_options
、またはno_field_options
となります。複数の値を使用する場合は、カンマで区切ります。これらの値は、サーバー SQL モード設定用の対応するオプションと同じ意味を持っています。セクション5.1.7「サーバー SQL モード」を参照してください。このオプションはほかのサーバーとの互換性を保証するものではありません。現在提供されている、ダンプ出力の互換性を向上させるための SQL モード値を有効にするだけです。たとえば、
--compatible=oracle
はデータ型を Oracle 型に対応付けたり、Oracle コメント構文を使用したりしません。このオプションには、バージョン 4.1.0 以降のサーバーが必要です。それよりも古いサーバーでは、何も行われません。
-
カラム名を含む、完全な
INSERT
ステートメントを使用します。 -
MySQL 固有のテーブルオプションを
CREATE TABLE
ステートメントに含めます。 -
--fields-terminated-by=...
,--fields-enclosed-by=...
,--fields-optionally-enclosed-by=...
,--fields-escaped-by=...
これらのオプションは
--tab
オプションとともに使用され、LOAD DATA INFILE
の対応するFIELDS
句と同じ意味を持ちます。セクション13.2.6「LOAD DATA INFILE 構文」を参照してください。 -
16 進表記を使用してバイナリカラムをダンプします (たとえば、
'abc'
は0x616263
となります)。影響を受けるデータ型は、BINARY
型、VARBINARY
型、BLOB
型およびBIT
です。 -
このオプションは
--tab
とともに使用され、LOAD DATA INFILE
の対応するLINES
句と同じ意味を持ちます。セクション13.2.6「LOAD DATA INFILE 構文」を参照してください。 -
識別子 (データベース、テーブル、およびカラム名など) を 「
`
」 文字で囲みます。ANSI_QUOTES
SQL モードが有効な場合、識別子は 「"
」 文字で囲まれます。このオプションはデフォルトで有効となっています。--skip-quote-names
で無効にできますが、このオプションは--compatible
のような--quote-names
を有効にする可能性のあるオプションのあとに指定するようにしてください。 -
--result-file=
,file_name
-r
file_name
指定されたファイルに出力します。このオプションは、Windows 上で改行文字 「
\n
」 が復帰/改行シーケンス 「\r\n
」 に変換されるのを防ぐために使用します。ダンプの生成中にエラーが発生しても、結果ファイルが作成され以前の内容は上書きされます。 -
タブ区切りのテキスト形式データファイルを生成します。mysqldump は、各ダンプテーブルに対して、テーブルを作成する
CREATE TABLE
ステートメントを含む
ファイルを作成し、サーバーはそのデータを含むtbl_name
.sql
ファイルに書き込みます。オプション値はファイルを書き込むディレクトリです。tbl_name
.txt注記このオプションは、mysqldump が mysqld サーバーと同じマシンで動作している場合にのみ使用するようにしてください。ユーザーは
FILE
権限を持っている必要があり、サーバーは指定したディレクトリ内にファイルを書き込む許可を持っていなければいけません。デフォルトでは、
.txt
データファイルはカラム値の間にタブ文字、各行の最後に改行を使用する形式になります。この形式は、--fields-
オプションおよびxxx
--lines-terminated-by
オプションを使用して明示的に指定できます。カラム値は、
--default-character-set
オプションで指定された文字セットに変換されます。 -
このオプションにより、異なるタイムゾーンのサーバー間で
TIMESTAMP
カラムをダンプしてリロードできるようになります。mysqldump はその接続タイムゾーンを UTC に設定し、SET TIME_ZONE='+00:00'
をダンプファイルに追加します。このオプションを使用しないと、TIMESTAMP
カラムはダンプ元およびリロード先のサーバーのローカルタイムゾーンでダンプおよびリロードが実行され、サーバーが異なるタイムゾーンにある場合、値が変更されます。--tz-utc
は、サマータイムによる変更からも保護します。--tz-utc
はデフォルトで有効です。無効にするには、--skip-tz-utc
を使用します。 -
ダンプ出力および整形式 XML を書き出します。
NULL
、'NULL'
、および空の値: このオプションで生成される出力では、column_name
という名前のカラムに関して、NULL
値、空の文字列、および文字列値'NULL'
は次のように互いに区別されます。値: XML 表現: NULL
(不明な値)<field name="
column_name
" xsi:nil="true" />''
(空の文字列)<field name="
column_name
"></field>'NULL'
(文字列値)<field name="
column_name
">NULL</field>mysql クライアントを
--xml
オプションを使用して実行した場合の出力も、前記のルールに従います。(セクション4.5.1.1「mysql のオプション」を参照してください。)mysqldump からの XML 出力には、次に示すように XML 名前空間が含まれます。
shell> mysqldump --xml -u root world City <?xml version="1.0"?> <mysqldump xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <database name="world"> <table_structure name="City"> <field Field="ID" Type="int(11)" Null="NO" Key="PRI" Extra="auto_increment" /> <field Field="Name" Type="char(35)" Null="NO" Key="" Default="" Extra="" /> <field Field="CountryCode" Type="char(3)" Null="NO" Key="" Default="" Extra="" /> <field Field="District" Type="char(20)" Null="NO" Key="" Default="" Extra="" /> <field Field="Population" Type="int(11)" Null="NO" Key="" Default="0" Extra="" /> <key Table="City" Non_unique="0" Key_name="PRIMARY" Seq_in_index="1" Column_name="ID" Collation="A" Cardinality="4079" Null="" Index_type="BTREE" Comment="" /> <options Name="City" Engine="MyISAM" Version="10" Row_format="Fixed" Rows="4079" Avg_row_length="67" Data_length="273293" Max_data_length="18858823439613951" Index_length="43008" Data_free="0" Auto_increment="4080" Create_time="2007-03-31 01:47:01" Update_time="2007-03-31 01:47:02" Collation="latin1_swedish_ci" Create_options="" Comment="" /> </table_structure> <table_data name="City"> <row> <field name="ID">1</field> <field name="Name">Kabul</field> <field name="CountryCode">AFG</field> <field name="District">Kabol</field> <field name="Population">1780000</field> </row> ... <row> <field name="ID">4079</field> <field name="Name">Rafah</field> <field name="CountryCode">PSE</field> <field name="District">Rafah</field> <field name="Population">92020</field> </row> </table_data> </database> </mysqldump>
MySQL 5.6.5 より前では、このオプションを使用すると
--routines
オプションが正しく機能しませんでした。つまり、ストアドルーチン、トリガー、およびイベントは XML 形式でダンプできませんでした。(Bug #11760384、Bug #52792)
フィルタリングオプション
次のオプションは、どのような種類のスキーマオブジェクトがダンプファイルに書き出されるかを、トリガーまたはイベントなどのカテゴリによって制御したり、たとえばダンプするデータベースおよびテーブルを選択して名前によって制御したり、または WHERE
句を使用してテーブルデータから行をフィルタリングして制御したりできます。
-
すべてのデータベース内のすべてのテーブルをダンプします。これは、コマンド行で
--databases
オプションを使用してすべてのデータベース名を指定するのと同じです。MySQL 5.6.4 より前では、このオプションでは
slave_master_info
テーブルおよびslave_relay_log_info
テーブル (セクション17.2.2「レプリケーションリレーおよびステータスログ」を参照してください) は含まれませんでした。 -
複数のデータベースをダンプします。通常、mysqldump は、コマンド行の最初の名前引数をデータベース名として、それに続く名前をテーブル名として処理します。このオプションを使用すると、名前引数をすべてデータベース名として処理します。出力には、各新しいデータベースの前に
CREATE DATABASE
ステートメントおよびUSE
ステートメントが含まれます。 -
ダンプされるデータベースのイベントスケジューライベントを出力に含めます。
-
--ignore-table=
db_name.tbl_name
指定されたテーブルをダンプしません。これはデータベース名とテーブル名を両方指定する必要があります。複数のテーブルを無視するには、このオプションを複数回使用してください。このオプションを使用してビューを無視することもできます。
-
テーブルの行情報を書き出しません (つまり、テーブルの内容をダンプしません)。これは、テーブルの
CREATE TABLE
ステートメントのみをダンプする場合に便利です (たとえば、ダンプファイルをロードしてテーブルの空のコピーを作成する場合など)。 -
ダンプされるデータベースのストアドルーチン (プロシージャーおよび関数) を出力に含めます。このオプションを使用するには、
mysql.proc
テーブルに対するSELECT
権限が必要です。--routines
を使用して生成された出力は、ルーチンの再作成のため、CREATE PROCEDURE
ステートメントおよびCREATE FUNCTION
ステートメントを含んでいます。ただし、これらのステートメントはルーチンの作成および変更のタイムスタンプなどの属性を含みません。つまり、ルーチンがリロードされたとき、リロード時間と等しいタイムスタンプで作成されます。ルーチンを元のタイムスタンプ属性で再作成しなければならない場合は、
--routines
を使用しないでください。代わりに、mysql
データベースの適切な権限を持っている MySQL アカウントを使用して、mysql.proc
テーブルの内容を直接ダンプしてリロードしてください。MySQL 5.6.5 より前では、このオプションは、
--xml
オプションとともに使用した場合には何の効果もありません。(Bug #11760384、Bug #52792) -
--databases
オプションまたは-B
オプションをオーバーライドします。mysqldump は、このオプションに続く名前の引数をすべてテーブル名とみなします。 -
ダンプされる各テーブルのトリガーを出力に含めます。このオプションはデフォルトで有効です。
--skip-triggers
を使用して無効にします。 -
--where='
,where_condition
'-w '
where_condition
'指定された
WHERE
条件で選択される行のみダンプします。条件が、スペースまたはユーザーのコマンドインタプリタにとって特別なその他の文字を含んでいる場合、条件を引用符で囲まなければなりません。例:
--where="user='jimf'" -w"userid>1" -w"userid<1"
パフォーマンスオプション
次のオプションは、特にリストア操作のパフォーマンスにもっとも重要です。大規模なデータセットでは、リストア操作 (ダンプファイル内の INSERT
ステートメントの処理) がもっとも時間のかかる部分です。データを迅速にリストアすることが緊急である場合、事前にステージを計画してパフォーマンスをテストします。時間単位で測定されるリストア時間に対して、InnoDB
のみ、または混在するデータベースでは MySQL Enterprise Backup、または MyISAM
のみのデータベースでは mysqlhotcopy など、代替のバックアップおよびリストアソリューションが望ましい場合もあります。
パフォーマンスは、主にダンプ操作に関して、トランザクションオプションにも影響されます。
-
INSERT DELAYED
構文をサポートする非トランザクションテーブルでは、通常のINSERT
ステートメントではなくそのステートメントを使用します。MySQL 5.6.6 では、
DELAYED
挿入は非推奨であるため、このオプションは将来のリリースで削除されます。 -
テーブルごとに、
INSERT
ステートメントを/*!40000 ALTER TABLE
ステートメントとtbl_name
DISABLE KEYS */;/*!40000 ALTER TABLE
ステートメントで囲みます。これにより、行がすべて挿入されたあとにインデックスが作成されるため、ダンプファイルのロードが高速になります。このオプションは、tbl_name
ENABLE KEYS */;MyISAM
テーブルの一意でないインデックスにのみ効果があります。 -
複数の
VALUES
リストを含む、複数行のINSERT
構文を使用します。これにより、ダンプファイルのサイズが小さくなり、ファイルがリロードされる際の挿入が高速化されます。 -
INSERT
ステートメントではなく、INSERT IGNORE
ステートメントを書き出します。 -
このオプションはデフォルトで有効で、
--add-drop-table
--add-locks
--create-options
--disable-keys
--extended-insert
--lock-tables
--quick
--set-charset
の組み合わせの短縮形です。高速ダンプ操作が可能になり、MySQL サーバーに迅速にリロードできるダンプファイルを生成します。--opt
オプションはデフォルトで有効であるため、いくつかのデフォルト設定をオフにする場合のみ、この逆の--skip-opt
を指定します。--opt
に影響されるオプションのサブセットを選択的に有効または無効にする方法は、mysqldump
オプショングループ の説明を参照してください。 -
このオプションは大規模なテーブルのダンプに便利です。これは mysqldump に対して、テーブルのすべての行のセットを取得して、書き出す前にメモリーにバッファリングするのではなく、サーバーから 1 行ずつ行を取得することを強制します。
-
--opt
オプションの説明を参照してください。
トランザクションオプション
次のオプションは、エクスポートされるデータの信頼性と一貫性のために、ダンプ操作のパフォーマンスを犠牲にします。
-
LOCK TABLES
ステートメントとUNLOCK TABLES
ステートメントで各テーブルダンプを囲みます。これにより、ダンプファイルをリロードする際の挿入の速度が向上します。セクション8.2.2.1「INSERT ステートメントの速度」を参照してください。 -
ダンプを始める前に MySQL サーバーログファイルをフラッシュします。このオプションには
RELOAD
権限が必要です。このオプションを--all-databases
オプションと組み合わせて使用すると、ログはダンプされるデータベースごとにフラッシュされます。例外は、--lock-all-tables
、--master-data
、または--single-transaction
を使用する場合です。この場合、ログはすべてのテーブルがロックされた瞬間に対応して一度のみフラッシュされます。ダンプとログのフラッシュを正確に同時に実行するには、--flush-logs
を--lock-all-tables
、--master-data
、または--single-transaction
とともに使用するようにしてください。 -
mysql
データベースのダンプ後に、ダンプ出力にFLUSH PRIVILEGES
ステートメントを追加します。ダンプにmysql
データベースおよびmysql
データベース内のデータに依存するその他のすべてのデータベースが含まれている場合には、正しいリストアのために必ずこのオプションを使用するようにしてください。 -
データベース内のテーブルをすべてロックします。これは全ダンプの期間、グローバル読み取りロックを取得することで達成されます。このオプションにより、
--single-transaction
および--lock-tables
は自動的にオフになります。 -
ダンプされる各データベースに対して、ダンプするすべてのテーブルをダンプ前にロックします。
MyISAM
テーブルの場合には、並列挿入を許可するため、テーブルはREAD LOCAL
でロックされます。InnoDB
などのトランザクションテーブルの場合は、--single-transaction
はテーブルをロックする必要がまったくないため、--lock-tables
よりはるかに適したオプションです。--lock-tables
は各データベースに対して個別にテーブルをロックするため、このオプションではダンプファイル内のテーブルがデータベース間で論理的に一貫していることは保証されません。異なるデータベース内のテーブルは完全に異なる状態でダンプされることがあります。--opt
など、一部のオプションは--lock-tables
を自動的に有効にします。これをオーバーライドするには、--skip-lock-tables
をオプションリストの最後に使用します。 -
ダンプされるテーブルごとに、
INSERT
ステートメントをSET autocommit = 0
ステートメントとCOMMIT
ステートメントで囲みます。 -
各テーブルの行を、主キーまたは最初の一意のインデックス (このようなインデックスが存在する場合) でソートしてダンプします。これは、
InnoDB
テーブルにロードされるMyISAM
テーブルをダンプする場合に便利ですが、ダンプ操作にかかる時間がかなり長くなります。 -
--shared-memory-base-name=
name
Windows で、共有メモリーを使用して作成されるローカルサーバーへの接続の共有メモリー名。デフォルト値は
MYSQL
です。共有メモリー名では大文字と小文字を区別します。共有メモリー接続を可能にするには、サーバーは
--shared-memory
オプションで起動する必要があります。 -
このオプションは、データのダンプ前に、トランザクション分離モードを
REPEATABLE READ
に設定し、START TRANSACTION
SQL ステートメントをサーバーに送信します。これは、InnoDB
などのトランザクションテーブルの場合にかぎって便利です。その場合、アプリケーションをブロックすることなく、START TRANSACTION
が発行された時点のデータベースの一貫した状態をダンプするからです。このオプションを使用する場合、一貫した状態でダンプされるのは
InnoDB
テーブルのみだということに留意してください。たとえば、このオプションの使用中にダンプされたMyISAM
テーブルまたはMEMORY
テーブルは状態が変化する可能性があります。--single-transaction
ダンプの処理中、ダンプファイルが正当である (テーブルの内容とバイナリログ座標が正しい) ことを保証するために、ほかの接続でALTER TABLE
、CREATE TABLE
、DROP TABLE
、RENAME TABLE
、TRUNCATE TABLE
ステートメントを使用しないようにしてください。一貫性読み取りはこれらのステートメントから分離されないため、ダンプされるテーブルでこれらを使用すると、mysqldump によって実行され、テーブルの内容を取得するSELECT
が、正しくない内容を取得したり失敗したりすることがあります。--single-transaction
オプションおよび--lock-tables
オプションは相互に排他的です。これは、保留中のトランザクションがLOCK TABLES
により暗黙的にコミットされるためです。大規模なテーブルをダンプするには、
--single-transaction
オプションを--quick
オプションと組み合わせてください。
オプショングループ
--opt
オプションは、高速なダンプ操作を実行するために協働するいくつかの設定をオンにします。--opt
はデフォルトでオンであるため、これらの設定はすべてデフォルトでオンです。したがって、--opt
を指定することは、あるとしてもまれです。代わりに、--skip-opt
を指定してこれらの設定をグループとしてオフにし、そのあと、コマンド行で関連するオプションを指定して特定の設定を再度有効にできます。--compact
オプションは、オプションのステートメントおよびコメントが出力に現れるかどうかを制御するいくつかの設定をオフにします。この場合も、このオプションに、特定の設定を再度有効にするその他のオプションを続けたり、--skip-compact
の形式を使用してすべての設定をオンにしたりできます。
グループオプションの一部を選択的に効果を有効または無効にする場合、オプションは前から後ろへの順で処理されるため、順序が重要です。たとえば、--disable-keys
--lock-tables
--skip-opt
では意図している効果を得られません。--skip-opt
だけの場合と同じになります。
例
データベース全体のバックアップを作成するには:
shell> mysqldump db_name > backup-file.sql
ダンプファイルをサーバーにロードするには:
shell> mysql db_name < backup-file.sql
ダンプファイルをリロードする別の方法:
shell> mysql -e "source /path-to-backup/backup-file.sql" db_name
mysqldump は、1 つの MySQL サーバーから別のサーバーにデータをコピーすることでデータベースを移入するのに非常に便利です。
shell> mysqldump --opt db_name | mysql --host=remote_host -C db_name
複数のデータベースを 1 つのコマンドでダンプできます。
shell> mysqldump --databases db_name1 [db_name2 ...] > my_databases.sql
すべてのデータベースをダンプするには、--all-databases
オプションを使用します。
shell> mysqldump --all-databases > all_databases.sql
InnoDB
テーブルに関して、mysqldump はオンラインバックアップの作成方法を提供します。
shell> mysqldump --all-databases --master-data --single-transaction > all_databases.sql
このバックアップでは、ダンプの最初で (FLUSH TABLES WITH READ LOCK
を使用して) すべてのテーブルに対するグローバル読み取りロックが取得されます。このロックが取得されるとすぐに、バイナリログの座標が読み取られ、ロックが解除されます。FLUSH
ステートメントが発行されたときに長い更新ステートメントが実行中の場合、MySQL サーバーはそれらのステートメントが終わるまで停止する可能性があります。そのあと、ダンプはロックがなくなり、テーブルの読み取りと書き込みを妨げることはなくなります。MySQL サーバーが受信する更新ステートメントが (実行時間の点で) 短い場合、更新の数が多くても最初のロック時間はさほど気にならないはずです。
ポイントインタイムリカバリ (または 「ロールフォワード」、これは古いバックアップをリストアし、そのバックアップ後に発生した変更を再現する必要がある場合) は、バイナリログを交替させる (セクション5.2.4「バイナリログ」を参照してください) か、または少なくともダンプが対応しているバイナリログ座標を知っていると便利な場合があります。
shell> mysqldump --all-databases --master-data=2 > all_databases.sql
または:
shell> mysqldump --all-databases --flush-logs --master-data=2
> all_databases.sql
--master-data
オプションおよび --single-transaction
オプションは同時に使用できます。これは、テーブルが InnoDB
ストレージエンジンを使用して保存されている場合に、ポイントインタイムリカバリの前に使用するのに適したオンラインバックアップを作成する便利な方法を提供します。
バックアップ作成の詳細は、セクション7.2「データベースバックアップ方法」とセクション7.3「バックアップおよびリカバリ戦略の例」を参照してください。
いくつかの機能を除いて
--opt
の効果を選択するには、除く各機能に対して--skip
オプションを選択します。拡張挿入およびメモリーバッファリングを無効にするには、--opt
--skip-extended-insert
--skip-quick
を使用します。(--opt
はデフォルトでオンであるため、実際には--skip-extended-insert
--skip-quick
で十分です。)インデックスの無効化とテーブルのロックを除くすべての機能に関して
--opt
を反転するには、--skip-opt
--disable-keys
--lock-tables
を使用します。
制約
mysqldump は、デフォルトでは INFORMATION_SCHEMA
データベースおよび performance_schema
データベースをダンプしません。これらのいずれかをダンプするには、コマンド行で明示的に指定し、--skip-lock-tables
オプションも使用します。--databases
オプションでも指定できます。
mysqldump は、MySQL Cluster ndbinfo
情報データベースをダンプしません。
MySQL 5.6.6 より前では、mysqldump は mysql
データベースのダンプとして general_log
テーブルも slow_query_log
テーブルもダンプしません。5.6.6 以降では、ダンプにはそれらのテーブルを再作成するためのステートメントが含まれているため、ダンプファイルを再ロードしたあとにそれらのテーブルが失われません。ログテーブルの内容はダンプされません。
権限が不十分なためビューのバックアップに問題が生じる場合は、セクションD.5「ビューの制約」の回避策を参照してください。