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

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

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

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

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

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シェルのダンプ・ユーティリティのリファレンス・ドキュメントは、インスタンス・ダンプ・ユーティリティ、スキーマ・ダンプ・ユーティリティおよび表ダンプ・ユーティリティを参照してください。ここでは、ユーティリティを起動する構文、およびダンプ出力の構造化に追加できるオプションの完全なリスト(表の追加や除外など)を確認できます。
    airportdbを使用してプロセスを実行する場合は、ローカル・ネットワークからAzure VMへのデータ転送を試す場合を除き、このステップをスキップできます。その場合は、ローカル・マシン上のairportdbファイルをダウンロードして解凍します。
    1. ローカル・ネットワーク上のマシンで、MySQL Shellを起動し、\jsと入力してJavaScriptモード、または\pyと入力してPythonモードを選択します。これらの例は、JavaScriptモードで示されています。
    2. 次のコマンドを実行して、MySQL Serverインスタンスのエンドポイントに接続してグローバル・セッションを開始します。
      \connect <UserName>@<EndpointIPAddress>
      • \connect: 新しい接続を確立するためのMySQLシェル・コマンド。
      • <UserName>: MySQL Serverインスタンスの管理者アカウントのユーザー名。
      • <EndpointIPAddress>: MySQL ServerインスタンスのエンドポイントのIPアドレス。
      要求されたら、管理者アカウントのパスワードを入力します。
    3. ダンプ・プロセスの予行演習を実行して、Oracle HeatWaveデータベース・システムとの互換性の問題を見つけます。これらの問題は、実際のダンプ・プロセスを実行するときに修正できます。
      予行演習では次のオプションを使用します。
      dryRun: true
      このオプションは、ユーティリティを初めて実行するときに使用します。これにより、ユーティリティーは互換性チェックを実行し、結果をリストしますが、実際にはデータをダンプしません。
      ocimds: true
      このオプションを使用して、Oracle HeatWaveとの互換性のチェックおよび変更を有効にします。予行演習では、このオプションによって、インポート前に修正する必要があるデータ構造の問題がユーティリティでチェックされます。
      ダンプ・ファイルが配置される場所を指定します。この例では、インスタンス・ダンプ・ユーティリティを使用して、すべてのスキーマをインスタンスからフォルダ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
      このオプションを使用して、Oracle HeatWaveとの互換性のチェックおよび変更を有効にします。実際のダンプ・プロセスでは、インポートがデータベース・システムで機能するようにダンプ・メタデータが変更され、互換性の変更でカバーされないデータ構造内の残りの問題がチェックされます。
      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シェルのダンプ・ロード・ユーティリティのリファレンス・ドキュメントで、ダンプ・アップロードを制御するために追加できる構文およびその他のオプションについては、ダンプ・ロード・ユーティリティを参照してください。
    1. Azure VMで、MySQLシェルを起動し、\jsと入力してJavaScriptモード、または\pyと入力してPythonモードを選択します。これらの例は、JavaScriptモードで示されています。
    2. 次のコマンドを実行して、データベース・システムのエンドポイントに接続してグローバル・セッションを開始します:
      \connect <UserName>@<DBSystemEndpointIPAddress>
      • \connect: 新しい接続を確立するためのMySQLシェル・コマンド。
      • <UserName>: Oracle 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 Shellを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ノードのプロビジョニング」を参照してください。