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の構成ファイルを参照してください。
互換性チェック 🔗
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サービスで特定の権限が制限されます。RELOAD
、FILE
、SUPER
、BINLOG_ADMIN
、SET_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 DIRECTORY
、INDEX DIRECTORY
およびENCRYPTION
オプションは常にDDLスクリプトでコメント・アウトされます。
MySQLの古いバージョン(5.7.9など)をエクスポートする予定で、8.0.30より古いMySQLシェル・バージョンを使用している場合は、MySQLシェル・アップグレード・チェッカ・ユーティリティを実行して、移行に関するすべての潜在的な問題のレポートを生成することをお薦めします。アップグレード・チェッカ・ユーティリティを参照してください。
関連トピック