MySQLインスタンスのエクスポート

MySQLシェルのダンプ・ユーティリティを使用して、MySQLインスタンスをオブジェクト・ストレージ・バケットにエクスポートします。その後、データ・インポート機能を使用して、オブジェクト・ストレージ・バケットから同じリージョンに存在するDBシステムにデータをインポートできます。

次のいずれかのダンプユーティリティーを使用します。

  • util.dumpInstance(outputUrl[, options]): 互換性があるすべてのスキーマをオブジェクト・ストレージ・バケットまたはローカル・ファイルにエクスポートするMySQLインスタンス・エクスポート・ユーティリティ。デフォルトでは、このユーティリティはユーザー、イベント、ルーチンおよびトリガーをエクスポートします。ダンプ・ユーティリティを参照してください。
  • util.dumpSchemas(schemas, outputUrl[, options]): 選択したスキーマをオブジェクト・ストレージ・バケットまたはローカル・ファイルにエクスポートするMySQLスキーマ・エクスポート・ユーティリティ。
  • util.dumpTables(schema, tables, outputUrl[, options]): スキーマの選択された表をオブジェクト・ストレージ・バケットまたはローカル・ファイルにエクスポートするMySQL表エクスポート・ユーティリティ。

データのエクスポート中に、スキーマに対して互換性チェックを実行します。問題がある場合、ダンプ・ユーティリティはエクスポートを中止し、問題の詳細なリストを生成して、それらを修正するステップを提案します。また、データのエクスポート中に接続の中断が発生した場合は、ダンプ・ユーティリティを再実行する必要があります。データのエクスポートを一時停止および再開することはできません。

MySQLシェルの使用

MySQLシェルdumpInstanceユーティリティを使用して、MySQLインスタンスをオブジェクト・ストレージ・バケットにエクスポートします。

このタスクでは次が必要です:
  • MySQL Shell 8.0.27以上。MySQLシェル8.0.27以上で作成したエクスポートを、以前のバージョンのMySQLシェルでインポートすることはできません。最新バージョンのMySQLシェルをお薦めします。
  • オブジェクト・ストレージと既存のバケットへのアクセス。
  • 有効な構成ファイル。デフォルトの場所にCLIをインストールして構成した場合は、有効な構成ファイルがあります。CLIのインストールや構成を行っていない場合は、インストールするか、手動で構成ファイルを作成する必要があります。SDKおよびCLIの構成ファイルを参照してください。
MySQLインスタンスをオブジェクト・ストレージ・バケットにエクスポートするには、次を実行します:
  1. CLI構成ファイルを含むクライアント・マシンでMySQLシェルを実行します。
  2. \jsと入力して[Enter]を押し、JavaScript入力タイプに切り替えます。
  3. 次のコマンドを実行して、MySQLインスタンスに接続してグローバル・セッションを開始します。
    \c <UserName>@<MySQLIPAddress>
    • \c: 新しい接続を確立するためのシェル・コマンドを指定します。
    • <UserName>: MySQLインスタンスのユーザー名を指定します。
    • <MySQLIPAddress>: MySQLインスタンスのIPアドレスまたはホスト名を指定します。
  4. (推奨されるオプション・ステップ)次のコマンドを実行して、MySQLインスタンス全体のエクスポートの実行をテストします。DBシステムの互換性の問題をチェックし、それらの問題を、推奨される解決策とともに出力にリストします。
    util.dumpInstance("", {mode: "dryrun", ocimds: true})
    見つかった問題を削除する互換性オプションを特定します。ocimdsオプションが有効になっている場合、MySQLインスタンスを正常にエクスポートするには、これらの互換性オプションを含める必要があります。
  5. 次のコマンドを実行して、MySQLインスタンス全体をオブジェクト・ストレージ・バケットにエクスポートします:
    util.dumpInstance("<BucketPrefix>", {osBucketName: "<MDSBucket>", threads: <ThreadSize>, ocimds: true, 
        compatibility: ["<comma separated list of compatibility options>], bytesPerChunk: "<ChunkSize>"})
    • util.dumpInstance: MySQLインスタンス全体をエクスポートするコマンドを指定します。
    • <BucketPrefix>: (オプション)バケットにアップロードされるファイルに接頭辞を追加します。これを指定すると、ファイル・パスと同様に、<BucketPrefix>/filename形式の接頭辞が付いたファイルが、定義されたバケットにアップロードされます。たとえば、<BucketPrefix>testに設定すると、定義されたバケット<MDSBucket>にアップロードされるすべてのファイルは、test/filenameとして実行されます。ファイルをダウンロードする場合、接頭辞はダウンロードの際にはフォルダとして扱われます。ローカル・エクスポートでは、このパラメータはエクスポート先のローカル・ディレクトリへのパスになります。

      このパラメータの内容はオプションですが、引用符はオプションではありません。接頭辞を使用しない場合でも、コマンドの構文に引用符を含める必要があります。

    • osBucketName: エクスポート先のオブジェクト・ストレージ・バケットの名前を大/小文字を区別して指定します。MySQLシェルは、configファイルに定義されたテナンシおよびユーザー情報を使用します。
    • threads: (オプション)このタスクに使用する処理スレッドの数を指定します。デフォルト値は4です。最適なパフォーマンスを得るには、このパラメータをデータベース・サーバーのCPUコア数に設定することをお薦めします。
    • ocimds: データにHeatWaveサービスとの互換性を確認します。これをtrueに設定すると、HeatWaveサービスと互換性がない場合、インスタンスをエクスポートできません。
      ノート

      util.loadDumpユーティリティを使用してHeatWave DBシステムにデータをインポートするには、ocimdsオプションを使用してダンプを作成する必要があります。
    • compatibility: エクスポートされたデータに対してどの変更を実行するかを指定するパラメータをリストします。ドライラン・モードで推奨される互換性オプションのリストを指定する必要があります。「互換性チェック」を参照してください。
    • bytesPerChunk: (オプション)大きいデータセットの場合は、このパラメータを使用して、大きいチャンクを定義することをお薦めします。デフォルトのチャンク・サイズは64MBです。たとえば、bytesPerChunk: 128M,ではチャンク・サイズ128MBが指定されます。
指定したバケットにデータがアップロードされます。

互換性チェック

HeatWaveサービスには、MySQLインスタンスに存在しないセキュリティ関連のいくつかの制限があります。ダンプされたデータに対して互換性チェックを実行するには、ダンプユーティリティーの ocimdsオプションを使用します。問題がある場合は、ユーティリティーによってダンプが中止され、問題の詳細なリストが生成され、それらを修正するための手順が提案されます。

次のコマンドは、dryrunモードで ocimdsオプションを使用して互換性チェックを実行する方法を示しています。ocimdsオプションで検出された問題によっては、HeatWaveサービスにロードする前にスキーマを手動で編集する必要があります。

util.dumpInstance("", {mode: "dryrun", ocimds: true})

互換性の問題および互換性オプションを特定したら、データをエクスポートするコマンドでオプションを指定できます。

util.dumpInstance("<BucketPrefix>", {osBucketName: "<MDSBucket>", ocimds: true, 
    compatibility: ["force_innodb", "strip_definers", "strip_restricted_grants", 
    "skip_invalid_accounts", "strip_tablespaces", "ignore_missing_pks"] } )

次のカンマ区切りの互換性オプションを使用して、エクスポートされたデータを自動的に変更できます。これにより、これらの互換性の問題の一部が解決されます。

  • force_innodb: HeatWaveサービスでは、InnoDBストレージ・エンジンのみがサポートされます。このオプションは、非互換のストレージ・エンジンを使用するCREATE TABLE文のENGINE句を変更し、InnoDBで置き換えます。
  • strip_definers: ビュー、ルーチン、イベント、トリガーから、"DEFINER=account"句を削除します。HeatWaveサービスでは、スキーマをロードするユーザー以外の定義者を使用してこれらのオブジェクトを作成するには、特別な権限が必要です。DEFINER句を削除すると、それらのオブジェクトはそのデフォルト定義者によって作成されます。ビューおよびルーチンのSQL SECURITY句は、DEFINERからINVOKERに変更されます。これによって、それらを作成したユーザーのアクセス権限のかわりに、これらの問い合せやコールを行うアカウントのアクセス権限が使用されるようになります。データベースのセキュリティ・モデルで、呼出し元よりも多くの権限がビューやルーチンに必要な場合は、スキーマをロードする前に手動で変更してください。DEFINERおよびSQLのセキュリティを参照してください。
  • strip_restricted_grants: 特定の権限がHeatWaveサービスで制限されます。RELOADFILESUPERBINLOG_ADMINSET_USER_IDなどの権限です。これらの権限を付与してユーザーを作成することはできません。このオプションは、ダンプされたGRANT文からこれらの権限を削除します。
  • skip_invalid_accounts: パスワードが定義されていないユーザーはエクスポートできません。このオプションは、そのようなユーザーをスキップします。
  • strip_tablespaces: HeatWaveサービスには、表領域に対するいくつかの制限があります。このオプションは、TABLESPACEオプションをCREATE TABLE文から削除するため、すべての表がデフォルト表領域に作成されます。
  • 主キー・フラグ:
    • create_invisible_pks: 高可用性DBシステムでは主キーが必要です。可用性の高いDBシステムで使用するデータをエクスポートする場合は、主キーが表に定義されていない場合は、主キーを追加します。この互換性フラグによって、各表に必要な非表示の主キーが追加されます。前提条件を参照してください。
    • ignore_missing_pks: 高可用性DBシステムにインポートする予定がない場合、この互換性フラグはダンプ内の欠落している主キーを無視します。

また、ocimdsオプションが有効になっている場合、CREATE TABLE文のDATA DIRECTORYINDEX DIRECTORYおよびENCRYPTIONオプションは常にDDLスクリプトでコメント・アウトされます。

ノート

MySQLの古いバージョン(5.7.9など)をエクスポートする予定で、8.0.30より古いMySQLシェル・バージョンを使用している場合は、MySQLシェル・アップグレード・チェッカ・ユーティリティを実行して、移行に関するすべての潜在的な問題のレポートを生成することをお薦めします。アップグレード・チェッカ・ユーティリティを参照してください。