概要
Database Migration Service は、移行元データベースから Cloud SQL 移行先データベースへの 1 回限りの移行と継続的な移行をサポートしています。
MySQL でサポートされている移行元のデータベースは次のとおりです。
- Amazon RDS 5.6、5.7、8.0、8.4
- セルフマネージド(オンプレミス、またはお客様が完全に管理するクラウド VM 上)の MySQL 5.5、5.6、5.7、8.0、8.4
- Cloud SQL for MySQL 5.6、5.7、8.0、8.4
- Amazon Aurora 5.6、5.7、8.0、8.4
- Microsoft Azure Database for MySQL 5.7、8.0、8.4
MySQL 8.0 のソースの場合、Database Migration Service はマイナー バージョンの 8.0.18、8.0.26、8.0.27、8.0.28、8.0.30、8.0.31、8.0.32、8.0.33、8.0.34、8.0.35、8.0.36、8.0.37、8.0.39、8.0.40、8.0.41、8.0.42、8.0.43 もサポートします。
ソース データベースを構成する手順は次のとおりです。
- Cloud SQL ソースの場合: プライベート IP 接続を使用する Cloud SQL インスタンスから、RFC 1918 以外の IP アドレス範囲を使用する Cloud SQL インスタンスに移行する場合は、RFC 1918 以外の範囲を移行元 Cloud SQL インスタンスのネットワーク構成に追加します。Cloud SQL ドキュメントの承認済みネットワークを構成するをご覧ください。
- 移行元データベースから移行先データベースにデータを移行する前に、完全なダンプフェーズ中にすべてのデータ定義言語(DDL)の書き込みオペレーションを停止してください。 スクリプトを使用して、DDL オペレーションが停止していることを確認できます。移行が CDC フェーズに入ったら、DDL オペレーションを再開できます。
- 移行元データベースに、DEFINER 句を使用してユーザーが定義したメタデータが含まれていないことを確認します。 DEFINER 句を含むメタデータを含む MySQL 移行ジョブを作成して実行するをご覧ください。
- ソース データベースに
mysql、performance_schema、information_schema、ndbinfo、sysのシステム スキーマのテーブルを参照するオブジェクトが含まれている場合は、レプリカ データベースにもこれらのシステム スキーマ テーブルが含まれていることを確認してください。レプリカ データベースにこれらのテーブルがない場合、移行ジョブが
Unknown table in system schemaエラーで失敗する可能性があります。 - server-id オプションの値を 1 以上に設定する必要があります。詳細については、レプリケーションとバイナリログのオプションと変数をご覧ください。
GTID_MODEをONまたはOFFに設定して、グローバル トランザクション ID(GTID)のロギングを構成します。ON_PERMISSIVEのGTID_MODE値はサポートされていません。使用する値は、移行の要件によって異なります。
- リードレプリカが有効になっている
既存の宛先インスタンスに移行する場合は、
GTID_MODEをONに設定します。 - 手動ダンプを使用してデータを移行する場合は、
GTID_MODEをONに設定します。
GTID_MODEの詳細については、 グローバル トランザクション ID システム変数をご覧ください。- リードレプリカが有効になっている
既存の宛先インスタンスに移行する場合は、
-
移行元データベースへの接続に使用するユーザー アカウントを、どこからの接続でも受け入れるように構成する必要があります(ホスト =
%)。後のステップで、このユーザーに対してアクセスを制限できます。データベースの他の側面を危険にさらす可能性を制限するには、この目的のために別のアカウントを作成することをおすすめします。
移行とダンプの組み合わせは 4 種類あります。
- タイプ 1: 継続的な移行とマネージド ダンプ
- タイプ 2: 継続的な移行と手動ダンプ
- タイプ 3: 1 回限りの移行とマネージド ダンプ
- タイプ 4: 1 回限りの移行と手動ダンプ
移行とダンプの組み合わせの種類ごとの権限を以下のタブに示します。
タイプ 1
構成するユーザー アカウントに次の権限が必要です。
REPLICATION SLAVEEXECUTESELECTSHOW VIEWREPLICATION CLIENTRELOADTRIGGER- (Amazon RDS と Amazon Aurora からの移行の場合のみ)
LOCK TABLES
MySQL バージョン 8.0 以降: 最適なパフォーマンスを得るには、このアカウントに
BACKUP_ADMIN権限を付与しないようにしてください。タイプ 2
構成するユーザー アカウントに次の権限が必要です。
REPLICATION SLAVEEXECUTE
タイプ 3
構成するユーザー アカウントに次の権限が必要です。
SELECTSHOW VIEWTRIGGER- (Amazon RDS と Amazon Aurora からの移行の場合のみ)
LOCK TABLES - (
GTID_MODE = ON設定の移行元からの移行のみ)RELOAD
MySQL バージョン 8.0 以降: 最適なパフォーマンスを得るには、このアカウントに
BACKUP_ADMIN権限を付与しないようにしてください。タイプ 4
権限は必要ありません。
- バイナリログを構成する前に、次のことを確認してください。
- 移行元データベースでバイナリログを有効にします。
- 行ベースのバイナリ ロギングを使用します。
- データベースの移行が完了するまでバイナリログを保持します。通常は 1 週間で十分です。
バイナリログを構成するには、ソースのセクションを開きます。
セルフホスト型 MySQL
MySQL のバージョンに応じて、レプリケーションが行われるのに十分な期間を指定します。
- MySQL 5.5 ~ 5.7:
expire_logs_days - MySQL 8.0:
expire_logs_days、binlog_expire_logs_seconds
Microsoft Azure Database for MySQL
Microsoft Azure Database for MySQL では、バイナリ ロギングはデフォルトで有効になっています。有効にする必要はありません。詳細については、Microsoft のドキュメントをご覧ください。
次の必須パラメータを構成します。
binlog_expire_logs_secondsには、データベースの移行をサポートするのに十分な期間を設定します。詳細については、Azure Database for PostgreSQL でサーバー パラメータを構成すると、Microsoft ドキュメントの
binlog_expire_logs_secondsパラメータをご覧ください。- サーバーを再起動して、変更を反映させます。
Amazon RDS
Amazon RDS の場合、
binlog retention hoursパラメータを構成して、パラメータ グループで行ベースの構成を設定します。このパラメータは、Amazon RDS がバイナリログ ファイルを保持する時間数を指定するために使用されます。Amazon RDS でバイナリログの保持期間を設定するには、
mysql.rds_set_configurationストアド プロシージャを使用し、レプリケーションが行われるのに十分な期間を指定します。次に例を示します。call mysql.rds_set_configuration('binlog retention hours',168);Amazon Aurora
Amazon Aurora の場合、次の操作を行います。
- MySQL データベースのバイナリ ロギングを有効にします。
- バイナリログの保持期間を設定します。
mysql> call mysql.rds_set_configuration('binlog retention hours', 168); - サーバーを再起動して、変更を反映させます。
- (システム データベース内のテーブルを除く)すべてのテーブルで InnoDB ストレージ エンジンを使用していること。
- 移行元データベースへの接続に使用するユーザー アカウントのパスワードは、32 文字以内にする必要があります。これは MySQL Replication 固有の問題です。
Microsoft Azure Database for MySQL ソースの場合のみ:
require_secure_transport設定の値を確認します。デフォルトでは、Microsoft Azure データベースではすべての受信接続で SSL/TLS 暗号化が必要です。
require_secure_transport値に応じて、ソース接続プロファイルを作成するときに、次のいずれかの暗号化設定を使用します。require_secure_transportがonに設定されている場合は、[Basic]、[TLS]、[mTLS] を選択します。require_secure_transportがoffに設定されている場合は、[なし] を選択します。