Oracle HeatWaveへのデータのインポート

MySQLシェルを使用してデータベース・システムに接続し、MySQLシェルのダンプおよびダンプ・ロード・ユーティリティを使用してデータをOracle HeatWaveにインポートします。

データベース・システムへのクライアント接続の設定およびMySQLシェルをインストールする手順は、Oracle HeatWaveへの接続を参照してください。

Oracle Database Service for Azureを使用してローカルMySQLサーバー・インスタンスからデータをエクスポートし、HeatWaveクラスタのデータベース・システムにインポートするプロセスのサマリーを次に示します:

  • ローカルネットワーク上で、MySQLシェルのダンプユーティリティーのいずれかを使用して、MySQLサーバーインスタンスから一連のローカルダンプファイルにデータをエクスポートします。MySQL Databaseサービスの互換性オプションを適用します。
  • 任意のファイル転送方法でダンプ・ファイルを、データベース・システムに接続できるAzure VMに転送します。
  • Azure VMで、MySQLシェルのダンプ・ロード・ユーティリティを使用してダンプ・ファイルをデータベース・システムにインポートし、Oracle HeatWaveの自動パラレル・ロード機能を使用してデータをHeatWaveノードにロードします。
MySQLシェルのダンプユーティリティーによってすでに作成されているサンプルダンプファイルを使用してこのプロセスを試す場合は、airportdbダウンロードを使用できます(約640Mバイトのサイズ)。ダウンロードおよび解凍するには、次のコマンドを使用します。

wget https://downloads.mysql.com/docs/airport-db.tar.gz
tar xvzf airport-db.tar.gz
または:

wget https://downloads.mysql.com/docs/airport-db.zip
unzip airport-db.zip
Windowsでは、指定されたURLを使用してZipアーカイブをダウンロードします。圧縮された tarまたは Zipアーカイブを解凍すると、airport-dbという名前のディレクトリにデータファイルが含まれます。

詳細なプロセス・ステップは次のとおりです。

  1. MySQLシェルのインスタンスダンプユーティリティー util.dumpInstanceまたはスキーマダンプユーティリティー util.dumpSchemasを使用して、MySQLサーバーインスタンスから一連のローカルダンプファイルにデータをダンプします。
    MySQLシェルのダンプユーティリティーのリファレンスドキュメントについては、Instance Dump Utility、 Schema Dump Utility、 and Table Dump Utilityを参照してください。ここでは、ユーティリティを起動する構文と、ダンプ出力の構造化に追加できるオプションの完全なリスト(表の追加や除外など)を確認できます。
    airportdbを使用してプロセスを実行する場合は、ローカル・ネットワークからAzure VMへのデータ転送を試行しないかぎり、このステップをスキップできます。その場合は、ローカル・マシンでairportdbファイルをダウンロードして解凍します。
    1. ローカル・ネットワーク上のマシンで、MySQLシェルを起動し、\jsと入力してJavaScriptモード、または\pyと入力してPythonモードを選択します。これらの例は、JavaScriptモードで示されています。
    2. 次のコマンドを実行して、MySQLサーバー・インスタンスのエンドポイントに接続してグローバル・セッションを開始します。
      \connect <UserName>@<EndpointIPAddress>
      • \connect: 新しい接続を確立するためのMySQLシェル・コマンド。
      • <UserName>: MySQLサーバー・インスタンスの管理者アカウントのユーザー名。
      • <EndpointIPAddress>: MySQLサーバー・インスタンスのエンドポイントのIPアドレス。
      プロンプトが表示されたら、管理者アカウントのパスワードを入力します。
    3. ダンプ・プロセスを予め実行して、データベース・システムとの互換性の問題を見つけます。これらの問題は、実際のダンププロセスを実行するときに修正できます。
      予行演習には、次のオプションを使用します。
      dryRun: true
      このオプションは、ユーティリティーを初めて実行するときに使用します。これにより、ユーティリティーは互換性のチェックを実行し、結果を一覧表示しますが、実際にはデータをダンプしません。
      ocimds: true
      このオプションを使用して、MySQL Database Serviceとの互換性のチェックおよび変更を有効にします。予行演習では、インポート前に修正する必要があるデータ構造内の問題をユーティリティがチェックします。
      ダンプ・ファイルが配置される場所を指定します。この例では、インスタンス・ダンプ・ユーティリティを使用して、すべてのスキーマをインスタンスからフォルダC:/Users/hanna/worlddumpのファイルにダンプしますが、ファイルはまだ作成されていません。
      util.dumpInstance("C:/Users/hanna/worlddump", {dryRun: true, ocimds: true})
      ダンプ出力にリストされている問題とともに、次のようなレスポンスが返されます。
      
      Checking for compatibility with MySQL Database Service 8.0.30
      ...
      Compatibility issues with MySQL Database Service 8.0.30 were found. Please use the 
      'compatibility' option to apply compatibility adaptations to the dumped DDL.
      Util.dumpInstance: Compatibility issues were found (RuntimeError)
    4. 実際のダンププロセスを実行し、dryRunオプションを削除し、ダンプ出力で推奨されていた互換性の変更を適用します。
      実際のダンプには、次のオプションを使用します。
      ocimds: true
      このオプションを使用して、MySQL Database Serviceとの互換性のチェックおよび変更を有効にします。実際のダンプ・プロセスでは、インポートがデータベース・システムで機能するようにダンプ・メタデータが変更され、互換性の変更でカバーされないデータ構造内の残りの問題がチェックされます。
      compatibility: [array of strings]
      ダンプ出力に互換性の修正を追加するには、このオプションを使用します。互換性チェックの結果でリクエストされた変更オプションを一覧表示します。
      例:
      util.dumpInstance("C:/Users/hanna/worlddump", {
              > ocimds: true, compatibility: ["strip_definers", "strip_restricted_grants"]})
      ユーティリティーは、メタデータとデータを、指定した場所にある一連のダンプファイルにダンプします。
  2. 優先するファイル転送方法を使用して、データベース・システムに接続できるAzure VMに接続します。すべてのダンプ・ファイルとそれを含むフォルダをAzure VMに転送します。
    airportdbを使用してプロセスを実行する場合は、Azure VMでファイルをダウンロードして解凍できます。
  3. Azure VMでMySQLシェルのダンプ・ロード・ユーティリティutil.loadDumpを使用して、ダンプ・ファイルをデータベース・システムにアップロードします。
    MySQLシェルのダンプロードユーティリティーのリファレンスドキュメントで、ダンプアップロードを制御するために追加できる構文とその他のオプションについては、Dump Loading Utilityを参照してください。
    1. Azure VMで、MySQLシェルを起動し、\jsと入力してJavaScriptモードを選択し、\pyと入力してPythonモードを選択します。これらの例は、JavaScriptモードで示されています。
    2. 次のコマンドを実行して、データベース・システムのエンドポイントに接続してグローバル・セッションを開始します。
      \connect <UserName>@<DBSystemEndpointIPAddress>
      • \connect: 新しい接続を確立するためのMySQLシェル・コマンド。
      • <UserName>: HeatWaveクラスタに設定した管理者アカウントのユーザー名。
      • <DBSystemEndpointIPAddress>: データベース・システムのエンドポイントのIPアドレス。これは、デプロイメントの詳細ページの「接続」タブにあります。
      プロンプトが表示されたら、管理者アカウントのパスワードを入力します。
    3. ダンプ・ロード・ユーティリティを実行して、ダンプ・ファイルをAzure VMに配置した場所からデータベース・システムにアップロードします。
      問題がないことを確認する場合は、先にドライ・ランを実行できます。例:
      util.loadDump("/mnt/data/worlddump", {dryRun:true})
      実際のアップロードの例では、GTIDセットがデータベース・システムに転送され、アップロードを取り消して再開できるように進行状態ファイルが作成されます。
      util.loadDump("/mnt/data/worlddump", {progressFile: "loadprogress.json", updateGtidSet: append})
    4. アップロードが完了したら、MySQLシェルをSQLモード(\sqlと入力して[Enter]を押す)に切り替えることで、データベース・システムにデータが存在することを確認できます。このモードでは、MySQL文を使用してデータベースおよび表にアクセスできます。
  4. HeatWaveノードをすでに作成している場合は、Oracle HeatWaveの自動パラレル・ロード機能を使用してデータをロードします。自動パラレル・ロードでは、関連する多くのステップを自動化することで、データをHeatWaveにロードするプロセスが容易になります。任意のMySQLクライアントまたはコネクタから実行でき、MySQL sysスキーマにあるheatwave_loadという名前のストアド・プロシージャとして実装されます。
    1. Azure VMで、MySQLシェルを起動し、\SQLと入力してSQLモードを選択します。
    2. 次のコマンドを実行して、データベース・システムのエンドポイントに接続してグローバル・セッションを開始します。
      \connect <UserName>@<DBSystemEndpointIPAddress>
      • \connect: 新しい接続を確立するためのMySQLシェル・コマンド。
      • <UserName>: HeatWaveクラスタに設定した管理者アカウントのユーザー名。
      • <DBSystemEndpointIPAddress>: データベース・システムのエンドポイントのIPアドレス。これは、デプロイメントの詳細ページの「接続」タブにあります。
      プロンプトが表示されたら、管理者アカウントのパスワードを入力します。
    3. sys.heatwave_loadをコールして、データをHeatWaveクラスタにロードし、ロードするスキーマ(データベース)を指定します。
      たとえば、サンプルのairportdbデータベースの場合、次のコマンドを実行します。
      CALL sys.heatwave_load(JSON_ARRAY("airportdb"),NULL);
データがデータベース・システムにインポートされたので、HeatWave Autopilotを使用して、HeatWaveクラスタに適した数のHeatWaveノードを見積もることができます。手順については、「HeatWaveノードのプロビジョニング」を参照してください。