mysqldump クライアントユーティリティは logical backups を実行し、元のデータベースオブジェクト定義およびテーブルデータを再現するために実行できる一連の SQL ステートメントを生成します。 別の SQL サーバーにバックアップまたは転送するために、1 つ以上の MySQL データベースをダンプします。 mysqldump コマンドは、CSV、その他の区切り文字で区切られたテキスト、または XML 形式でも出力を生成できます。
複数のスレッド、ファイル圧縮、進捗情報の表示、および Oracle Cloud Infrastructure Object Storage ストリーミングや MySQL データベースサービス 互換性チェックおよび変更などのクラウド機能で並列ダンプを提供する MySQL Shell dump utilities の使用を検討してください。 ダンプは、MySQL Shell load dump utilities を使用して MySQL Server インスタンスまたは MySQL データベースサービス DB システムに簡単にインポートできます。 MySQL Shell のインストール手順は、here にあります。
mysqldump には、ダンプされたテーブルに対する SELECT
以上の権限、ダンプされたビューに対する SHOW VIEW
、ダンプされたトリガーに対する TRIGGER
、--single-transaction
オプションが使用されていない場合 LOCK TABLES
、および (MySQL 8.0.21 時点で)--no-tablespaces
オプションが使用されなければ、PROCESS
が必要です。 オプションの説明に示すように、一部のオプションではその他の権限が必要な場合があります。
ダンプファイルをリロードするには、ダンプファイルに含まれているステートメントを実行するために必要な権限 (それらのステートメントによって作成されたオブジェクトに対する適切な CREATE
権限など) が必要です。
mysqldump 出力には、データベースの照合順序を変更する ALTER DATABASE
ステートメントを含めることができます。 これらは、ストアドプログラムをダンプする際に文字のエンコードを維持するために使用できます。 このようなステートメントを含むダンプファイルをリロードするには、影響されるデータベースに対する ALTER
権限が必要です。
Windows で出力リダイレクトを使用して PowerShell を使用して作成されたダンプは、UTF-16 エンコーディングを持つファイルを作成します:
shell> mysqldump [options] > dump.sql
ただし、UTF-16 は接続文字セットとして許可されていないため (許可されていないクライアント文字セット を参照)、ダンプファイルを正しくロードできません。 この問題を回避するには、ASCII 形式で出力を作成する --result-file
オプションを使用します:
shell> mysqldump [options] --result-file=dump.sql
パフォーマンスおよびスケーラビリティーに関する考慮事項
mysqldump
の利点には、リストアする前に出力を表示して編集もできるという便利さと柔軟性があります。 開発およびデータベース管理用にデータベースのクローンを作成したり、テスト用に既存のデータベースとわずかに異なるデータベースを作成したりできます。 大量のデータのバックアップのための、高速でスケーラブルなソリューションを意図したものではありません。 データサイズが大量の場合、バックアップのステップにかかる時間が妥当だとしても、SQL ステートメントの再現には、挿入やインデックスの作成などのディスク I/O が含まれるため、データのリストアに非常に長い時間がかかることがあります。
大規模なバックアップとリストアでは、データファイルを高速でリストアできる元の形式でコピーする、物理バックアップの方が適切です。
テーブルが主に
InnoDB
テーブルである場合、またはInnoDB
テーブルとMyISAM
テーブルが混在する場合は、MySQL Enterprise Backup 製品の mysqlbackup コマンドを使用することを検討してください。 (Enterprise サブスクリプションの一部として含まれています。) これにより、最低限の中断でもっともパフォーマンスのよいInnoDB
のバックアップを実行できます。また、MyISAM
およびその他のストレージエンジンからのテーブルもバックアップでき、さまざまなバックアップシナリオに対応するための便利なオプションを多数提供します。 セクション30.2「MySQL Enterprise Backup の概要」を参照してください。
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.2.2「オプションファイルの使用」を参照してください。
表 4.14 「mysqldump のオプション」
オプション名 | 説明 | 導入 | 非推奨 |
---|---|---|---|
--add-drop-database | DROP DATABASE ステートメントを各 CREATE DATABASE ステートメントの前に追加 | ||
--add-drop-table | 各 CREATE TABLE ステートメントの前に DROP 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 サーバーに接続 | ||
--character-sets-dir | 文字セットがインストールされているディレクトリ | ||
--column-statistics | ANALYZE TABLE ステートメントを記述して統計ヒストグラムを生成 | ||
--comments | ダンプファイルへのコメントの追加 | ||
--compact | よりコンパクトな出力を生成 | ||
--compatible | 古い MySQL サーバーやほかのデータベースシステムとの互換性がより高い出力を生成 | ||
--complete-insert | カラム名を含む完全な INSERT ステートメントを使用 | ||
--compress | クライアントとサーバー間で送信される情報をすべて圧縮 | 8.0.18 | |
--compression-algorithms | サーバーへの接続に許可される圧縮アルゴリズム | 8.0.18 | |
--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 | オプショングループのサフィクス値 | ||
--delete-master-logs | マスターレプリケーションサーバーで、ダンプ操作の実行後にバイナリログを削除 | ||
--disable-keys | テーブルごとに、INSERT ステートメントを無効化してキーを有効化するステートメントで囲みます | ||
--dump-date | --comments が指定された場合、ダンプ日を "Dump completed on" コメントとして含める | ||
--dump-slave | スレーブのマスターのバイナリログ座標をリストする CHANGE MASTER ステートメントを含める | ||
--enable-cleartext-plugin | 平文の認証プラグインを有効化 | ||
--events | ダンプされたデータベースからのイベントのダンプ | ||
--extended-insert | 複数行 INSERT 構文の使用 | ||
--fields-enclosed-by | このオプションは --tab オプションとともに使用され、LOAD DATA の対応する句と同じ意味を持ちます | ||
--fields-escaped-by | このオプションは --tab オプションとともに使用され、LOAD DATA の対応する句と同じ意味を持ちます | ||
--fields-optionally-enclosed-by | このオプションは --tab オプションとともに使用され、LOAD DATA の対応する句と同じ意味を持ちます | ||
--fields-terminated-by | このオプションは --tab オプションとともに使用され、LOAD DATA の対応する句と同じ意味を持ちます | ||
--flush-logs | ダンプを開始する前に MySQL サーバーログファイルをフラッシュ | ||
--flush-privileges | mysql データベースのダンプ後に FLUSH PRIVILEGES ステートメントを発行 | ||
--force | テーブルダンプの最中に SQL エラーが発生しても続行します | ||
--get-server-public-key | サーバーから RSA 公開キーをリクエスト | ||
--help | ヘルプメッセージを表示して終了 | ||
--hex-blob | 16 進数表記法を使用したバイナリカラムのダンプ | ||
--host | MySQL サーバーがあるホスト | ||
--ignore-error | 指定されたエラーを無視 | ||
--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 の対応する句と同じ意味を持ちます | ||
--lock-all-tables | データベース内のテーブルをすべてロック | ||
--lock-tables | テーブルをダンプする前にすべてロック | ||
--log-error | 指定されたファイルに警告およびエラーを追加 | ||
--login-path | ログインパスオプションを .mylogin.cnf から読み取り | ||
--master-data | バイナリログファイルの名前と場所を出力に書き込む | ||
--max-allowed-packet | サーバーとの間で送受信するパケットの最大長 | ||
--net-buffer-length | TCP/IP とソケット通信のバッファーサイズ | ||
--network-timeout | ネットワークタイムアウトを増やして、より大きなテーブルダンプを許可 | ||
--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 | ダンプされたデータベースからストアドルーチン (プロシージャーとファンクション) をダンプ | ||
--server-public-key-path | RSA 公開鍵を含むファイルへのパス名 | ||
--set-charset | SET NAMES default_character_set を出力に追加 | ||
--set-gtid-purged | SET @@GLOBAL.GTID_PURGED を出力に追加するかどうか | ||
--shared-memory-base-name | 共有メモリー接続用の共有メモリー名 (Windows のみ) | ||
--show-create-skip-secondary-engine | CREATE TABLE ステートメントから SECONDARY ENGINE 句を除外 | 8.0.18 | |
--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 ソケットファイルまたは Windows 名前付きパイプ | ||
--ssl-ca | 信頼できる SSL 認証局のリストを含むファイル | ||
--ssl-capath | 信頼できる SSL 認証局の証明書ファイルを含むディレクトリ | ||
--ssl-cert | X.509 証明書を含むファイル | ||
--ssl-cipher | 接続の暗号化に許可される暗号 | ||
--ssl-crl | 証明書失効リストを含むファイル | ||
--ssl-crlpath | 証明書失効リストファイルを含むディレクトリ | ||
--ssl-fips-mode | クライアント側で FIPS モードを有効にするかどうか | ||
--ssl-key | X.509 キーを含むファイル | ||
--ssl-mode | サーバーへの接続に必要なセキュリティ状態 | ||
--tab | タブ区切りのデータファイルを生成 | ||
--tables | --databases または -B オプションのオーバーライド | ||
--tls-ciphersuites | 暗号化された接続に許可される TLSv1.3 暗号スイート | 8.0.16 | |
--tls-version | 暗号化された接続に許可される TLS プロトコル | ||
--triggers | ダンプされた各テーブルについて、トリガーをダンプする | ||
--tz-utc | SET TIME_ZONE='+00:00'をダンプファイルに追加 | ||
--user | サーバーへの接続時に使用する MySQL ユーザー名 | ||
--verbose | 冗長モード | ||
--version | バージョン情報を表示して終了 | ||
--where | 指定された WHERE 条件で選択された行のみダンプ | ||
--xml | XML 出力を生成 | ||
--zstd-compression-level | zstd 圧縮を使用するサーバーへの接続の圧縮レベル | 8.0.18 |
接続オプション
mysqldump コマンドは MySQL サーバーにログインして情報を抽出します。 次のオプションは、同じマシンまたはリモートシステム上の MySQL サーバーに接続する方法を指定します。
-
複数のネットワークインタフェースを持つコンピュータで、このオプションを使用して、MySQL サーバーへの接続に使用するインタフェースを選択します。
-
可能であれば、クライアントとサーバーの間で送信されるすべての情報を圧縮します。 セクション4.2.8「接続圧縮制御」を参照してください。
MySQL 8.0.18 では、このオプションは非推奨です。 MySQL の将来のバージョンで削除されることが予想されます。 レガシー接続圧縮の構成を参照してください。
-
--compression-algorithms=
value
サーバーへの接続に許可される圧縮アルゴリズム。 使用可能なアルゴリズムは、
protocol_compression_algorithms
システム変数の場合と同じです。 デフォルト値はuncompressed
です。詳細は、セクション4.2.8「接続圧縮制御」を参照してください。
このオプションは MySQL 8.0.18 で追加されました。
-
使用するクライアント側認証プラグインに関するヒント。 セクション6.2.17「プラガブル認証」を参照してください。
-
mysql_clear_password
平文認証プラグインを有効にします。 (セクション6.4.1.4「クライアント側クリアテキストプラガブル認証」を参照してください。) -
RSA キーペアベースのパスワード交換に必要な公開キーをサーバーにリクエストします。 このオプションは、
caching_sha2_password
認証プラグインで認証されるクライアントに適用されます。 そのプラグインの場合、サーバーは要求されないかぎり公開鍵を送信しません。 このオプションは、そのプラグインで認証されないアカウントでは無視されます。 クライアントがセキュアな接続を使用してサーバーに接続する場合と同様に、RSA ベースのパスワード交換を使用しない場合も無視されます。--server-public-key-path=
が指定され、有効な公開キーファイルが指定されている場合は、file_name
--get-server-public-key
よりも優先されます。caching_sha2_password
プラグインの詳細は、セクション6.4.1.2「SHA-2 プラガブル認証のキャッシュ」 を参照してください。 -
--host=
,host_name
-h
host_name
与えられたホスト上の MySQL サーバーからデータをダンプします。 デフォルトホストは
localhost
です。 -
.mylogin.cnf
ログインパスファイルの指定されたログインパスからオプションを読み取ります。 「「ログインパス」」は、接続先の MySQL サーバーおよび認証に使用するアカウントを指定するオプションを含むオプショングループです。 ログインパスファイルを作成または変更するには、mysql_config_editor ユーティリティを使用します。 セクション4.6.7「mysql_config_editor — MySQL 構成ユーティリティー」を参照してください。このオプションおよびその他のオプションファイルオプションの詳細は、セクション4.2.2.3「オプションファイルの処理に影響するコマンド行オプション」 を参照してください。
-
--password[=
,password
]-p[
password
]サーバーへの接続に使用される MySQL アカウントのパスワード。 パスワード値はオプションです。 指定しない場合、mysqldump によってプロンプトが表示されます。 指定する場合は、
--password=
または-p
とそれに続くパスワードの間にスペースなしが存在する必要があります。 パスワードオプションを指定しない場合、デフォルトではパスワードは送信されません。コマンド行でのパスワード指定は、セキュアでないと考えるべきです。 コマンド行でパスワードを指定しないようにするには、オプションファイルを使用します。 セクション6.1.2.1「パスワードセキュリティーのためのエンドユーザーガイドライン」を参照してください。
パスワードがなく、mysqldump でパスワードの入力を求められないように明示的に指定するには、
--skip-password
オプションを使用します。 -
Windows で、名前付きパイプを使用してサーバーに接続します。 このオプションは、ネームパイプ接続をサポートするために
named_pipe
システム変数を有効にしてサーバーを起動した場合にのみ適用されます。 また、接続を行うユーザーは、named_pipe_full_access_group
システム変数で指定された Windows グループのメンバーである必要があります。 -
プラグインを検索するディレクトリ。 このオプションは、
--default-auth
オプションを使用して認証プラグインを指定しても、mysqldump がそれを検出しない場合に指定します。 セクション6.2.17「プラガブル認証」を参照してください。 -
TCP/IP 接続の場合、使用するポート番号。
-
--protocol={TCP|SOCKET|PIPE|MEMORY}
サーバーへの接続に使用するトランスポートプロトコル。 これは、他の接続パラメータが通常、必要なプロトコル以外のプロトコルを使用する場合に便利です。 許可される値の詳細は、セクション4.2.7「接続トランスポートプロトコル」を参照してください。
-
--server-public-key-path=
file_name
RSA キーペアベースのパスワード交換のためにサーバーが必要とする公開キーのクライアント側コピーを含む、PEM 形式のファイルへのパス名。 このオプションは、
sha256_password
またはcaching_sha2_password
認証プラグインで認証されるクライアントに適用されます。 これらのプラグインのいずれかで認証されないアカウントでは、このオプションは無視されます。 クライアントがセキュアな接続を使用してサーバーに接続する場合と同様に、RSA ベースのパスワード交換を使用しない場合も無視されます。--server-public-key-path=
が指定され、有効な公開キーファイルが指定されている場合は、file_name
--get-server-public-key
よりも優先されます。sha256_password
の場合、このオプションは、MySQL が OpenSSL を使用して構築された場合にのみ適用されます。sha256_password
およびcaching_sha2_password
プラグインの詳細は、セクション6.4.1.3「SHA-256 プラガブル認証」 および セクション6.4.1.2「SHA-2 プラガブル認証のキャッシュ」 を参照してください。 -
localhost
への接続用に使用する、Unix ソケットファイル、または Windows では使用する名前付きパイプの名前。Windows では、このオプションは、名前付きパイプ接続をサポートするために
named_pipe
システム変数を有効にしてサーバーを起動した場合にのみ適用されます。 また、接続を行うユーザーは、named_pipe_full_access_group
システム変数で指定された Windows グループのメンバーである必要があります。 -
--ssl
で始まるオプションは、SSL を使用してサーバーに接続するかどうかを指定し、SSL 鍵および証明書を検索する場所を指定します。 暗号化接続のコマンドオプションを参照してください。 -
--ssl-fips-mode={OFF|ON|STRICT}
クライアント側で FIPS モードを有効にするかどうかを制御します。
--ssl-fips-mode
オプションは、暗号化された接続の確立には使用されず、許可する暗号化操作に影響する点で、他の--ssl-
オプションとは異なります。 セクション6.8「FIPS のサポート」を参照してください。xxx
次の
--ssl-fips-mode
値を使用できます:OFF
: FIPS モードを無効にします。ON
: FIPS モードを有効にします。STRICT
: 「strict」 FIPS モードを有効にします。
注記OpenSSL FIPS オブジェクトモジュールが使用できない場合、
--ssl-fips-mode
に許可される値はOFF
のみです。 この場合、--ssl-fips-mode
をON
またはSTRICT
に設定すると、クライアントは起動時に警告を生成し、FIPS 以外のモードで動作します。 -
--tls-ciphersuites=
ciphersuite_list
TLSv1.3 を使用する暗号化された接続に許可される暗号スイート。 値は、コロンで区切られた 1 つ以上の暗号スイート名のリストです。 このオプションに指定できる暗号スイートは、MySQL のコンパイルに使用される SSL ライブラリによって異なります。 詳細は、セクション6.3.2「暗号化された接続 TLS プロトコルおよび暗号」を参照してください。
このオプションは MySQL 8.0.16 で追加されました。
-
暗号化された接続に許可される TLS プロトコル。 値は、1 つまたは複数のコンマ区切りプロトコル名のリストです。 このオプションに指定できるプロトコルは、MySQL のコンパイルに使用される SSL ライブラリによって異なります。 詳細は、セクション6.3.2「暗号化された接続 TLS プロトコルおよび暗号」を参照してください。
-
--user=
,user_name
-u
user_name
サーバーへの接続に使用する MySQL アカウントのユーザー名。
-
--zstd-compression-level=
level
zstd
圧縮アルゴリズムを使用するサーバーへの接続に使用する圧縮レベル。 許可されるレベルは 1 から 22 で、大きい値は圧縮レベルの増加を示します。 デフォルトのzstd
圧縮レベルは 3 です。 圧縮レベルの設定は、zstd
圧縮を使用しない接続には影響しません。詳細は、セクション4.2.8「接続圧縮制御」を参照してください。
このオプションは MySQL 8.0.18 で追加されました。
オプションファイルオプション
これらのオプションは、どのオプションファイルを読み取るかを制御するために使用されます。
-
--defaults-extra-file=
file_name
このオプションファイルは、グローバルオプションファイルのあとに読み取りますが、(UNIX では) ユーザーオプションファイルの前に読み取るようにしてください。 ファイルが存在しないかアクセスできない場合、エラーが発生します。
file_name
は、フルパス名でなく相対パス名として指定された場合、現行ディレクトリを基準にして解釈されます。このオプションおよびその他のオプションファイルオプションの詳細は、セクション4.2.2.3「オプションファイルの処理に影響するコマンド行オプション」 を参照してください。
-
指定されたオプションファイルのみ使用します。 ファイルが存在しないかアクセスできない場合、エラーが発生します。
file_name
は、フルパス名でなく相対パス名として指定された場合、現行ディレクトリを基準にして解釈されます。例外:
--defaults-file
でも、クライアントプログラムは.mylogin.cnf
を読み取ります。このオプションおよびその他のオプションファイルオプションの詳細は、セクション4.2.2.3「オプションファイルの処理に影響するコマンド行オプション」 を参照してください。
-
通常のオプショングループだけでなく、通常の名前に
str
のサフィクスが付いたグループも読み取ります。 たとえば、mysqldump は通常[client]
グループおよび[mysqldump]
グループを読み取ります。--defaults-group-suffix=_other
オプションを指定した場合、mysqldump は[client_other]
グループおよび[mysqldump_other]
グループも読み取ります。このオプションおよびその他のオプションファイルオプションの詳細は、セクション4.2.2.3「オプションファイルの処理に影響するコマンド行オプション」 を参照してください。
-
オプションファイルを読み取りません。 オプションファイルから不明のオプションを読み取ることが原因でプログラムの起動に失敗する場合、
--no-defaults
を使用して、オプションを読み取らないようにできます。例外として、
.mylogin.cnf
ファイルは、存在する場合はすべての場合に読み取られます。 これにより、--no-defaults
が使用された場合にも、コマンド行よりも安全な方法でパスワードを指定できます。(.mylogin.cnf
は mysql_config_editor ユーティリティーによって作成されます。 セクション4.6.7「mysql_config_editor — MySQL 構成ユーティリティー」を参照してください)。このオプションおよびその他のオプションファイルオプションの詳細は、セクション4.2.2.3「オプションファイルの処理に影響するコマンド行オプション」 を参照してください。
-
プログラム名と、オプションファイルから受け取るすべてのオプションを出力します。
このオプションおよびその他のオプションファイルオプションの詳細は、セクション4.2.2.3「オプションファイルの処理に影響するコマンド行オプション」 を参照してください。
DDL オプション
mysqldump の使用シナリオには、新しい MySQL インスタンス全体 (データベーステーブルを含む) のセットアップ、および既存のインスタンス内部のデータを既存のデータベースおよびテーブルで置換することが含まれます。 次のオプションを使用すると、ダンプファイル内にさまざまな DDL ステートメントをエンコードすることによって、ダンプをリストアする際に何を削除し何をセットアップするのかを指定できます。
-
各
CREATE DATABASE
ステートメントの前にDROP DATABASE
ステートメントを記述します。 通常このオプションは、--all-databases
オプションまたは--databases
オプションとともに使用されます。これらのオプションのいずれかを指定しないとCREATE DATABASE
ステートメントが書き込まれないからです。注記MySQL 8.0 では、
mysql
スキーマはエンドユーザーが削除できないシステムスキーマとみなされます。--add-drop-database
が--all-databases
または--databases
とともに使用され、ダンプするスキーマのリストにmysql
が含まれている場合、ダンプファイルにはダンプファイルのリロード時にエラーを引き起こすDROP DATABASE `mysql`
ステートメントが含まれます。かわりに、
--add-drop-database
を使用するには、ダンプするスキーマのリストとともに--databases
を使用します。このリストにはmysql
は含まれません。 -
各
CREATE TABLE
ステートメントの前にDROP TABLE
ステートメントを記述します。 -
各
CREATE TRIGGER
ステートメントの前にDROP TRIGGER
ステートメントを記述します。 -
NDB
テーブルが使用するテーブルスペースを作成するために必要なすべての SQL ステートメントをテーブルダンプに追加します。 そうしないと、この情報は mysqldump の出力には含まれません。 このオプションは現在、「NDB 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
です。このオプションは、MySQL が
WITH_DEBUG
を使用して構築された場合にのみ使用できます。 Oracle によって提供される MySQL リリースバイナリは、このオプションを使用して構築されません。 -
プログラムの終了時に、デバッグ情報を出力します。
このオプションは、MySQL が
WITH_DEBUG
を使用して構築された場合にのみ使用できます。 Oracle によって提供される MySQL リリースバイナリは、このオプションを使用して構築されません。 -
プログラムの終了時に、デバッグ情報とメモリーおよび CPU 使用率の統計を出力します。
このオプションは、MySQL が
WITH_DEBUG
を使用して構築された場合にのみ使用できます。 Oracle によって提供される MySQL リリースバイナリは、このオプションを使用して構築されません。 -
--comments
オプションが指定された場合、mysqldump はダンプの最後に次の形式でコメントを生成します。-- Dump completed on DATE
ただし、別のときに取られたダンプファイルが、日付以外のデータがまったく同じでも日付のために異なって見えます。
--dump-date
および--skip-dump-date
は、コメントに日付を追加するかどうかを制御します。 デフォルトは--dump-date
(日付をコメントに含める) です。--skip-dump-date
は日付の出力を抑制します。 -
すべてのエラーを無視します。テーブルダンプ中に SQL エラーが発生した場合でも続行します。
このオプションの使い方の 1 つとして、削除されたテーブルをビュー定義が参照するために無効になっているビューを検出したときにも、mysqldump が実行を続けるようにすることです。
--force
を指定しないと、mysqldump はエラーメッセージで終了します。--force
を使用すると、mysqldump はエラーメッセージを出力しますが、さらにビュー定義を含む SQL コメントをダンプ出力に書き込み、実行を継続します。特定のエラーを無視するために
--ignore-error
オプションも指定されている場合は、--force
が優先されます。 -
警告およびエラーを、指名されたファイルに追加することによってログに記録します。 デフォルトでは、ロギングを行いません。
-
--comments
オプションの説明を参照してください。 -
冗長モード。 プログラムの動作についてより多くの情報を出力します。
ヘルプオプション
次のオプションは、mysqldump コマンド自身に関する情報を表示します。
国際化オプション
次のオプションは、mysqldump コマンドが各国語の設定で文字データを表現する方法を変更します。
-
文字セットがインストールされているディレクトリ。 セクション10.15「文字セットの構成」を参照してください。
-
--default-character-set=
charset_name
charset_name
をデフォルト文字セットとして使用します。 セクション10.15「文字セットの構成」を参照してください。 文字セットが指定されていない場合、mysqldump はutf8
を使用します。 -
--set-charset
設定をオフにします。--skip-set-charset
を指定するのと同様です。 -
SET NAMES
を出力に書き込みます。 このオプションはデフォルトで有効となっています。default_character_set
SET NAMES
ステートメントを抑制するには、--skip-set-charset
を使用してください。
レプリケーションオプション
mysqldump コマンドは、レプリケーション構成のレプリカサーバーに空のインスタンスまたはデータを含むインスタンスを作成するために頻繁に使用されます。 次のオプションは、レプリケーションソースサーバーおよびレプリカ上のデータのダンプと復元に適用されます。
-
--dump-slave
オプションを使用して生成されたレプリカダンプの場合は、バイナリログ座標を持つステートメントの前にSTOP REPLICA | SLAVE
ステートメントを追加し、出力の最後にSTART REPLICA | SLAVE
ステートメントを追加します。 -
レプリケーションソースサーバーで、ダンプ操作の実行後に
PURGE BINARY LOGS
ステートメントをサーバーに送信して、バイナリログを削除します。 このオプションには、RELOAD
権限と、そのステートメントを実行するのに十分な権限が必要です。 このオプションは自動的に--master-data
を有効にします。 -
このオプションは、
--master-data
と似ていますが、ダンプされたサーバーと同じソースを持つレプリカとして別のサーバーを設定するために使用できるダンプファイルを生成するためにレプリカサーバーをダンプするために使用される点が異なります。 ダンプ出力には、ダンプされたレプリカソースのバイナリログ座標 (ファイル名と位置) を示すCHANGE REPLICATION SOURCE TO
ステートメント (MySQL 8.0.23 の場合) またはCHANGE MASTER TO
ステートメント (MySQL 8.0.23 の場合) が含まれます。CHANGE REPLICATION SOURCE TO
ステートメントは、SHOW REPLICA | SLAVE STATUS
出力からRelay_Master_Log_File
およびExec_Master_Log_Pos
の値を読み取り、SOURCE_LOG_FILE
およびSOURCE_LOG_POS
にそれぞれ使用します。 これらは、レプリカがレプリケートを開始するレプリケーションソースサーバーの座標です。注記実行されたリレーログからの一連のトランザクションに一貫性がないと、間違った位置が使用される可能性があります。 詳しくはセクション17.5.1.34「レプリケーションとトランザクションの非一貫性」をご覧ください。
--dump-slave
では、--master-data
オプションと同様に、ダンプされたサーバーの座標ではなくソースの座標が使用されます。 また、このオプションを指定すると、--master-data
オプションがオーバーライドされ (使用されている場合)、事実上無視されます。警告ダンプを適用するサーバーで
gtid_mode=ON
およびMASTER_AUTOPOSITION=1
を使用する場合は、このオプションを使用しないでください。オプション値は、
--master-data
の場合と同様に処理されます。 値を設定しないか、1 に設定すると、(MySQL 8.0.23 の)CHANGE REPLICATION SOURCE TO
ステートメントまたは (MySQL 8.0.23 の前の)CHANGE MASTER TO
ステートメントがダンプに書き込まれます。 2 に設定すると、ステートメントは書き込まれますが、SQL コメントに含まれます。 他のオプションの有効化または無効化、およびロックの処理方法に関しては、--master-data
と同じ効果があります。このオプションにより、mysqldump はダンプの前にレプリケーション SQL スレッドを停止し、その後再起動します。
--dump-slave
は、情報を取得するためにSHOW REPLICA | SLAVE STATUS
ステートメントをサーバーに送信するため、そのステートメントを実行するのに十分な権限が必要です。--dump-slave
とともに、--apply-slave-statements
オプションおよび--include-master-host-port
オプションも使用できます。 -
CHANGE REPLICATION SOURCE TO
ステートメント (MySQL 8.0.23 から) または--dump-slave
オプション付きで生成されたレプリカダンプのCHANGE MASTER TO
ステートメント (MySQL 8.0.23 の前) の場合は、ホスト名にSOURCE_HOST
|MASTER_HOST
およびSOURCE_PORT
|MASTER_PORT
オプション、およびレプリカソースの TCP/IP ポート番号を追加します。 -
このオプションを使用して、レプリケーションソースサーバーをダンプし、別のサーバーをソースのレプリカとして設定するために使用できるダンプファイルを生成します。 ダンプ出力には、ダンプされたサーバーのバイナリログ座標 (ファイル名と位置) を示す
CHANGE REPLICATION SOURCE TO
ステートメント (MySQL 8.0.23 の場合) またはCHANGE MASTER TO
ステートメント (MySQL 8.0.23 の場合) が含まれます。 これらは、ダンプファイルをレプリカにロードした後にレプリカがレプリケートを開始するレプリケーションソースサーバーの座標です。オプション値が 2 の場合、
CHANGE REPLICATION SOURCE TO
|CHANGE MASTER TO
ステートメントは SQL コメントとして書き込まれるため、情報提供のみを目的としており、ダンプファイルがリロードされても効果はありません。 オプション値が 1 の場合、ステートメントはコメントとしては書き込まれず、ダンプファイルがリロードされるときに実行されます。 オプション値が指定されていない場合は、デフォルト値は 1 です。--master-data
は、情報を取得するためにSHOW MASTER STATUS
ステートメントをサーバーに送信するため、そのステートメントを実行するのに十分な権限が必要です。 このオプションにはRELOAD
権限も必要であり、バイナリログを有効にする必要があります。--master-data
オプションは自動的に--lock-tables
をオフにします。 また、--single-transaction
も指定されていない場合は、--lock-all-tables
をオンにします。その場合、ダンプの最初のわずかな時間のみグローバル読み取りロックが取得されます (--single-transaction
の説明を参照してください)。 どの場合でも、ログに対するアクションはすべてダンプと同時に発生します。--dump-slave
オプションを使用してソースの既存のレプリカをダンプすることでレプリカを設定することもできます。このオプションは--master-data
をオーバーライドし、両方のオプションを使用すると無視されます。 -
このオプションは GTID ベースのレプリケーション (
gtid_mode=ON
) を使用するサーバー用です。 ダンプ出力へのSET @@GLOBAL.gtid_purged
ステートメントのインクルードを制御し、ダンプファイルがリロードされるサーバー上のgtid_purged
の値を更新して、ソースサーバーのgtid_executed
システム変数から GTID セットを追加します。gtid_purged
は、サーバーに適用されたが、サーバー上のバイナリログファイルには存在しないすべてのトランザクションの GTID を保持します。したがって、mysqldump はソースサーバーで実行されたトランザクションの GTID を追加するため、ターゲットサーバーはこれらのトランザクションを適用済として記録しますが、バイナリログには記録しません。--set-gtid-purged
はSET @@SESSION.sql_log_bin=0
ステートメントのインクルードも制御します。これにより、ダンプファイルのリロード中にバイナリロギングが無効になります。 このステートメントは、トランザクションの元の GTID が使用されるように、新しい GTID が生成され、実行時にダンプファイル内のトランザクションに割り当てられないようにします。--set-gtid-purged
オプションを設定しない場合、デフォルトでは、バックアップするサーバーで GTID が有効になっており、gtid_executed
システム変数のグローバル値の GTID のセットが空でない場合に、SET @@GLOBAL.gtid_purged
ステートメントがダンプ出力に含まれます。 GTID がサーバーで有効になっている場合は、SET @@SESSION.sql_log_bin=0
ステートメントも含まれます。MySQL 5.6 および 5.7 では、
gtid_executed
およびgtid_purged
が空の場合、gtid_purged
の値を指定された GTID セットに置き換えることができます。 MySQL 8.0 から、gtid_purged
の値を指定された GTID セットに置き換えることも、プラス記号 (+) をステートメントに追加して、gtid_purged
によってすでに保持されている GTID セットに指定された GTID セットを追加することもできます。mysqldump のSET @@GLOBAL.gtid_purged
ステートメントには、MySQL 8.0 からのリリースでダンプファイルがリプレイされるときに有効になるバージョンコメントにプラス記号 (+) が含まれています。つまり、これらのリリースでは、ダンプファイルから設定された GTID が既存のgtid_purged
値に追加されます。 MySQL 5.6 および 5.7 の場合、gtid_purged
の値はダンプファイルの GTID セットに置き換えられます。これは、gtid_executed
が空のセットである場合 (レプリケーションが以前に開始されていない場合、またはレプリケーションが GTID を以前に使用していなかった場合) にのみ発生する可能性があります。SET @@GLOBAL.gtid_purged
ステートメントの動作の詳細は、ダンプファイルがリプレイされるリリースのgtid_purged
の説明を参照してください。SET @@GLOBAL.gtid_purged
ステートメントの mysqldump に含まれる値には、サーバー上のgtid_executed
セット内のすべてのトランザクションの GTID(データベースの抑制された部分を変更したトランザクションや、部分ダンプに含まれていなかったサーバー上のその他のデータベースも含む) が含まれることに注意してください。 これは、ダンプファイルがリプレイされるサーバーでgtid_purged
値が更新された後、ターゲットサーバー上のデータに関連しない GTID が存在することを意味します。 ターゲットサーバーでこれ以上ダンプファイルをリプレイしない場合、余分な GTID によってサーバーの将来の操作で問題が発生することはありませんが、レプリケーショントポロジ内の異なるサーバー上の GTID セットを比較またはリコンサイルすることは困難になります。 同じ GTID (同じオリジンサーバーからの別の部分ダンプなど) を含むターゲットサーバーでさらにダンプファイルをリプレイすると、2 番目のダンプファイル内のSET @@GLOBAL.gtid_purged
ステートメントは失敗します。 この場合は、ダンプファイルをリプレイする前にステートメントを手動で削除するか、ステートメントなしでダンプファイルを出力します。注記MySQL 5.6 および 5.7 では、ダンプファイルにシステムテーブルが含まれている場合、GTID がサーバー (
gtid_mode=ON
) で有効になっているときにダンプファイルをロードすることはお薦めしません。mysqldump は、非トランザクション MyISAM ストレージエンジンを使用するシステムテーブルに対して DML 命令を発行します。GTID が有効になっている場合、この組み合わせは許可されません。ターゲットサーバーで
SET @@GLOBAL.gtid_purged
ステートメントに目的の結果が得られない場合は、出力からステートメントを除外するか、(MySQL 8.0.17) ステートメントを含めて自動的にアクションされないようにコメントアウトできます。 ステートメントを含めることもできますが、必要な結果を得るには、ダンプファイルで手動で編集します。--set-gtid-purged
オプションに使用可能な値は次のとおりです:-
AUTO
デフォルト値。 バックアップするサーバーで GTID が有効になっており、
gtid_executed
が空でない場合は、gtid_executed
からの GTID セットを含むSET @@GLOBAL.gtid_purged
が出力に追加されます。 GTID が有効な場合、SET @@SESSION.sql_log_bin=0
が出力に追加されます。 GTID がサーバーで有効になっていない場合、ステートメントは出力に追加されません。-
OFF
SET @@GLOBAL.gtid_purged
は出力に追加されず、SET @@SESSION.sql_log_bin=0
は出力に追加されません。 GTID が使用されていないサーバーの場合は、このオプションまたはAUTO
を使用します。 GTID が使用されているサーバーでは、必要な GTID セットがターゲットサーバーのgtid_purged
にすでに存在し、変更しないことが確実な場合、または欠落している GTID を手動で識別して追加する予定の場合にのみ、このオプションを使用します。-
ON
バックアップするサーバーで GTID が有効になっている場合、(
gtid_executed
が空でないかぎり)SET @@GLOBAL.gtid_purged
が出力に追加され、SET @@SESSION.sql_log_bin=0
が出力に追加されます。 このオプションを設定しても GTID がサーバーで有効になっていない場合は、エラーが発生します。 GTID が使用されているサーバーの場合は、gtid_executed
の GTID がターゲットサーバーで必要ないことが確実でないかぎり、このオプションまたはAUTO
を使用します。-
COMMENTED
MySQL 8.0.17 から入手できます。 バックアップしているサーバーで GTID が有効になっている場合、(
gtid_executed
が空でないかぎり)SET @@GLOBAL.gtid_purged
が出力に追加されますが、コメントアウトされます。 つまり、gtid_executed
の値は出力で使用できますが、ダンプファイルがリロードされてもアクションは自動的に実行されません。SET @@SESSION.sql_log_bin=0
が出力に追加され、コメントアウトされません。COMMENTED
を使用すると、gtid_executed
セットの使用を手動または自動化で制御できます。 たとえば、アクティブなデータベースがすでに異なる別のサーバーにデータを移行する場合は、これを行うことをお薦めします。
-
形式オプション
次のオプションは、ダンプファイル全体またはダンプファイル内のある種のデータの提示方法を指定します。 また、ある種のオプションの情報をダンプファイルに書き込むかどうかも制御します。
-
よりコンパクトな出力を生成します。 このオプションは、
--skip-add-drop-table
、--skip-add-locks
、--skip-comments
、--skip-disable-keys
、および--skip-set-charset
オプションを有効にします。 -
古い MySQL サーバーやほかのデータベースシステムとの互換性がより高い出力を生成します。 このオプションに指定できる値は
ansi
のみです。これは、サーバー SQL モードを設定するための対応するオプションと同じ意味を持ちます。 セクション5.1.11「サーバー SQL モード」を参照してください。 -
カラム名を含む、完全な
INSERT
ステートメントを使用します。 -
MySQL 固有のテーブルオプションを
CREATE TABLE
ステートメントに含めます。 -
--fields-terminated-by=...
,--fields-enclosed-by=...
,--fields-optionally-enclosed-by=...
,--fields-escaped-by=...
これらのオプションは
--tab
オプションとともに使用され、LOAD DATA
の対応するFIELDS
句と同じ意味を持ちます。 セクション13.2.7「LOAD DATA ステートメント」を参照してください。 -
16 進表記を使用してバイナリカラムをダンプします (たとえば、
'abc'
は0x616263
となります)。 影響を受けるデータ型は、binary
character set で使用する場合、BINARY
,VARBINARY
,BLOB
型、BIT
、すべての空間データ型およびその他の非バイナリデータ型です。 -
このオプションは
--tab
オプションとともに使用され、LOAD DATA
の対応するLINES
句と同じ意味を持ちます。 セクション13.2.7「LOAD DATA ステートメント」を参照してください。 -
識別子 (データベース、テーブル、およびカラム名など) を
`
文字で囲みます。ANSI_QUOTES
SQL モードが有効な場合、識別子は"
文字で囲まれます。 このオプションはデフォルトで有効となっています。--skip-quote-names
で無効にできますが、このオプションは--compatible
のような--quote-names
を有効にする可能性のあるオプションのあとに指定するようにしてください。 -
--result-file=
,file_name
-r
file_name
指定されたファイルに出力を転送します。 ダンプの生成中にエラーが発生しても、結果ファイルが作成され以前の内容は上書きされます。
このオプションは、改行
\n
文字が\r\n
キャリッジリターン/改行シーケンスに変換されないようにするために、Windows で使用する必要があります。 -
--show-create-skip-secondary-engine=
value
CREATE TABLE
ステートメントからSECONDARY ENGINE
句を除外します。 これを行うには、ダンプ操作中にshow_create_table_skip_secondary_engine
システム変数を有効にします。 または、mysqldump を使用する前にshow_create_table_skip_secondary_engine
システム変数を有効にすることもできます。このオプションは MySQL 8.0.18 で追加されました。
show_create_table_skip_secondary_engine
変数をサポートしていない MySQL 8.0.18 より前のリリースで--show-create-skip-secondary-engine
オプションを使用して mysqldump 操作を試行すると、エラーが発生します。 -
タブ区切りのテキスト形式データファイルを生成します。 mysqldump は、各ダンプテーブルに対して、テーブルを作成する
CREATE TABLE
ステートメントを含む
ファイルを作成し、サーバーはそのデータを含むtbl_name
.sql
ファイルに書き込みます。 オプション値はファイルを書き込むディレクトリです。tbl_name
.txt注記このオプションは、mysqldump が mysqld サーバーと同じマシンで動作している場合にのみ使用するようにしてください。 サーバーは指定したディレクトリに
*.txt
ファイルを作成するため、ディレクトリはサーバーによって書込み可能である必要があり、使用する MySQL アカウントにはFILE
権限が必要です。 mysqldump は同じディレクトリに*.sql
を作成するため、システムログインアカウントによって書込み可能である必要があります。デフォルトでは、
.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>
フィルタリングオプション
次のオプションは、どのような種類のスキーマオブジェクトがダンプファイルに書き出されるかを、トリガーまたはイベントなどのカテゴリによって制御したり、たとえばダンプするデータベースおよびテーブルを選択して名前によって制御したり、または WHERE
句を使用してテーブルデータから行をフィルタリングして制御したりできます。
-
すべてのデータベース内のすべてのテーブルをダンプします。 これは、コマンド行で
--databases
オプションを使用してすべてのデータベース名を指定するのと同じです。注記--all-databases
との非互換性の詳細は、--add-drop-database
の説明を参照してください。MySQL 8.0 より前では、mysqldump および mysqlpump の
--routines
および--events
オプションは、--all-databases
オプションの使用時にストアドルーチンおよびイベントを含める必要はありませんでした: ダンプにはmysql
システムデータベースが含まれていたため、ストアドルーチンおよびイベント定義を含むmysql.proc
およびmysql.event
テーブルも含まれていました。 MySQL 8.0 では、mysql.event
テーブルおよびmysql.proc
テーブルは使用されません。 対応するオブジェクトの定義はデータディクショナリテーブルに格納されますが、これらのテーブルはダンプされません。--all-databases
を使用して作成されたダンプにストアドルーチンおよびイベントを含めるには、--routines
および--events
オプションを明示的に使用します。 -
複数のデータベースをダンプします。 通常、mysqldump は、コマンド行の最初の名前引数をデータベース名として、それに続く名前をテーブル名として処理します。 このオプションを使用すると、名前引数をすべてデータベース名として処理します。 出力には、各新しいデータベースの前に
CREATE DATABASE
ステートメントおよびUSE
ステートメントが含まれます。このオプションは、
performance_schema
データベースのダンプに使用できます。通常、--all-databases
オプションでもダンプされません。 (--skip-lock-tables
オプションも使用してください。)注記--databases
との非互換性の詳細は、--add-drop-database
の説明を参照してください。 -
ダンプされるデータベースのイベントスケジューライベントを出力に含めます。 このオプションには、これらのデータベースに対する
EVENT
権限が必要です。--events
を使用して生成される出力には、イベントを作成するためのCREATE EVENT
ステートメントが含まれています。 -
--ignore-error=
error[,error]...
指定されたエラーを無視 オプション値は、mysqldump の実行中に無視するエラーを指定するカンマ区切りのエラー番号のリストです。 すべてのエラーを無視するために
--force
オプションも指定されている場合は、--force
が優先されます。 -
--ignore-table=
db_name.tbl_name
指定されたテーブルをダンプしません。これはデータベース名とテーブル名を両方指定する必要があります。 複数のテーブルを無視するには、このオプションを複数回使用してください。 このオプションを使用してビューを無視することもできます。
-
テーブルの行情報を書き出しません (つまり、テーブルの内容をダンプしません)。 これは、テーブルの
CREATE TABLE
ステートメントのみをダンプする場合に便利です (たとえば、ダンプファイルをロードしてテーブルの空のコピーを作成する場合など)。 -
ダンプされるデータベースのストアドルーチン (プロシージャーおよび関数) を出力に含めます。 このオプションには、グローバル
SELECT
権限が必要です。--routines
を使用して生成される出力には、ルーチンを作成するためのCREATE PROCEDURE
およびCREATE FUNCTION
ステートメントが含まれています。 -
--databases
オプションまたは-B
オプションをオーバーライドします。mysqldump は、このオプションに続く名前の引数をすべてテーブル名とみなします。 -
ダンプされる各テーブルのトリガーを出力に含めます。 このオプションはデフォルトで有効です。
--skip-triggers
を使用して無効にします。テーブルトリガーをダンプできるようにするには、そのテーブルに対する
TRIGGER
権限が必要です。複数のトリガーが許可されます。mysqldump は、ダンプファイルがリロードされたときにトリガーが同じアクティブ化順序で作成されるように、トリガーをアクティブ化順にダンプします。 ただし、mysqldump ダンプファイルに、トリガーイベントとアクション時間が同じテーブルに対する複数のトリガーが含まれている場合、複数のトリガーをサポートしていない古いサーバーにダンプファイルをロードしようとするとエラーが発生します。 (回避策については、Downgrade Notes を参照してください。古いサーバーと互換性を持つようにトリガーを変換できます。)
-
--where='
,where_condition
'-w '
where_condition
'指定された
WHERE
条件で選択される行のみダンプします。 条件が、スペースまたはユーザーのコマンドインタプリタにとって特別なその他の文字を含んでいる場合、条件を引用符で囲まなければなりません。例:
--where="user='jimf'" -w"userid>1" -w"userid<1"
パフォーマンスオプション
次のオプションは、特にリストア操作のパフォーマンスにもっとも重要です。 大規模なデータセットでは、リストア操作 (ダンプファイル内の INSERT
ステートメントの処理) がもっとも時間のかかる部分です。 データを迅速にリストアすることが緊急である場合、事前にステージを計画してパフォーマンスをテストします。 時間単位で測定されたリストア時間の場合は、InnoDB
のみおよび混合使用のデータベース用の MySQL Enterprise Backup など、代替のバックアップおよびリストアソリューションを使用することをお薦めします。
パフォーマンスは、主にダンプ操作に関して、トランザクションオプションにも影響されます。
-
ダンプファイルのリロード時にダンプされたテーブルのヒストグラム統計を生成するために、出力に
ANALYZE TABLE
ステートメントを追加します。 大規模なテーブルのヒストグラム生成には時間がかかる場合があるため、このオプションはデフォルトで無効になっています。 -
テーブルごとに、
INSERT
ステートメントを/*!40000 ALTER TABLE
ステートメントとtbl_name
DISABLE KEYS */;/*!40000 ALTER TABLE
ステートメントで囲みます。 これにより、行がすべて挿入されたあとにインデックスが作成されるため、ダンプファイルのロードが高速になります。 このオプションは、tbl_name
ENABLE KEYS */;MyISAM
テーブルの一意でないインデックスにのみ効果があります。 -
複数の
VALUES
リストを含む複数行構文を使用してINSERT
ステートメントを記述します。 これにより、ダンプファイルのサイズが小さくなり、ファイルがリロードされる際の挿入が高速化されます。 -
INSERT
ステートメントではなく、INSERT IGNORE
ステートメントを書き出します。 -
クライアント/サーバー通信用のバッファーの最大サイズ。 デフォルトは 24M バイト、最大は 1G バイトです。
-
クライアント/サーバー通信用のバッファーの初期サイズ。 (
--extended-insert
または--opt
オプションと同様に) 複数行のINSERT
ステートメントを作成する場合、mysqldump は--net-buffer-length
バイトまでの長さの行を作成します。 この変数を増やす場合は、MySQL サーバーのnet_buffer_length
システム変数の値がこの値以上であることを確認してください。 -
--max-allowed-packet
をその最大値に設定し、ネットワークの読取りおよび書込みタイムアウトを大きな値に設定して、大きなテーブルをダンプできるようにします。 このオプションはデフォルトで有効となっています。 無効にするには、--skip-network-timeout
を使用します。 -
このオプションはデフォルトで有効で、
--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.5.1「INSERT ステートメントの最適化」を参照してください。 -
ダンプを始める前に MySQL サーバーログファイルをフラッシュします。 このオプションには
RELOAD
権限が必要です。 このオプションを--all-databases
オプションと組み合わせて使用すると、ログはダンプされるデータベースごとにフラッシュされます。 例外は、--lock-all-tables
、--master-data
または--single-transaction
の使用時です: この場合、すべてのテーブルがFLUSH TABLES WITH READ LOCK
によってロックされた時点に対応して、ログは一度のみフラッシュされます。 ダンプとログのフラッシュを正確に同時に実行するには、--flush-logs
を--lock-all-tables
、--master-data
、または--single-transaction
とともに使用するようにしてください。 -
mysql
データベースのダンプ後に、ダンプ出力にFLUSH PRIVILEGES
ステートメントを追加します。 ダンプにmysql
データベースおよびmysql
データベース内のデータに依存するその他のすべてのデータベースが含まれている場合には、正しいリストアのために必ずこのオプションを使用するようにしてください。ダンプファイルには
FLUSH PRIVILEGES
ステートメントが含まれているため、ファイルをリロードするには、そのステートメントを実行するのに十分な権限が必要です。注記古いバージョンから MySQL 5.7 以上にアップグレードする場合は、
--flush-privileges
を使用しないでください。 この場合のアップグレード手順については、セクション2.11.4「MySQL 8.0 での変更」 を参照してください。 -
データベース内のテーブルをすべてロックします。 これは全ダンプの期間、グローバル読み取りロックを取得することで達成されます。 このオプションにより、
--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.4.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 は、デフォルトでは performance_schema
または sys
スキーマをダンプしません。 これらのいずれかをダンプするには、コマンドラインで明示的に名前を付けます。 --databases
オプションでも指定できます。 performance_schema
の場合は、--skip-lock-tables
オプションも使用します。
mysqldump は、INFORMATION_SCHEMA
スキーマをダンプしません。
mysqldump は、InnoDB
CREATE TABLESPACE
ステートメントをダンプしません。
mysqldump は NDB Cluster ndbinfo
情報データベースをダンプしません。
mysqldump には、mysql
データベースのダンプ用に general_log
テーブルおよび slow_query_log
テーブルを再作成するステートメントが含まれています。 ログテーブルの内容はダンプされません。
権限が不十分なためビューのバックアップに問題が生じる場合は、セクション25.9「ビューの制約」の回避策を参照してください。