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

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

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

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 のみをロードし、ターゲットサーバーにテーブルを作成します。 次に、パラレルテーブルイ ンポートユーティリティを使用して、テーブルの出力ファイルからデータを取得および変換し、ターゲットテー ブルにインポートします。 必要に応じて、データを変更する他のテーブルに対してこのプロセスを繰り返しま

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