• 検索結果がありません。

ダンプロードユーティリティ

ドキュメント内 MySQL Shell 8.0 (ページ 167-177)

MySQL Shell ダンプロードユーティリティ util.loadDump() は、MySQL Shell 8.0.21 で導入され、MySQL Database Service DB システム (MySQL DB システム、短縮形) または MySQL Shell セクション8.5「インスタンスダンプユー ティリティ、スキーマダンプユーティリティおよびテーブルダンプユーティリティ」 を使用してダンプされたスキー マまたはテーブルの MySQL Server インスタンスへのインポートをサポートしています。 ダンプロードユーティリ ティでは、リモート記憶域からのデータストリーミング、テーブルまたはテーブルチャンクのパラレルロード、進行 状況トラッキング、再開およびリセット機能、およびダンプの実行中の同時ロードのオプションが提供されます。

MySQL DB システムにインポートするには、ダンプロードユーティリティを実行する MySQL Shell インスタンス が、MySQL DB システムにアクセスできる Oracle Cloud Infrastructure Compute インスタンスにインストールされ ている必要があります。 ダンプファイルが Oracle Cloud Infrastructure Object Storage バケットにある場合は、コ ンピュートインスタンスからオブジェクトストレージバケットにアクセスできます。 ダンプファイルがローカルシ ステムにある場合は、コンピュートインスタンスに選択したオペレーティングシステムに応じて、選択したコピー ユーティリティを使用して Oracle Cloud Infrastructure Compute インスタンスに転送する必要があります。 MySQL Database Service との互換性のために、MySQL Shell インスタンスダンプユーティリティまたはスキーマダンプユー ティリティで ocimds オプションを true に設定してダンプが作成されていることを確認します。MySQL Shell テーブ ルダンプユーティリティでは、このオプションは使用しません。

注記

1. ダンプロードユーティリティでは LOAD DATA LOCAL INFILE ステートメントが使用さ れるため、インポート中は、ターゲット MySQL インスタンスの local_infile システム変 数のグローバル設定を ON にする必要があります。 デフォルトでは、このシステム変数 は標準の MySQL DB システム構成で ON に設定されています。

2. ターゲットの MySQL インスタンスでは、ダンプロードユーティリティ

は、sql_require_primary_key システム変数が ON に設定されているかどうかをチェッ

このページは機械翻訳したものです。

ダンプロードユーティリティ

クし、設定されている場合は、ダンプファイルに主キーのないテーブルがあるとエラー を返します。 デフォルトでは、このシステム変数は標準の MySQL DB システム構成で

OFF に設定されています。

3. ダンプロードユーティリティは、ソース MySQL インスタンスの gtid_executed GTID セットをターゲット MySQL インスタンスに自動的に適用しません。 GTID セット は、@.json ダンプファイルの gtidExecuted フィールドとして、MySQL Shell インスタ ンスダンプユーティリティ、スキーマダンプユーティリティまたはテーブルダンプユー ティリティのダンプメタデータに含まれます。 レプリケーションで使用するためにこれ らの GTID をターゲット MySQL インスタンスに適用するには、MySQL Shell 8.0.22 か ら、updateGtidSet オプションを使用して、ターゲット MySQL インスタンスのリリー スに応じて gtid_purged GTID セットに追加するか、gtid_purged GTID セットを置換し ます。 権限の制限のため、これは現在 MySQL DB システムではサポートされていま せん。 MySQL Shell 8.0.21 では GTID セットを手動でインポートできますが、これは MySQL DB システムではサポートされていません。

インスタンスダンプユーティリティまたはスキーマダンプユーティリティによって生成される出力の場合、MySQL Shell ダンプロードユーティリティは DDL ファイルおよびタブ区切りの .tsv データファイルを使用して、ターゲット の MySQL インスタンスにサーバーインスタンスまたはスキーマを設定し、データをロードします。 DDL ファイル のみを含むダンプまたはデータファイルのみを使用して、これらのタスクを個別に実行できます。 ダンプロードユー ティリティでは、DDL ファイルおよびデータファイルを、両方の種類のファイルを含む通常のダンプから個別に適用 することもできます。

MySQL Shell テーブルダンプユーティリティによって生成される出力の場合、MySQL Shell 8.0.23 からのダンプに は、最初にテーブルを含むスキーマの設定に必要な情報が含まれます。 デフォルトでは、そのリリースから、ター ゲットの MySQL インスタンスにスキーマがまだ存在しない場合は再作成されます。 または、ダンプロードユーティ リティで schema オプションを指定して、ターゲット MySQL インスタンスの代替スキーマにテーブルをロードでき ます。 MySQL Shell 8.0.22 では、テーブルダンプユーティリティファイルにスキーマ情報が含まれていないため、

ターゲットスキーマがターゲットの MySQL インスタンスに存在する必要があります。 このリリースでは、デフォル トでグローバルシェルセッションの現在のスキーマがターゲットスキーマとして使用されるか、schema オプション を使用してスキーマに名前を付けることができます。

ダンプロードユーティリティのその他のオプションを使用して、インポートをカスタマイズできます:

• インポートまたはインポートから除外する個々のテーブルまたはスキーマを選択できます。

• ユーザーとそのロールおよび権限はデフォルトで除外されますが、インポートを選択できます。

• ターゲット MySQL インスタンスのデータには、ダンプファイルで使用されているものとは異なる文字セットを指 定できます。

• データがすでにロードされている場合でも、ANALYZE TABLE ヒストグラムを更新できます。

SET sql_log_bin=0 ステートメントを使用したインポート中に、ターゲット MySQL インスタンスでバイナリロギン

グをスキップすることを選択できます。

選択したダンプロードオプションのセットを使用してドライランを実行し、これらのオプションを使用してユーティ リティを実際に実行したときに実行されるアクションを表示できます。

waitDumpTimeout オプションを使用すると、まだ作成中のダンプを適用できます。 テーブルは使用可能になるとロー

ドされ、新しいデータがダンプの場所に到着しなくなった後、ユーティリティは指定された秒数待機します。 タイム アウトが経過すると、ユーティリティはダンプが完了したとみなし、インポートを停止します。

インポートの進行状態は永続的な進行状態ファイルに格納され、正常に完了したステップと中断または失敗したス テップが記録されます。 デフォルトでは、進捗状態ファイルは load-progress.server_uuid.json という名前でダンプ ディレクトリに作成されますが、別の名前と場所を選択することもできます。 ダンプロードユーティリティは、ダン プのインポートを再開または再試行するときに進行状態ファイルを参照し、完了したステップをスキップします。 部 分的にロードされたテーブルの重複除外は自動的に管理されます。 Ctrl + C を使用して進行中のダンプを中断した場 合、そのキーの組合せを最初に使用しても、ユーティリティによって新しいタスクは開始されませんが、既存のタス クは続行されます。 Ctrl + C を再度押すと、既存のタスクが停止し、エラーメッセージが表示されます。 いずれの場 合も、ユーティリティは停止した場所からインポートを再開できます。

ダンプロードユーティリティ

進行状態をリセットしてダンプのインポートを最初から再開することを選択できますが、この場合、ユーティリティ はすでに作成されて重複除外を管理していないオブジェクトをスキップしません。 これを行う場合、正しいインポー トを保証するには、以前にロードされたすべてのオブジェクト (スキーマ、テーブル、ユーザー、ビュー、トリガー、

ルーチン、イベントなど) をターゲット MySQL インスタンスから手動で削除する必要があります。 それ以外の場 合、ダンプファイル内のオブジェクトがターゲット MySQL インスタンスにすでに存在すると、インポートはエラー で停止します。 適切な注意が必要な場合は、ignoreExistingObjects オプションを使用してユーティリティレポートで オブジェクトを複製しますが、スキップしてインポートを続行できます。 ユーティリティでは、ターゲット MySQL インスタンスとダンプファイルのオブジェクトの内容が異なるかどうかはチェックされないため、インポート結果に 不正または無効なデータが含まれる可能性があります。

重要

ダンプの停止とダンプの再開の間にダンプファイル内のデータを変更しないでください。

データの変更後にダンプを再開すると動作が未定義になり、データの不整合やデータの損失 が発生する可能性があります。 ダンプを部分的にロードした後にデータを変更する必要が ある場合は、部分的なインポート中に作成されたすべてのオブジェクトを手動で削除し (進 捗状態ファイルにリストされています)、resetProgress オプションを指定してダンプロード ユーティリティを実行し、最初から再開します。

ダンプのデータファイル内のデータをターゲットの MySQL インスタンスにインポートする前に変更する必要がある 場合は、MySQL シェルのパラレルテーブルインポートユーティリティ util.importTable() とダンプロードユーティリ ティを組み合せて変更できます。 これを行うには、まずダンプロードユーティリティを使用して、選択したテーブ ルの DDL のみをロードし、ターゲットサーバーにテーブルを作成します。 次に、パラレルテーブルインポートユー ティリティを使用して、テーブルの出力ファイルからデータを取得および変換し、ターゲットテーブルにインポート します。 必要に応じて、データを変更する他のテーブルに対してこのプロセスを繰り返します。 最後に、ダンプロー ドユーティリティを使用して、変更しない残りのテーブル (変更したテーブルを除く) の DDL およびデータをロード します。 手順の詳細は、ダンプしたデータの変更 を参照してください。

オブジェクトストレージバケットからの事前認証済リクエストを含むダンプファイルを MySQL DB システムにロード するには、マニフェストファイルオブジェクト (@.manifest.json) 用に作成された事前認証済読取りリクエスト URL が必要です。 また、オブジェクトストレージバケット内のダンプファイルと同じ接頭辞付きの場所に、テキストファ イルに対する事前認証済の読取り/書込みリクエストを作成します。 これはダンプロードユーティリティの進捗状態 ファイルで、事前認証済リクエストを含むダンプファイルをロードする場合に必要です。 リクエストの作成に必要な 権限を持つ任意のユーザーアカウントを使用できます。 テキストファイルには任意の名前を付けることができ、ファ イルを作成するか、ユーティリティで作成できます。 ファイルのコンテンツは JSON 形式になるため、.json ファイ ル拡張子は使用する場合に適しています (progress.json など)。

ダンプファイル (デフォルト) とともに進捗状態ファイルを格納するかわりに、ダンプロードユーティリティを実行す る場所にあるローカルファイルを使用できます。 進捗状態ファイルの事前認証済読取り/書込みリクエストを作成す る権限がない場合、このメソッドを使用して進捗を格納できます。 ローカルファイルを使用する場合、ダンプロード ユーティリティを別の場所から実行してもダンプを再開できないことに注意してください。

事前認証済リクエストでは、ダンプロードユーティリティを実行するときに、@.manifest.json ファイルの事前認証済 リクエスト URL としてダンプ URL を指定します。 また、進行状態ファイル (progressFile オプション) をオブジェク トストレージバケット内のファイルの事前認証済リクエスト URL として、またはローカルシステム上のファイル (こ のオプションを選択した場合) として指定します。 ダンプロードユーティリティを実行するユーザーアカウントは、

追加のアクセス権限なしでマニフェストファイル内の URL を使用してダンプファイルをロードできます。 ダンプが まだ進行中の場合、ダンプロードユーティリティは、オブジェクトストレージバケットではなくマニフェストファイ ルへの新しい追加を監視して待機します。

ダンプの DDL ファイルは単一のスレッドによってロードされますが、データは選択したスレッド数 (デフォルトは 4) によってパラレルにロードされます。 ダンプの作成時にテーブルデータがチャンク化された場合は、テーブルに複数 のスレッドを使用できます。それ以外の場合は、各スレッドが一度に 1 つのテーブルをロードします。 ダンプロード ユーティリティは、並列性を最大化するためにスレッド間のデータインポートをスケジュールします。 ダンプファイ ルが MySQL Shell ダンプユーティリティによって圧縮されている場合、ダンプロードユーティリティはそれらの解凍 を処理します。

デフォルトでは、テーブルの全文インデックスは、テーブルが完全にロードされた後にのみ作成され、インポートが 高速化されます。 各テーブルが完全にロードされるまで、すべてのインデックス作成 (プライマリインデックスを除 く) を遅延するように選択できます。 テーブルのインポート中にすべてのインデックスを作成することもできます。

また、インポート中にインデックスの作成を無効にし、ロード後にテーブル構造を変更する場合などは、後でイン デックスを作成することもできます。

ドキュメント内 MySQL Shell 8.0 (ページ 167-177)