概要
Database Migration Service は、移行元のデータベースから Cloud SQL 移行先データベースへの 1 回限りの移行と継続的な移行をサポートしています。
MySQL でサポートされている移行元のデータベースには次が含まれます。
- Amazon RDS 5.6、5.7、8.0
- セルフマネージド MySQL(オンプレミスまたはお客様が完全に管理するクラウド VM 上)5.5、5.6、5.7、8.0
- Cloud SQL for MySQL 5.6、5.7、8.0、8.4
- Amazon Aurora 5.6、5.7、8.0
- Microsoft Azure Database for MySQL 5.7、8.0
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 のマイナー バージョンもサポートしています。
ソース データベースを構成する手順は次のとおりです。
- Cloud SQL ソースの場合: プライベート IP 接続を使用する Cloud SQL インスタンスから、RFC 1918 以外のアドレス IP 範囲を使用する Cloud SQL インスタンスに移行する場合は、ソースの Cloud SQL インスタンスのネットワーク構成に RFC 1918 以外の範囲を追加します。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 SLAVE
EXECUTE
SELECT
SHOW VIEW
REPLICATION CLIENT
RELOAD
TRIGGER
- (Amazon RDS と Amazon Aurora からの移行の場合のみ)
LOCK TABLES
MySQL バージョン 8.0 以降: パフォーマンスを最適にするには、このアカウントに
BACKUP_ADMIN
権限を付与しないでください。タイプ 2
構成するユーザー アカウントに次の権限が必要です。
REPLICATION SLAVE
EXECUTE
タイプ 3
構成するユーザー アカウントに次の権限が必要です。
SELECT
SHOW VIEW
TRIGGER
- (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 レプリケーションに固有の問題です。
Microsoft Azure Database for MySQL ソースの場合のみ:
require_secure_transport
設定の値を確認します。デフォルトでは、Microsoft Azure データベースでは、すべての受信接続で SSL/TLS 暗号化が必要です。
require_secure_transport
値に応じて、ソース接続プロファイルを作成するときに、次のいずれかの暗号化設定を使用します。require_secure_transport
がon
に設定されている場合は、[基本]、[TLS]、または [mTLS] を選択します。require_secure_transport
がoff
に設定されている場合は、[なし] を選択します。