MySQL 8.0 リファレンスマニュアル


MySQL 8.0 リファレンスマニュアル  /  ...  /  mysqlpump — データベースバックアッププログラム

4.5.6 mysqlpump — データベースバックアッププログラム

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 USERGRANT) としてのユーザーアカウントのダンプ

  • 圧縮出力を作成する機能

  • 進捗インジケータ (値は推定)

  • ダンプファイルのリロードでは、行の挿入後にインデックスを追加することで、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 オプションの説明

  • --help, -?

    ヘルプメッセージを表示して終了します。

  • --add-drop-database

    CREATE DATABASE ステートメントの前に DROP DATABASE ステートメントを記述します。

    注記

    MySQL 8.0 では、mysql スキーマはエンドユーザーが削除できないシステムスキーマとみなされます。 --add-drop-database--all-databases または --databases とともに使用され、ダンプするスキーマのリストに mysql が含まれている場合、ダンプファイルにはダンプファイルのリロード時にエラーを引き起こす DROP DATABASE `mysql`ステートメントが含まれます。

    かわりに、--add-drop-database を使用するには、ダンプするスキーマのリストとともに --databases を使用します。このリストには mysql は含まれません。

  • --add-drop-table

    CREATE TABLE ステートメントの前に DROP TABLE ステートメントを記述します。

  • --add-drop-user

    CREATE USER ステートメントの前に DROP USER ステートメントを記述します。

  • --add-locks

    LOCK TABLES ステートメントと UNLOCK TABLES ステートメントで各テーブルダンプを囲みます。 これにより、ダンプファイルをリロードする際の挿入の速度が向上します。 セクション8.2.5.1「INSERT ステートメントの最適化」を参照してください。

    異なるテーブルからの INSERT ステートメントをインターリーブでき、あるテーブルに対する挿入の終了後に UNLOCK TABLES が挿入が残っているテーブルのロックを解放する可能性があるため、このオプションは並列処理では機能しません。

    --add-locks--single-transaction は相互に排他的です。

  • --all-databases, -A

    すべてのデータベースをダンプします (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 オプションを明示的に使用します。

  • --bind-address=ip_address

    複数のネットワークインタフェースを持つコンピュータで、このオプションを使用して、MySQL サーバーへの接続に使用するインタフェースを選択します。

  • --character-sets-dir=path

    文字セットがインストールされているディレクトリ。 セクション10.15「文字セットの構成」を参照してください。

  • --column-statistics

    ダンプファイルのリロード時にダンプされたテーブルのヒストグラム統計を生成するために、出力に ANALYZE TABLE ステートメントを追加します。 大規模なテーブルのヒストグラム生成には時間がかかる場合があるため、このオプションはデフォルトで無効になっています。

  • --complete-insert

    カラム名を含む完全な INSERT ステートメントを記述します。

  • --compress, -C

    可能であれば、クライアントとサーバーの間で送信されるすべての情報を圧縮します。 セクション4.2.8「接続圧縮制御」を参照してください。

    MySQL 8.0.18 では、このオプションは非推奨です。 MySQL の将来のバージョンで削除されることが予想されます。 レガシー接続圧縮の構成を参照してください。

  • --compress-output=algorithm

    デフォルトでは、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 で追加されました。

  • --databases, -B

    通常、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 リリースバイナリは、このオプションを使用して構築されません。

  • --debug-check

    プログラムの終了時に、デバッグ情報を出力します。

    このオプションは、MySQL が WITH_DEBUG を使用して構築された場合にのみ使用できます。 Oracle によって提供される MySQL リリースバイナリは、このオプションを使用して構築されません。

  • --debug-info, -T

    プログラムの終了時に、デバッグ情報とメモリーおよび CPU 使用率の統計を出力します。

    このオプションは、MySQL が WITH_DEBUG を使用して構築された場合にのみ使用できます。 Oracle によって提供される MySQL リリースバイナリは、このオプションを使用して構築されません。

  • --default-auth=plugin

    使用するクライアント側認証プラグインに関するヒント。 セクション6.2.17「プラガブル認証」を参照してください。

  • --default-character-set=charset_name

    charset_name をデフォルト文字セットとして使用します。 セクション10.15「文字セットの構成」を参照してください。 文字セットが指定されていない場合、mysqlpumputf8 を使用します。

  • --default-parallelism=N

    各パラレル処理キューのデフォルトのスレッド数。 デフォルトは 2 です。

    --parallel-schemas オプションは並列性にも影響し、デフォルトのスレッド数をオーバーライドするために使用できます。 詳細は、mysqlpump パラレル処理を参照してください。

    --default-parallelism=0 および --parallel-schemas オプションがない場合、mysqlpump はシングルスレッドプロセスとして実行され、キューは作成されません。

    並列性を有効にすると、異なるデータベースからの出力をインターリーブできます。

  • --defaults-extra-file=file_name

    このオプションファイルは、グローバルオプションファイルのあとに読み取りますが、(UNIX では) ユーザーオプションファイルの前に読み取るようにしてください。 ファイルが存在しないかアクセスできない場合、エラーが発生します。file_name は、フルパス名でなく相対パス名として指定された場合、現行ディレクトリを基準にして解釈されます。

    このオプションおよびその他のオプションファイルオプションの詳細は、セクション4.2.2.3「オプションファイルの処理に影響するコマンド行オプション」 を参照してください。

  • --defaults-file=file_name

    指定されたオプションファイルのみ使用します。 ファイルが存在しないかアクセスできない場合、エラーが発生します。file_name は、フルパス名でなく相対パス名として指定された場合、現行ディレクトリを基準にして解釈されます。

    例外: --defaults-file でも、クライアントプログラムは .mylogin.cnf を読み取ります。

    このオプションおよびその他のオプションファイルオプションの詳細は、セクション4.2.2.3「オプションファイルの処理に影響するコマンド行オプション」 を参照してください。

  • --defaults-group-suffix=str

    通常のオプショングループだけでなく、通常の名前に str のサフィクスが付いたグループも読み取ります。 たとえば、mysqlpump は通常、[client]および[mysqlpump]グループを読み取ります。 --defaults-group-suffix=_other オプションが指定されている場合、mysqlpump[client_other]および[mysqlpump_other]グループも読み取ります。

    このオプションおよびその他のオプションファイルオプションの詳細は、セクション4.2.2.3「オプションファイルの処理に影響するコマンド行オプション」 を参照してください。

  • --defer-table-indexes

    ダンプ出力で、行がロードされるまで各テーブルのインデックス作成を遅延します。 これはすべてのストレージエンジンで機能しますが、InnoDB の場合はセカンダリインデックスにのみ適用されます。

    このオプションはデフォルトで有効になっています。無効にするには --skip-defer-table-indexes を使用します。

  • --events

    ダンプされるデータベースのイベントスケジューライベントを出力に含めます。 イベントダンプには、これらのデータベースに対する EVENT 権限が必要です。

    --events を使用して生成される出力には、イベントを作成するための CREATE EVENT ステートメントが含まれています。

    このオプションはデフォルトで有効になっています。無効にするには --skip-events を使用します。

  • --exclude-databases=db_list

    カンマ区切りのデータベース名のリストである db_list 内のデータベースはダンプしないでください。 このオプションの複数のインスタンスは加算的です。 詳細は、mysqlpump オブジェクトの選択を参照してください。

  • --exclude-events=event_list

    カンマ区切りのイベント名のリストである event_list 内のデータベースはダンプしないでください。 このオプションの複数のインスタンスは加算的です。 詳細は、mysqlpump オブジェクトの選択を参照してください。

  • --exclude-routines=routine_list

    カンマ区切りのルーチン (ストアドプロシージャまたはファンクション) 名のリストである routine_list 内のイベントはダンプしないでください。 このオプションの複数のインスタンスは加算的です。 詳細は、mysqlpump オブジェクトの選択を参照してください。

  • --exclude-tables=table_list

    カンマ区切りのテーブル名のリストである table_list 内のテーブルはダンプしないでください。 このオプションの複数のインスタンスは加算的です。 詳細は、mysqlpump オブジェクトの選択を参照してください。

  • --exclude-triggers=trigger_list

    trigger_list でトリガーをダンプしないでください。これは、カンマ区切りのトリガー名のリストです。 このオプションの複数のインスタンスは加算的です。 詳細は、mysqlpump オブジェクトの選択を参照してください。

  • --exclude-users=user_list

    カンマ区切りのアカウント名のリストである user_list のユーザーアカウントはダンプしないでください。 このオプションの複数のインスタンスは加算的です。 詳細は、mysqlpump オブジェクトの選択を参照してください。

  • --extended-insert=N

    複数の VALUES リストを含む複数行構文を使用して INSERT ステートメントを記述します。 これにより、ダンプファイルのサイズが小さくなり、ファイルがリロードされる際の挿入が高速化されます。

    オプション値は、各 INSERT ステートメントに含める行数を示します。 デフォルトは 250 です。 値 1 は、テーブルの行ごとに 1 つの INSERT ステートメントを生成します。

  • --get-server-public-key

    RSA キーペアベースのパスワード交換に必要な公開キーをサーバーにリクエストします。 このオプションは、caching_sha2_password 認証プラグインで認証されるクライアントに適用されます。 そのプラグインの場合、サーバーは要求されないかぎり公開鍵を送信しません。 このオプションは、そのプラグインで認証されないアカウントでは無視されます。 クライアントがセキュアな接続を使用してサーバーに接続する場合と同様に、RSA ベースのパスワード交換を使用しない場合も無視されます。

    --server-public-key-path=file_name が指定され、有効な公開キーファイルが指定されている場合は、--get-server-public-key よりも優先されます。

    caching_sha2_password プラグインの詳細は、セクション6.4.1.2「SHA-2 プラガブル認証のキャッシュ」 を参照してください。

  • --hex-blob

    16 進表記を使用してバイナリカラムをダンプします (たとえば、'abc'0x616263 となります)。 影響を受けるデータ型は、binary character set で使用する場合、BINARY, VARBINARY, BLOB 型、BIT、すべての空間データ型およびその他の非バイナリデータ型です。

  • --host=host_name, -h host_name

    与えられたホスト上の MySQL サーバーからデータをダンプします。

  • --include-databases=db_list

    db_list でデータベースをダンプします。これは、カンマ区切りのデータベース名のリストです。 ダンプには、指定したデータベース内のすべてのオブジェクトが含まれます。 このオプションの複数のインスタンスは加算的です。 詳細は、mysqlpump オブジェクトの選択を参照してください。

  • --include-events=event_list

    event_list でイベントをダンプします。これは、カンマ区切りのイベント名のリストです。 このオプションの複数のインスタンスは加算的です。 詳細は、mysqlpump オブジェクトの選択を参照してください。

  • --include-routines=routine_list

    routine_list でルーチンをダンプします。これは、コンマ区切りのルーチン (ストアドプロシージャーまたはストアドファンクション) 名のリストです。 このオプションの複数のインスタンスは加算的です。 詳細は、mysqlpump オブジェクトの選択を参照してください。

  • --include-tables=table_list

    カンマ区切りのテーブル名のリストである table_list のテーブルをダンプします。 このオプションの複数のインスタンスは加算的です。 詳細は、mysqlpump オブジェクトの選択を参照してください。

  • --include-triggers=trigger_list

    trigger_list でトリガーをダンプします。これは、カンマ区切りのトリガー名のリストです。 このオプションの複数のインスタンスは加算的です。 詳細は、mysqlpump オブジェクトの選択を参照してください。

  • --include-users=user_list

    user_list でユーザーアカウントをダンプします。これは、カンマ区切りのユーザー名のリストです。 このオプションの複数のインスタンスは加算的です。 詳細は、mysqlpump オブジェクトの選択を参照してください。

  • --insert-ignore

    INSERT ステートメントではなく、INSERT IGNORE ステートメントを書き出します。

  • --log-error-file=file_name

    警告およびエラーを、指名されたファイルに追加することによってログに記録します。 このオプションを指定しない場合、mysqlpump は警告およびエラーを標準エラー出力に書き込みます。

  • --login-path=name

    .mylogin.cnf ログインパスファイルの指定されたログインパスからオプションを読み取ります。 「ログインパス」は、接続先の MySQL サーバーおよび認証に使用するアカウントを指定するオプションを含むオプショングループです。 ログインパスファイルを作成または変更するには、mysql_config_editor ユーティリティを使用します。 セクション4.6.7「mysql_config_editor — MySQL 構成ユーティリティー」を参照してください。

    このオプションおよびその他のオプションファイルオプションの詳細は、セクション4.2.2.3「オプションファイルの処理に影響するコマンド行オプション」 を参照してください。

  • --max-allowed-packet=N

    クライアント/サーバー通信用のバッファーの最大サイズ。 デフォルトは 24M バイト、最大は 1G バイトです。

  • --net-buffer-length=N

    クライアント/サーバー通信用のバッファーの初期サイズ。 (--extended-insert オプションと同様に) 複数行の INSERT ステートメントを作成する場合、mysqlpumpN バイトまでの行を作成します。 このオプションを使用して値を増やす場合は、MySQL サーバーの net_buffer_length システム変数の値がこの値以上であることを確認してください。

  • --no-create-db

    それ以外の場合は出力に含まれる可能性のある CREATE DATABASE ステートメントを抑制します。

  • --no-create-info, -t

    ダンプされた各テーブルを作成する CREATE TABLE ステートメントを記述しないでください。

  • --no-defaults

    オプションファイルを読み取りません。 オプションファイルから不明のオプションを読み取ることが原因でプログラムの起動に失敗する場合、--no-defaults を使用して、オプションを読み取らないようにすることができます。

    例外として、.mylogin.cnf ファイルは、存在する場合はすべての場合に読み取られます。 これにより、--no-defaults が使用された場合に、コマンド行よりも安全な方法でパスワードを指定できます。(.mylogin.cnfmysql_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 オプションを使用します。

  • --plugin-dir=dir_name

    プラグインを検索するディレクトリ。 このオプションは、--default-auth オプションを使用して認証プラグインを指定しても、mysqlpump がそれを検出しない場合に指定します。 セクション6.2.17「プラガブル認証」を参照してください。

  • --port=port_num, -P port_num

    TCP/IP 接続の場合、使用するポート番号。

  • --print-defaults

    プログラム名と、オプションファイルから受け取るすべてのオプションを出力します。

    このオプションおよびその他のオプションファイルオプションの詳細は、セクション4.2.2.3「オプションファイルの処理に影響するコマンド行オプション」 を参照してください。

  • --protocol={TCP|SOCKET|PIPE|MEMORY}

    サーバーへの接続に使用するトランスポートプロトコル。 これは、他の接続パラメータが通常、必要なプロトコル以外のプロトコルを使用する場合に便利です。 許可される値の詳細は、セクション4.2.7「接続トランスポートプロトコル」を参照してください。

  • --replace

    INSERT ステートメントではなく REPLACE ステートメントを書き込みます。

  • --result-file=file_name

    指定されたファイルに出力を転送します。 ダンプの生成中にエラーが発生しても、結果ファイルが作成され以前の内容は上書きされます。

    このオプションは、改行\n 文字が\r\n キャリッジリターン/改行シーケンスに変換されないようにするために、Windows で使用する必要があります。

  • --routines

    ダンプされるデータベースのストアドルーチン (プロシージャーおよび関数) を出力に含めます。 このオプションには、グローバル 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-charset

    SET NAMES default_character_set を出力に書き込みます。

    このオプションはデフォルトで有効となっています。 これを無効にして SET NAMES ステートメントを抑制するには、--skip-set-charset を使用します。

  • --set-gtid-purged=value

    このオプションを使用すると、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 が有効になっている場合 (つまり、AUTOON と評価される場合)、SET @@SESSION.SQL_LOG_BIN=0;が出力に追加されます。

  • --single-transaction

    このオプションは、データのダンプ前に、トランザクション分離モードを REPEATABLE READ に設定し、START TRANSACTION SQL ステートメントをサーバーに送信します。 これは、InnoDB などのトランザクションテーブルの場合にかぎって便利です。その場合、アプリケーションをブロックすることなく、START TRANSACTION が発行された時点のデータベースの一貫した状態をダンプするからです。

    このオプションを使用する場合、一貫した状態でダンプされるのは InnoDB テーブルのみだということに留意してください。 たとえば、このオプションの使用中にダンプされた MyISAM テーブルまたは MEMORY テーブルは状態が変化する可能性があります。

    --single-transaction ダンプの処理中、ダンプファイルが正当である (テーブルの内容とバイナリログ座標が正しい) ことを保証するために、ほかの接続で ALTER TABLECREATE TABLEDROP TABLERENAME TABLETRUNCATE TABLE ステートメントを使用しないようにしてください。 一貫性読み取りはこれらのステートメントから分離されないため、ダンプされるテーブルでこれらを使用すると、mysqlpump によって実行される SELECT がテーブルの内容を取得して誤った内容を取得したり、失敗したりする可能性があります。

    --add-locks--single-transaction は相互に排他的です。

  • --skip-definer

    ビューおよびストアドプログラムの CREATE ステートメントから DEFINER 句および SQL SECURITY 句を省略します。 ダンプファイルをリロードすると、デフォルトの DEFINER および SQL SECURITY 値を使用するオブジェクトが作成されます。 セクション25.6「ストアドオブジェクトのアクセス制御」を参照してください。

  • --skip-dump-rows, -d

    テーブルの行をダンプしません。

  • --socket=path, -S path

    localhost への接続用に使用する、Unix ソケットファイル、または Windows では使用する名前付きパイプの名前。

    Windows では、このオプションは、名前付きパイプ接続をサポートするために named_pipe システム変数を有効にしてサーバーを起動した場合にのみ適用されます。 また、接続を行うユーザーは、named_pipe_full_access_group システム変数で指定された Windows グループのメンバーである必要があります。

  • --ssl*

    --ssl で始まるオプションは、SSL を使用してサーバーに接続するかどうかを指定し、SSL 鍵および証明書を検索する場所を指定します。 暗号化接続のコマンドオプションを参照してください。

  • --ssl-fips-mode={OFF|ON|STRICT}

    クライアント側で FIPS モードを有効にするかどうかを制御します。 --ssl-fips-mode オプションは、暗号化された接続の確立には使用されず、許可する暗号化操作に影響する点で、他の --ssl-xxx オプションとは異なります。 セクション6.8「FIPS のサポート」を参照してください。

    次の --ssl-fips-mode 値を使用できます:

    • OFF: FIPS モードを無効にします。

    • ON: FIPS モードを有効にします。

    • STRICT: strict FIPS モードを有効にします。

    注記

    OpenSSL FIPS オブジェクトモジュールが使用できない場合、--ssl-fips-mode に許可される値は OFF のみです。 この場合、--ssl-fips-modeON または STRICT に設定すると、クライアントは起動時に警告を生成し、FIPS 以外のモードで動作します。

  • --tls-ciphersuites=ciphersuite_list

    TLSv1.3 を使用する暗号化された接続に許可される暗号スイート。 値は、コロンで区切られた 1 つ以上の暗号スイート名のリストです。 このオプションに指定できる暗号スイートは、MySQL のコンパイルに使用される SSL ライブラリによって異なります。 詳細は、セクション6.3.2「暗号化された接続 TLS プロトコルおよび暗号」を参照してください。

    このオプションは MySQL 8.0.16 で追加されました。

  • --tls-version=protocol_list

    暗号化された接続に許可される TLS プロトコル。 値は、1 つまたは複数のコンマ区切りプロトコル名のリストです。 このオプションに指定できるプロトコルは、MySQL のコンパイルに使用される SSL ライブラリによって異なります。 詳細は、セクション6.3.2「暗号化された接続 TLS プロトコルおよび暗号」を参照してください。

  • --triggers

    ダンプされる各テーブルのトリガーを出力に含めます。

    このオプションはデフォルトで有効になっています。無効にするには --skip-triggers を使用します。

  • --tz-utc

    このオプションを使用すると、異なるタイムゾーンのサーバー間で TIMESTAMP カラムをダンプおよびリロードできます。mysqlpump は、接続タイムゾーンを UTC に設定し、SET TIME_ZONE='+00:00'をダンプファイルに追加します。 このオプションを指定しない場合、ソースサーバーと宛先サーバーにローカルなタイムゾーンで TIMESTAMP カラムがダンプおよびリロードされ、サーバーが異なるタイムゾーンにある場合は値が変更される可能性があります。--tz-utc は、夏時間による変更からも保護します。

    このオプションはデフォルトで有効になっています。無効にするには --skip-tz-utc を使用します。

  • --user=user_name, -u user_name

    サーバーへの接続に使用する MySQL アカウントのユーザー名。

  • --users

    CREATE USER および GRANT ステートメントの形式でユーザーアカウントを論理定義としてダンプします。

    ユーザー定義は、mysql システムデータベースの付与テーブルに格納されます。 デフォルトでは、mysqlpump は付与テーブルを mysql データベースダンプに含めません。 付与テーブルの内容を論理定義としてダンプするには、--users オプションを使用して、すべてのデータベースダンプを抑制します:

    shell> mysqlpump --exclude-databases=% --users
  • --version, -V

    バージョン情報を表示して終了します。

  • --watch-progress

    テーブル、行およびその他のオブジェクトの完了数と合計数に関する情報を提供する進捗インジケータを定期的に表示します。

    このオプションはデフォルトで有効になっています。無効にするには --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 文字のテーブル名を照合します。

ユーザーの場合、ホスト部分なしで指定された名前は、% の暗黙的なホストで解釈されます。 たとえば、u1u1@% は同等です。 これは、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 の制限事項

デフォルトでは、mysqlpumpperformance_schemandbinfo または 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 ...

関連キーワード:  ダンプ, mysqlpump, データベース, テーブル, ステートメント, サーバー, 接続, 参照, オブジェクト, 出力