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 HeatWaveサービスには、MySQLインスタンスに存在しないセキュリティ関連の制限がいくつかあります。ダンプされたデータに対して互換性チェックを実行するには、ダンプユーティリティーの ocimdsオプションを使用します。問題がある場合、ユーティリティーはダンプを中止し、問題の詳細なリストを生成して、それらを修正する手順を提案します。
次のコマンドは、dryrunモードで ocimdsオプションを使用して互換性チェックを実行する方法を示しています。ocimdsオプションで検出された問題によっては、MySQL HeatWave Serviceにロードする前にスキーマを手動で編集する必要があります。
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: MySQL HeatWaveサービスでは、InnoDBストレージ・エンジンのみがサポートされます。このオプションは、互換性のないストレージ・エンジンを使用するCREATE TABLE文のENGINE句を変更し、InnoDBで置き換えます。strip_definers: ビュー、ルーチン、イベント、トリガーから、"DEFINER=account"句を削除します。MySQL HeatWaveサービスでは、スキーマをロードするユーザー以外の定義者を使用してこれらのオブジェクトを作成するには、特別な権限が必要です。DEFINER句を削除すると、それらのオブジェクトはそのデフォルト定義者によって作成されます。ビューおよびルーチンのSQL SECURITY句は、DEFINERからINVOKERに変更されます。これによって、それらを作成したユーザーのアクセス権限のかわりに、これらの問い合せやコールを行うアカウントのアクセス権限が使用されるようになります。データベースのセキュリティ・モデルで、呼出し元よりも多くの権限がビューやルーチンに必要な場合は、スキーマをロードする前に手動で変更してください。DEFINERおよびSQLのセキュリティを参照してください。strip_restricted_grants: 特定の権限がMySQL HeatWave Serviceで制限されます。RELOAD、FILE、SUPER、BINLOG_ADMIN、SET_USER_IDなどの権限です。これらの権限を付与してユーザーを作成することはできません。このオプションは、ダンプされたGRANT文からこれらの権限を削除します。skip_invalid_accounts: パスワードが定義されていないユーザーはエクスポートできません。このオプションは、そのようなユーザーをスキップします。strip_tablespaces: MySQL HeatWaveサービスでは、表領域にいくつかの制限があります。このオプションでは、CREATE TABLE文からTABLESPACEオプションを削除し、すべての表がデフォルトの表領域に作成されるようにします。- 主キー・フラグ:
create_invisible_pks: 高可用性DBシステムでは主キーが必要です。高可用性DBシステムで使用するためにデータをエクスポートする場合は、主キーが表に定義されていない場合は、主キーを追加します。この互換性フラグによって、各表に必要な非表示の主キーが追加されます。前提条件を参照してください。ignore_missing_pks: 高可用性DBシステムにインポートする予定がない場合、この互換性フラグはダンプ内の欠落している主キーを無視します。
また、ocimdsオプションが有効になっている場合、CREATE TABLE文のDATA DIRECTORY、INDEX DIRECTORYおよびENCRYPTIONオプションは常にDDLスクリプトでコメント・アウトされます。
MySQLの古いバージョン(5.7.9など)をエクスポートする予定で、8.0.30より古いMySQLシェル・バージョンを使用している場合は、MySQLシェル・アップグレード・チェッカ・ユーティリティを実行して、移行に関するすべての潜在的な問題のレポートを生成することをお薦めします。アップグレード・チェッカ・ユーティリティを参照してください。
関連トピック