mysqlpump クライアントユーティリティは logical backups を実行し、元のデータベースオブジェクト定義およびテーブルデータを再現するために実行できる一連の SQL ステートメントを生成します。 別の SQL サーバーにバックアップまたは転送するために、1 つ以上の MySQL データベースをダンプします。
複数のスレッド、ファイル圧縮、進捗情報の表示、および Oracle Cloud Infrastructure Object Storage ストリーミングや MySQL データベースサービス 互換性チェックおよび変更などのクラウド機能で並列ダンプを提供する MySQL Shell dump utilities の使用を検討してください。 ダンプは、MySQL Shell load dump utilities を使用して MySQL Server インスタンスまたは MySQL データベースサービス DB システムに簡単にインポートできます。 MySQL Shell のインストール手順は、here にあります。
mysqlpump の機能は次のとおりです:
ダンププロセスを高速化するための、データベースおよびデータベース内のオブジェクトのパラレル処理
ダンプするデータベースおよびデータベースオブジェクト (テーブル、ストアドプログラム、ユーザーアカウント) の制御の向上
mysql
システムデータベースへの挿入としてではなく、アカウント管理ステートメント (CREATE USER
、GRANT
) としてのユーザーアカウントのダンプ圧縮出力を作成する機能
進捗インジケータ (値は推定)
ダンプファイルのリロードでは、行の挿入後にインデックスを追加することで、
InnoDB
テーブルのセカンダリインデックスの作成が高速化されます
mysqlpump は、MySQL 5.7 で導入された MySQL 機能を使用するため、MySQL 5.7 以上で使用することを前提としています。
mysqlpump には、ダンプされたテーブル、ダンプされたビュー用の SHOW VIEW
、ダンプされたトリガー用の TRIGGER
、および --single-transaction
オプションが使用されていない場合は LOCK TABLES
に対する少なくとも SELECT
権限が必要です。 ユーザー定義をダンプするには、mysql
システムデータベースに対する SELECT
権限が必要です。 オプションの説明に示すように、一部のオプションではその他の権限が必要な場合があります。
ダンプファイルをリロードするには、ダンプファイルに含まれているステートメントを実行するために必要な権限 (それらのステートメントによって作成されたオブジェクトに対する適切な CREATE
権限など) が必要です。
Windows で出力リダイレクトを使用して PowerShell を使用して作成されたダンプは、UTF-16 エンコーディングを持つファイルを作成します:
shell> mysqlpump [options] > dump.sql
ただし、UTF-16 は接続文字セットとして許可されていないため (セクション10.4「接続文字セットおよび照合順序」 を参照)、ダンプファイルを正しくロードできません。 この問題を回避するには、ASCII 形式で出力を作成する --result-file
オプションを使用します:
shell> mysqlpump [options] --result-file=dump.sql
mysqlpump の起動構文
デフォルトでは、mysqlpump はすべてのデータベースをダンプします (mysqlpump の制限事項 に記載されている特定の例外を除く)。 この動作を明示的に指定するには、--all-databases
オプションを使用します:
shell> mysqlpump --all-databases
単一のデータベースまたはそのデータベース内の特定のテーブルをダンプするには、コマンドラインでデータベースに名前を付け、オプションでテーブル名を指定します:
shell> mysqlpump db_name
shell> mysqlpump db_name tbl_name1 tbl_name2 ...
すべての名前引数をデータベース名として扱うには、--databases
オプションを使用します:
shell> mysqlpump --databases db_name1 db_name2 ...
デフォルトでは、付与テーブルを含む mysql
システムデータベースをダンプしても、mysqlpump はユーザーアカウント定義をダンプしません。 付与テーブルの内容を論理定義として CREATE USER
および GRANT
ステートメントの形式でダンプするには、--users
オプションを使用して、すべてのデータベースダンプを抑制します:
shell> mysqlpump --exclude-databases=% --users
前述のコマンドの %
は、--exclude-databases
オプションのすべてのデータベース名に一致するワイルドカードです。
mysqlpump では、データベース、テーブル、ストアドプログラムおよびユーザー定義を含めるか除外するためのいくつかのオプションがサポートされています。 mysqlpump オブジェクトの選択を参照してください。
ダンプファイルをリロードするには、ダンプファイルに含まれるステートメントを実行します。 たとえば、mysql クライアントを使用します:
shell> mysqlpump [options] > dump.sql
shell> mysql < dump.sql
次の説明では、その他の mysqlpump の使用例を示します。
mysqlpump でサポートされているオプションのリストを表示するには、コマンド mysqlpump --help を発行します。
mysqlpump オプションのサマリー
mysqlpump では、次のオプションがサポートされています。これらのオプションは、コマンドラインまたはオプションファイルの[mysqlpump]
および[client]
グループで指定できます。 (MySQL 8.0.20 より前は、mysqlpump は[mysqlpump]
ではなく[mysql_dump]
グループを読み取りました。 8.0.20 では、[mysql_dump]
は引き続き受け入れられますが、非推奨になりました。) MySQL プログラムによって使用されるオプションファイルの詳細については、セクション4.2.2.2「オプションファイルの使用」を参照してください。
表 4.16 「mysqlpump のオプション」
オプション名 | 説明 | 導入 | 非推奨 |
---|---|---|---|
--add-drop-database | DROP DATABASE ステートメントを各 CREATE DATABASE ステートメントの前に追加 | ||
--add-drop-table | 各 CREATE TABLE ステートメントの前に DROP TABLE ステートメントを追加 | ||
--add-drop-user | 各 CREATE USER ステートメントの前に DROP USER ステートメントを追加 | ||
--add-locks | LOCK TABLES と UNLOCK TABLES ステートメントで各テーブルダンプを囲む | ||
--all-databases | すべてのデータベースのダンプ | ||
--bind-address | 指定されたネットワークインタフェースを使用して MySQL サーバーに接続 | ||
--character-sets-dir | 文字セットがインストールされているディレクトリ | ||
--column-statistics | ANALYZE TABLE ステートメントを記述して統計ヒストグラムを生成 | ||
--complete-insert | カラム名を含む完全な INSERT ステートメントを使用 | ||
--compress | クライアントとサーバー間で送信される情報をすべて圧縮 | 8.0.18 | |
--compress-output | 出力圧縮アルゴリズム | ||
--compression-algorithms | サーバーへの接続に許可される圧縮アルゴリズム | 8.0.18 | |
--databases | すべての名前引数をデータベース名として解釈 | ||
--debug | デバッグログの書込み | ||
--debug-check | プログラムの終了時にデバッグ情報を出力 | ||
--debug-info | プログラムの終了時に、デバッグ情報、メモリー、および CPU の統計を出力 | ||
--default-auth | 使用する認証プラグイン | ||
--default-character-set | デフォルト文字セットを指定 | ||
--default-parallelism | パラレル処理のデフォルトのスレッド数 | ||
--defaults-extra-file | 通常のオプションファイルに加えて、名前付きオプションファイルを読み取ります | ||
--defaults-file | 指名されたオプションファイルのみを読み取る | ||
--defaults-group-suffix | オプショングループのサフィクス値 | ||
--defer-table-indexes | リロードの場合は、テーブルの行をロードするまでインデックス作成を延期 | ||
--events | ダンプされたデータベースからのイベントのダンプ | ||
--exclude-databases | ダンプから除外するデータベース | ||
--exclude-events | ダンプから除外するイベント | ||
--exclude-routines | ダンプから除外するルーチン | ||
--exclude-tables | ダンプから除外するテーブル | ||
--exclude-triggers | ダンプから除外するトリガー | ||
--exclude-users | ダンプから除外するユーザー | ||
--extended-insert | 複数行 INSERT 構文の使用 | ||
--get-server-public-key | サーバーから RSA 公開キーをリクエスト | ||
--help | ヘルプメッセージを表示して終了 | ||
--hex-blob | 16 進数表記法を使用したバイナリカラムのダンプ | ||
--host | MySQL サーバーがあるホスト | ||
--include-databases | ダンプに含めるデータベース | ||
--include-events | ダンプに含めるイベント | ||
--include-routines | ダンプに含めるルーチン | ||
--include-tables | ダンプに含めるテーブル | ||
--include-triggers | ダンプに含めるトリガー | ||
--include-users | ダンプに含めるユーザー | ||
--insert-ignore | INSERT ステートメントではなく INSERT IGNORE を書き込みます | ||
--log-error-file | 指定されたファイルに警告およびエラーを追加 | ||
--login-path | ログインパスオプションを .mylogin.cnf から読み取り | ||
--max-allowed-packet | サーバーとの間で送受信するパケットの最大長 | ||
--net-buffer-length | TCP/IP とソケット通信のバッファーサイズ | ||
--no-create-db | CREATE DATABASE ステートメントを記述しないでください | ||
--no-create-info | 各ダンプされたテーブルを再作成する CREATE TABLE ステートメントを書き出さない | ||
--no-defaults | オプションファイルを読み取らない | ||
--parallel-schemas | スキーマ処理の並列性の指定 | ||
--password | サーバーに接続する際に使用するパスワード | ||
--plugin-dir | プラグインがインストールされているディレクトリ | ||
--port | 接続用の TCP/IP ポート番号 | ||
--print-defaults | デフォルトオプションの印刷 | ||
--protocol | 使用するトランスポートプロトコル | ||
--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 を出力に追加するかどうか | ||
--single-transaction | 単一トランザクション内のテーブルのダンプ | ||
--skip-definer | VIEW およびストアドプログラム CREATE ステートメントから DEFINER および SQL SECURITY 句を省略 | ||
--skip-dump-rows | テーブルの行をダンプしない | ||
--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 | サーバーへの接続に必要なセキュリティ状態 | ||
--tls-ciphersuites | 暗号化された接続に許可される TLSv1.3 暗号スイート | 8.0.16 | |
--tls-version | 暗号化された接続に許可される TLS プロトコル | ||
--triggers | ダンプされた各テーブルについて、トリガーをダンプする | ||
--tz-utc | SET TIME_ZONE='+00:00'をダンプファイルに追加 | ||
--user | サーバーへの接続時に使用する MySQL ユーザー名 | ||
--users | ユーザーアカウントのダンプ | ||
--version | バージョン情報を表示して終了 | ||
--watch-progress | 進捗インジケータの表示 | ||
--zstd-compression-level | zstd 圧縮を使用するサーバーへの接続の圧縮レベル | 8.0.18 |
mysqlpump オプションの説明
-
ヘルプメッセージを表示して終了します。
-
各
CREATE DATABASE
ステートメントの前にDROP 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 USER
ステートメントの前にDROP USER
ステートメントを記述します。 -
LOCK TABLES
ステートメントとUNLOCK TABLES
ステートメントで各テーブルダンプを囲みます。 これにより、ダンプファイルをリロードする際の挿入の速度が向上します。 セクション8.2.5.1「INSERT ステートメントの最適化」を参照してください。異なるテーブルからの
INSERT
ステートメントをインターリーブでき、あるテーブルに対する挿入の終了後にUNLOCK TABLES
が挿入が残っているテーブルのロックを解放する可能性があるため、このオプションは並列処理では機能しません。--add-locks
と--single-transaction
は相互に排他的です。 -
すべてのデータベースをダンプします (mysqlpump の制限事項 に記載されている特定の例外を除く)。 これは、他に明示的に指定されていない場合のデフォルトの動作です。
--all-databases
と--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
オプションを明示的に使用します。 -
複数のネットワークインタフェースを持つコンピュータで、このオプションを使用して、MySQL サーバーへの接続に使用するインタフェースを選択します。
-
文字セットがインストールされているディレクトリ。 セクション10.15「文字セットの構成」を参照してください。
-
ダンプファイルのリロード時にダンプされたテーブルのヒストグラム統計を生成するために、出力に
ANALYZE TABLE
ステートメントを追加します。 大規模なテーブルのヒストグラム生成には時間がかかる場合があるため、このオプションはデフォルトで無効になっています。 -
カラム名を含む完全な
INSERT
ステートメントを記述します。 -
可能であれば、クライアントとサーバーの間で送信されるすべての情報を圧縮します。 セクション4.2.8「接続圧縮制御」を参照してください。
MySQL 8.0.18 では、このオプションは非推奨です。 MySQL の将来のバージョンで削除されることが予想されます。 レガシー接続圧縮の構成を参照してください。
-
デフォルトでは、mysqlpump は出力を圧縮しません。 このオプションは、指定されたアルゴリズムを使用して出力圧縮を指定します。 許可されるアルゴリズムは、
LZ4
およびZLIB
です。圧縮された出力を解凍するには、適切なユーティリティが必要です。 lz4 および openssl zlib システムコマンドを使用できない場合、MySQL の配布には lz4_decompress および zlib_decompress ユーティリティが含まれ、mysqlpump の出力は
--compress-output=LZ4
および--compress-output=ZLIB
オプションを使用して圧縮されています。 詳細は、セクション4.8.1「lz4_decompress — mysqlpump LZ4-Compressed 出力の解凍」およびセクション4.8.3「zlib_decompress — mysqlpump ZLIB 圧縮出力の解凍」を参照してください。 -
--compression-algorithms=
value
サーバーへの接続に許可される圧縮アルゴリズム。 使用可能なアルゴリズムは、
protocol_compression_algorithms
システム変数の場合と同じです。 デフォルト値はuncompressed
です。詳細は、セクション4.2.8「接続圧縮制御」を参照してください。
このオプションは MySQL 8.0.18 で追加されました。
-
通常、mysqlpump では、コマンドラインの名引数はデータベース名として扱われ、後続の名前はテーブル名として扱われます。 このオプションを使用すると、名前引数をすべてデータベース名として処理します。
CREATE DATABASE
ステートメントは、各新規データベースの前に出力に含まれます。--all-databases
と--databases
は相互に排他的です。注記--databases
との非互換性の詳細は、--add-drop-database
の説明を参照してください。 -
--debug[=
,debug_options
]-# [
debug_options
]デバッグのログを書き込みます。 一般的な
debug_options
文字列はd:t:o,
です。 デフォルトはfile_name
d:t:O,/tmp/mysqlpump.trace
です。このオプションは、MySQL が
WITH_DEBUG
を使用して構築された場合にのみ使用できます。 Oracle によって提供される MySQL リリースバイナリは、このオプションを使用して構築されません。 -
プログラムの終了時に、デバッグ情報を出力します。
このオプションは、MySQL が
WITH_DEBUG
を使用して構築された場合にのみ使用できます。 Oracle によって提供される MySQL リリースバイナリは、このオプションを使用して構築されません。 -
プログラムの終了時に、デバッグ情報とメモリーおよび CPU 使用率の統計を出力します。
このオプションは、MySQL が
WITH_DEBUG
を使用して構築された場合にのみ使用できます。 Oracle によって提供される MySQL リリースバイナリは、このオプションを使用して構築されません。 -
使用するクライアント側認証プラグインに関するヒント。 セクション6.2.17「プラガブル認証」を参照してください。
-
--default-character-set=
charset_name
charset_name
をデフォルト文字セットとして使用します。 セクション10.15「文字セットの構成」を参照してください。 文字セットが指定されていない場合、mysqlpump はutf8
を使用します。 -
各パラレル処理キューのデフォルトのスレッド数。 デフォルトは 2 です。
--parallel-schemas
オプションは並列性にも影響し、デフォルトのスレッド数をオーバーライドするために使用できます。 詳細は、mysqlpump パラレル処理を参照してください。--default-parallelism=0
および--parallel-schemas
オプションがない場合、mysqlpump はシングルスレッドプロセスとして実行され、キューは作成されません。並列性を有効にすると、異なるデータベースからの出力をインターリーブできます。
-
--defaults-extra-file=
file_name
このオプションファイルは、グローバルオプションファイルのあとに読み取りますが、(UNIX では) ユーザーオプションファイルの前に読み取るようにしてください。 ファイルが存在しないかアクセスできない場合、エラーが発生します。
file_name
は、フルパス名でなく相対パス名として指定された場合、現行ディレクトリを基準にして解釈されます。このオプションおよびその他のオプションファイルオプションの詳細は、セクション4.2.2.3「オプションファイルの処理に影響するコマンド行オプション」 を参照してください。
-
指定されたオプションファイルのみ使用します。 ファイルが存在しないかアクセスできない場合、エラーが発生します。
file_name
は、フルパス名でなく相対パス名として指定された場合、現行ディレクトリを基準にして解釈されます。例外:
--defaults-file
でも、クライアントプログラムは.mylogin.cnf
を読み取ります。このオプションおよびその他のオプションファイルオプションの詳細は、セクション4.2.2.3「オプションファイルの処理に影響するコマンド行オプション」 を参照してください。
-
通常のオプショングループだけでなく、通常の名前に
str
のサフィクスが付いたグループも読み取ります。 たとえば、mysqlpump は通常、[client]
および[mysqlpump]
グループを読み取ります。--defaults-group-suffix=_other
オプションが指定されている場合、mysqlpump は[client_other]
および[mysqlpump_other]
グループも読み取ります。このオプションおよびその他のオプションファイルオプションの詳細は、セクション4.2.2.3「オプションファイルの処理に影響するコマンド行オプション」 を参照してください。
-
ダンプ出力で、行がロードされるまで各テーブルのインデックス作成を遅延します。 これはすべてのストレージエンジンで機能しますが、
InnoDB
の場合はセカンダリインデックスにのみ適用されます。このオプションはデフォルトで有効になっています。無効にするには
--skip-defer-table-indexes
を使用します。 -
ダンプされるデータベースのイベントスケジューライベントを出力に含めます。 イベントダンプには、これらのデータベースに対する
EVENT
権限が必要です。--events
を使用して生成される出力には、イベントを作成するためのCREATE EVENT
ステートメントが含まれています。このオプションはデフォルトで有効になっています。無効にするには
--skip-events
を使用します。 -
カンマ区切りのデータベース名のリストである
db_list
内のデータベースはダンプしないでください。 このオプションの複数のインスタンスは加算的です。 詳細は、mysqlpump オブジェクトの選択を参照してください。 -
カンマ区切りのイベント名のリストである
event_list
内のデータベースはダンプしないでください。 このオプションの複数のインスタンスは加算的です。 詳細は、mysqlpump オブジェクトの選択を参照してください。 -
--exclude-routines=
routine_list
カンマ区切りのルーチン (ストアドプロシージャまたはファンクション) 名のリストである
routine_list
内のイベントはダンプしないでください。 このオプションの複数のインスタンスは加算的です。 詳細は、mysqlpump オブジェクトの選択を参照してください。 -
カンマ区切りのテーブル名のリストである
table_list
内のテーブルはダンプしないでください。 このオプションの複数のインスタンスは加算的です。 詳細は、mysqlpump オブジェクトの選択を参照してください。 -
--exclude-triggers=
trigger_list
trigger_list
でトリガーをダンプしないでください。これは、カンマ区切りのトリガー名のリストです。 このオプションの複数のインスタンスは加算的です。 詳細は、mysqlpump オブジェクトの選択を参照してください。 -
カンマ区切りのアカウント名のリストである
user_list
のユーザーアカウントはダンプしないでください。 このオプションの複数のインスタンスは加算的です。 詳細は、mysqlpump オブジェクトの選択を参照してください。 -
複数の
VALUES
リストを含む複数行構文を使用してINSERT
ステートメントを記述します。 これにより、ダンプファイルのサイズが小さくなり、ファイルがリロードされる際の挿入が高速化されます。オプション値は、各
INSERT
ステートメントに含める行数を示します。 デフォルトは 250 です。 値 1 は、テーブルの行ごとに 1 つのINSERT
ステートメントを生成します。 -
RSA キーペアベースのパスワード交換に必要な公開キーをサーバーにリクエストします。 このオプションは、
caching_sha2_password
認証プラグインで認証されるクライアントに適用されます。 そのプラグインの場合、サーバーは要求されないかぎり公開鍵を送信しません。 このオプションは、そのプラグインで認証されないアカウントでは無視されます。 クライアントがセキュアな接続を使用してサーバーに接続する場合と同様に、RSA ベースのパスワード交換を使用しない場合も無視されます。--server-public-key-path=
が指定され、有効な公開キーファイルが指定されている場合は、file_name
--get-server-public-key
よりも優先されます。caching_sha2_password
プラグインの詳細は、セクション6.4.1.2「SHA-2 プラガブル認証のキャッシュ」 を参照してください。 -
16 進表記を使用してバイナリカラムをダンプします (たとえば、
'abc'
は0x616263
となります)。 影響を受けるデータ型は、binary
character set で使用する場合、BINARY
,VARBINARY
,BLOB
型、BIT
、すべての空間データ型およびその他の非バイナリデータ型です。 -
--host=
,host_name
-h
host_name
与えられたホスト上の MySQL サーバーからデータをダンプします。
-
db_list
でデータベースをダンプします。これは、カンマ区切りのデータベース名のリストです。 ダンプには、指定したデータベース内のすべてのオブジェクトが含まれます。 このオプションの複数のインスタンスは加算的です。 詳細は、mysqlpump オブジェクトの選択を参照してください。 -
event_list
でイベントをダンプします。これは、カンマ区切りのイベント名のリストです。 このオプションの複数のインスタンスは加算的です。 詳細は、mysqlpump オブジェクトの選択を参照してください。 -
--include-routines=
routine_list
routine_list
でルーチンをダンプします。これは、コンマ区切りのルーチン (ストアドプロシージャーまたはストアドファンクション) 名のリストです。 このオプションの複数のインスタンスは加算的です。 詳細は、mysqlpump オブジェクトの選択を参照してください。 -
カンマ区切りのテーブル名のリストである
table_list
のテーブルをダンプします。 このオプションの複数のインスタンスは加算的です。 詳細は、mysqlpump オブジェクトの選択を参照してください。 -
--include-triggers=
trigger_list
trigger_list
でトリガーをダンプします。これは、カンマ区切りのトリガー名のリストです。 このオプションの複数のインスタンスは加算的です。 詳細は、mysqlpump オブジェクトの選択を参照してください。 -
user_list
でユーザーアカウントをダンプします。これは、カンマ区切りのユーザー名のリストです。 このオプションの複数のインスタンスは加算的です。 詳細は、mysqlpump オブジェクトの選択を参照してください。 -
INSERT
ステートメントではなく、INSERT IGNORE
ステートメントを書き出します。 -
警告およびエラーを、指名されたファイルに追加することによってログに記録します。 このオプションを指定しない場合、mysqlpump は警告およびエラーを標準エラー出力に書き込みます。
-
.mylogin.cnf
ログインパスファイルの指定されたログインパスからオプションを読み取ります。 「「ログインパス」」は、接続先の MySQL サーバーおよび認証に使用するアカウントを指定するオプションを含むオプショングループです。 ログインパスファイルを作成または変更するには、mysql_config_editor ユーティリティを使用します。 セクション4.6.7「mysql_config_editor — MySQL 構成ユーティリティー」を参照してください。このオプションおよびその他のオプションファイルオプションの詳細は、セクション4.2.2.3「オプションファイルの処理に影響するコマンド行オプション」 を参照してください。
-
クライアント/サーバー通信用のバッファーの最大サイズ。 デフォルトは 24M バイト、最大は 1G バイトです。
-
クライアント/サーバー通信用のバッファーの初期サイズ。 (
--extended-insert
オプションと同様に) 複数行のINSERT
ステートメントを作成する場合、mysqlpump はN
バイトまでの行を作成します。 このオプションを使用して値を増やす場合は、MySQL サーバーのnet_buffer_length
システム変数の値がこの値以上であることを確認してください。 -
それ以外の場合は出力に含まれる可能性のある
CREATE DATABASE
ステートメントを抑制します。 -
ダンプされた各テーブルを作成する
CREATE TABLE
ステートメントを記述しないでください。 -
オプションファイルを読み取りません。 オプションファイルから不明のオプションを読み取ることが原因でプログラムの起動に失敗する場合、
--no-defaults
を使用して、オプションを読み取らないようにすることができます。例外として、
.mylogin.cnf
ファイルは、存在する場合はすべての場合に読み取られます。 これにより、--no-defaults
が使用された場合に、コマンド行よりも安全な方法でパスワードを指定できます。(.mylogin.cnf
は mysql_config_editor ユーティリティーによって作成されます。 セクション4.6.7「mysql_config_editor — MySQL 構成ユーティリティー」を参照してください)。このオプションおよびその他のオプションファイルオプションの詳細は、セクション4.2.2.3「オプションファイルの処理に影響するコマンド行オプション」 を参照してください。
-
--parallel-schemas=[
N
:]db_list
db_list
でデータベースを処理するためのキューを作成します。これは、カンマ区切りのデータベース名のリストです。N
が指定されている場合、キューはN
スレッドを使用します。N
が指定されていない場合、--default-parallelism
オプションによってキュースレッドの数が決定されます。このオプションの複数のインスタンスでは、複数のキューが作成されます。また、mysqlpump では、どの
--parallel-schemas
オプションでも指定されていないデータベースに使用するデフォルトキューが作成され、コマンドオプションでユーザー定義が選択されている場合はユーザー定義がダンプされます。 詳細は、mysqlpump パラレル処理を参照してください。 -
--password[=
,password
]-p[
password
]サーバーへの接続に使用される MySQL アカウントのパスワード。 パスワード値はオプションです。 指定しない場合、mysqlpump によってプロンプトが表示されます。 指定する場合は、
--password=
または-p
とそれに続くパスワードの間にスペースなしが存在する必要があります。 パスワードオプションを指定しない場合、デフォルトではパスワードは送信されません。コマンド行でのパスワード指定は、セキュアでないと考えるべきです。 コマンド行でパスワードを指定しないようにするには、オプションファイルを使用します。 セクション6.1.2.1「パスワードセキュリティーのためのエンドユーザーガイドライン」を参照してください。
パスワードがなく、mysqlpump でパスワードの入力を求められないように明示的に指定するには、
--skip-password
オプションを使用します。 -
プラグインを検索するディレクトリ。 このオプションは、
--default-auth
オプションを使用して認証プラグインを指定しても、mysqlpump がそれを検出しない場合に指定します。 セクション6.2.17「プラガブル認証」を参照してください。 -
TCP/IP 接続の場合、使用するポート番号。
-
プログラム名と、オプションファイルから受け取るすべてのオプションを出力します。
このオプションおよびその他のオプションファイルオプションの詳細は、セクション4.2.2.3「オプションファイルの処理に影響するコマンド行オプション」 を参照してください。
-
--protocol={TCP|SOCKET|PIPE|MEMORY}
サーバーへの接続に使用するトランスポートプロトコル。 これは、他の接続パラメータが通常、必要なプロトコル以外のプロトコルを使用する場合に便利です。 許可される値の詳細は、セクション4.2.7「接続トランスポートプロトコル」を参照してください。
-
INSERT
ステートメントではなくREPLACE
ステートメントを書き込みます。 -
指定されたファイルに出力を転送します。 ダンプの生成中にエラーが発生しても、結果ファイルが作成され以前の内容は上書きされます。
このオプションは、改行
\n
文字が\r\n
キャリッジリターン/改行シーケンスに変換されないようにするために、Windows で使用する必要があります。 -
ダンプされるデータベースのストアドルーチン (プロシージャーおよび関数) を出力に含めます。 このオプションには、グローバル
SELECT
権限が必要です。--routines
を使用して生成される出力には、ルーチンを作成するためのCREATE PROCEDURE
およびCREATE FUNCTION
ステートメントが含まれています。このオプションはデフォルトで有効になっています。無効にするには
--skip-routines
を使用します。 -
--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 プラガブル認証のキャッシュ」 を参照してください。 -
SET NAMES
を出力に書き込みます。default_character_set
このオプションはデフォルトで有効となっています。 これを無効にして
SET NAMES
ステートメントを抑制するには、--skip-set-charset
を使用します。 -
このオプションを使用すると、
SET @@GLOBAL.gtid_purged
ステートメントを出力に追加するかどうかを指定することで、ダンプファイルに書き込まれるグローバルトランザクション ID (GTID) 情報を制御できます。 このオプションを使用すると、ダンプファイルのリロード中にバイナリロギングを無効にするステートメントが出力に書き込まれることもあります。次の表は、許可されるオプション値を示しています。 デフォルト値は
AUTO
です。値 意味 OFF
出力に SET
ステートメントを追加しません。ON
出力に SET
ステートメントを追加します。 サーバーで GTID が有効になっていない場合は、エラーが発生します。AUTO
サーバーで GTID が有効になっている場合に、出力に SET
ステートメントを追加します。--set-gtid-purged
オプションは、ダンプファイルがリロードされるときにバイナリロギングに次の影響を与えます:--set-gtid-purged=OFF
:SET @@SESSION.SQL_LOG_BIN=0;
は出力に追加されません。--set-gtid-purged=ON
:SET @@SESSION.SQL_LOG_BIN=0;
が出力に追加されます。--set-gtid-purged=AUTO
: バックアップするサーバーで GTID が有効になっている場合 (つまり、AUTO
がON
と評価される場合)、SET @@SESSION.SQL_LOG_BIN=0;
が出力に追加されます。
-
このオプションは、データのダンプ前に、トランザクション分離モードを
REPEATABLE READ
に設定し、START TRANSACTION
SQL ステートメントをサーバーに送信します。 これは、InnoDB
などのトランザクションテーブルの場合にかぎって便利です。その場合、アプリケーションをブロックすることなく、START TRANSACTION
が発行された時点のデータベースの一貫した状態をダンプするからです。このオプションを使用する場合、一貫した状態でダンプされるのは
InnoDB
テーブルのみだということに留意してください。 たとえば、このオプションの使用中にダンプされたMyISAM
テーブルまたはMEMORY
テーブルは状態が変化する可能性があります。--single-transaction
ダンプの処理中、ダンプファイルが正当である (テーブルの内容とバイナリログ座標が正しい) ことを保証するために、ほかの接続でALTER TABLE
、CREATE TABLE
、DROP TABLE
、RENAME TABLE
、TRUNCATE TABLE
ステートメントを使用しないようにしてください。 一貫性読み取りはこれらのステートメントから分離されないため、ダンプされるテーブルでこれらを使用すると、mysqlpump によって実行されるSELECT
がテーブルの内容を取得して誤った内容を取得したり、失敗したりする可能性があります。--add-locks
と--single-transaction
は相互に排他的です。 -
ビューおよびストアドプログラムの
CREATE
ステートメントからDEFINER
句およびSQL SECURITY
句を省略します。 ダンプファイルをリロードすると、デフォルトのDEFINER
およびSQL SECURITY
値を使用するオブジェクトが作成されます。 セクション25.6「ストアドオブジェクトのアクセス制御」を参照してください。 -
テーブルの行をダンプしません。
-
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 プロトコルおよび暗号」を参照してください。
-
ダンプされる各テーブルのトリガーを出力に含めます。
このオプションはデフォルトで有効になっています。無効にするには
--skip-triggers
を使用します。 -
このオプションを使用すると、異なるタイムゾーンのサーバー間で
TIMESTAMP
カラムをダンプおよびリロードできます。mysqlpump は、接続タイムゾーンを UTC に設定し、SET TIME_ZONE='+00:00'
をダンプファイルに追加します。 このオプションを指定しない場合、ソースサーバーと宛先サーバーにローカルなタイムゾーンでTIMESTAMP
カラムがダンプおよびリロードされ、サーバーが異なるタイムゾーンにある場合は値が変更される可能性があります。--tz-utc
は、夏時間による変更からも保護します。このオプションはデフォルトで有効になっています。無効にするには
--skip-tz-utc
を使用します。 -
--user=
,user_name
-u
user_name
サーバーへの接続に使用する MySQL アカウントのユーザー名。
-
CREATE USER
およびGRANT
ステートメントの形式でユーザーアカウントを論理定義としてダンプします。ユーザー定義は、
mysql
システムデータベースの付与テーブルに格納されます。 デフォルトでは、mysqlpump は付与テーブルをmysql
データベースダンプに含めません。 付与テーブルの内容を論理定義としてダンプするには、--users
オプションを使用して、すべてのデータベースダンプを抑制します:shell> mysqlpump --exclude-databases=% --users
-
バージョン情報を表示して終了します。
-
テーブル、行およびその他のオブジェクトの完了数と合計数に関する情報を提供する進捗インジケータを定期的に表示します。
このオプションはデフォルトで有効になっています。無効にするには
--skip-watch-progress
を使用します。 -
--zstd-compression-level=
level
zstd
圧縮アルゴリズムを使用するサーバーへの接続に使用する圧縮レベル。 許可されるレベルは 1 から 22 で、大きい値は圧縮レベルの増加を示します。 デフォルトのzstd
圧縮レベルは 3 です。 圧縮レベルの設定は、zstd
圧縮を使用しない接続には影響しません。詳細は、セクション4.2.8「接続圧縮制御」を参照してください。
このオプションは MySQL 8.0.18 で追加されました。
mysqlpump オブジェクトの選択
mysqlpump には、複数のオブジェクトタイプのフィルタリングを可能にし、ダンプするオブジェクトを柔軟に制御できる包含および除外オプションのセットがあります:
--include-databases
および--exclude-databases
は、データベースおよびその中のすべてのオブジェクトに適用されます。--include-tables
および--exclude-tables
はテーブルに適用されます。 これらのオプションは、トリガー固有のオプションが指定されていないかぎり、テーブルに関連付けられたトリガーにも影響します。--include-triggers
および--exclude-triggers
はトリガーに適用されます。--include-routines
および--exclude-routines
は、ストアドプロシージャおよびストアドファンクションに適用されます。 ルーチンオプションがストアドプロシージャ名に一致する場合は、同じ名前のストアドファンクションにも一致します。--include-events
および--exclude-events
は、イベントスケジューライベントに適用されます。--include-users
および--exclude-users
はユーザーアカウントに適用されます。
包含または除外オプションは複数回指定できます。 効果は加法的です。 これらのオプションの順序は関係ありません。
各包含および除外オプションの値は、適切なオブジェクトタイプのカンマ区切りの名前のリストです。 例:
--exclude-databases=test,world
--include-tables=customer,invoice
オブジェクト名にはワイルドカード文字を使用できます:
%
は、ゼロ文字以上の任意のシーケンスに一致します。_
は、任意の単一文字に一致します。
たとえば、--include-tables=t%,__tmp
は、t
で始まるすべてのテーブル名と、tmp
で終わるすべての 5 文字のテーブル名を照合します。
ユーザーの場合、ホスト部分なしで指定された名前は、%
の暗黙的なホストで解釈されます。 たとえば、u1
と u1@%
は同等です。 これは、MySQL で一般的に適用される同値化と同じです (セクション6.2.4「アカウント名の指定」 を参照)。
包含オプションと除外オプションは、次のように相互作用します:
デフォルトでは、包含オプションも除外オプションも指定せずに、mysqlpump はすべてのデータベースをダンプします (mysqlpump の制限事項 に記載されている特定の例外を除く)。
除外オプションが指定されていない場合は、include として指定されたオブジェクトのみがダンプされます。
包含オプションがない場合に除外オプションを指定すると、excluded という名前のオブジェクトを除くすべてのオブジェクトがダンプされます。
包含オプションと除外オプションが指定されている場合、除外されたオブジェクトと含まれているオブジェクトの名前が指定されていないオブジェクトはすべてダンプされません。 他のすべてのオブジェクトはダンプされます。
複数のデータベースがダンプされている場合は、オブジェクト名をデータベース名で修飾することで、特定のデータベース内のテーブル、トリガー、およびルーチンに名前を付けることができます。 次のコマンドは、データベース db1
および db2
をダンプしますが、テーブル db1.t1
および db2.t2
は除外します:
shell> mysqlpump --include-databases=db1,db2 --exclude-tables=db1.t1,db2.t2
次のオプションは、ダンプするデータベースを指定する別の方法を提供します:
-
--all-databases
オプションは、すべてのデータベースをダンプします (mysqlpump の制限事項 に記載されている特定の例外を除く)。 これは、オブジェクトオプションをまったく指定しないことと同等です (デフォルトの mysqlpump アクションでは、すべてをダンプします)。--include-databases=%
は--all-databases
に似ていますが、--all-databases
の例外であるデータベースも含めて、すべてのデータベースをダンプ対象として選択します。 --databases
オプションを使用すると、mysqlpump はすべての名前引数をダンプするデータベースの名前として扱います。 これは、同じデータベースを指定する--include-databases
オプションと同等です。
mysqlpump パラレル処理
mysqlpump では、並列性を使用して同時処理を実現できます。 データベース間の同時実行性 (複数のデータベースを同時にダンプする場合) およびデータベース内の同時実行性 (特定のデータベースから複数のオブジェクトを同時にダンプする場合) を選択できます。
デフォルトでは、mysqlpump は 2 つのスレッドで 1 つのキューを設定します。 追加のキューを作成し、デフォルトキューを含む各キューに割り当てられるスレッドの数を制御できます:
-
--default-parallelism=
では、各キューに使用されるデフォルトのスレッド数を指定します。 このオプションがない場合、N
N
は 2 です。デフォルトキューでは、常にデフォルトのスレッド数が使用されます。 その他のキューでは、特に指定しないかぎり、デフォルトのスレッド数が使用されます。
-
--parallel-schemas=[
は、N
:]db_list
db_list
で指定されたデータベースをダンプするための処理キューを設定し、オプションでキューが使用するスレッド数を指定します。db_list
は、カンマ区切りのデータベース名のリストです。 オプション引数が
で始まる場合、キューはN
:N
スレッドを使用します。 それ以外の場合は、--default-parallelism
オプションによってキュースレッドの数が決まります。--parallel-schemas
オプションの複数のインスタンスでは、複数のキューが作成されます。データベースリスト内の名前には、フィルタリングオプションでサポートされているのと同じ
%
および_
ワイルドカード文字を含めることができます (mysqlpump オブジェクトの選択 を参照)。
mysqlpump は、--parallel-schemas
オプションで明示的に指定されていないデータベースを処理したり、コマンドオプションで選択された場合にユーザー定義をダンプしたりするために、デフォルトキューを使用します。
通常、複数のキューでは、mysqlpump はキューで処理されるデータベースのセット間で並列性を使用して、複数のデータベースを同時にダンプします。 複数のスレッドを使用するキューの場合、mysqlpump はデータベース内で並列性を使用して、特定のデータベースから複数のオブジェクトを同時にダンプします。 例外が発生する可能性があります。たとえば、mysqlpump は、データベース内のオブジェクトのサーバーリストからキューを取得している間、キューをブロックする場合があります。
並列性を有効にすると、異なるデータベースからの出力をインターリーブできます。 たとえば、並列でダンプされた複数のテーブルからの INSERT
ステートメントはインターリーブできます。ステートメントは特定の順序で書き込まれません。 出力ステートメントはオブジェクト名をデータベース名で修飾するか、必要に応じて USE
ステートメントを前に付けるため、再ロードには影響しません。
並列度の粒度は単一のデータベースオブジェクトです。 たとえば、単一のテーブルを複数のスレッドを使用してパラレルにダンプすることはできません。
例:
shell> mysqlpump --parallel-schemas=db1,db2 --parallel-schemas=db3
mysqlpump は、db1
および db2
を処理するキュー、db3
を処理する別のキュー、および他のすべてのデータベースを処理するデフォルトキューを設定します。 すべてのキューは 2 つのスレッドを使用します。
shell> mysqlpump --parallel-schemas=db1,db2 --parallel-schemas=db3
--default-parallelism=4
これは前の例と同じですが、すべてのキューが 4 つのスレッドを使用する点が異なります。
shell> mysqlpump --parallel-schemas=5:db1,db2 --parallel-schemas=3:db3
db1
および db2
のキューは 5 つのスレッドを使用し、db3
のキューは 3 つのスレッドを使用し、デフォルトキューは 2 つのスレッドのデフォルトを使用します。
特殊なケースとして、--default-parallelism=0
で --parallel-schemas
オプションを指定しない場合、mysqlpump はシングルスレッドプロセスとして実行され、キューは作成されません。
mysqlpump の制限事項
デフォルトでは、mysqlpump は performance_schema
、ndbinfo
または sys
スキーマをダンプしません。 これらのいずれかをダンプするには、コマンドラインで明示的に名前を付けます。 --databases
または --include-databases
オプションを使用して名前を付けることもできます。
mysqlpump は、INFORMATION_SCHEMA
スキーマをダンプしません。
mysqlpump は、InnoDB
CREATE TABLESPACE
ステートメントをダンプしません。
mysqlpump は、CREATE USER
および GRANT
ステートメントを使用して、ユーザーアカウントを論理形式でダンプします (--include-users
または --users
オプションを使用する場合など)。 このため、mysql
システムデータベースのダンプには、デフォルトでユーザー定義を含む付与テーブルは含まれません: user
, db
, tables_priv
, columns_priv
, procs_priv
または proxies_priv
。 付与テーブルをダンプするには、mysql
データベースに名前を付け、その後にテーブル名を付けます:
shell> mysqlpump mysql user db ...