※ 本記事は、Sunil Vernekarによる”Migrate AWS RDS MySQL/Maria DB to OCI using OCI Goldengate Service“を翻訳したものです。
2023年9月7日
皆さん、ようこそ…
このブログでは、OCI Goldengateサービスのデータ・レプリケーションを設定して、MySQL RDSをAWSからOCIに移行します。
Oracle GoldenGateは異種データ環境でのデータのレプリケーションを可能にする包括的なソフトウェアであるため、どのようなターゲットでも構いません。
このブログでは、OCI Autonomousデータベースをターゲットとして使用しています。
アーキテクチャ:

要件:
- AWS RDSで実行されているMySQL 5.7, 8.0 バージョン・インスタンス
- OCI上のOracle Autonomous database
- MySQLのOCI Goldengateデプロイメント
- OracleのOCI Goldengateデプロイメント
- AWSとOCIの間の低レイテンシのネットワーク接続(プライベートVPNまたはFast Connectが推奨)
重要: OCI GGでサポートされているすべてのテクノロジおよびバージョンがここにリストされます – サポート対象
移行の手順:
- GG MySQLで変更データ取得抽出を構成します。これにより、MySQL DBで発生する変更の取得が開始されます。
- 初期ロード抽出を構成し、AWD MySQL RDSからすべての初期データを取得します
- ターゲットADBに初期ロード・データをロードするためのreplicatの構成
- 初期ロードの実行後に変更を適用するCDC replicatを構成します(HANDLECOLLISIONSを使用した重複に対処する必要がある場合があります)
Goldengateを構成する前にAWS RDS MySQLのセットアップ:
重要なノート: ここで実行するすべてのステップは、Amazon RDS MySQL 8.0を使用していますが、これらのステップを変更せずに、Amazon RDS MariaDB 10.5を使用することもできます。
- パラメータ・グループを作成し、次のパラメータを使用してAWS MySQL RDSに割り当て、AWS MySQL RDSインスタンスを再起動します
- show VARIABLES LIKE ‘binlog_format’; à ROW
- show VARIABLES LIKE ‘binlog_row_image’; à FULL
- show VARIABLES LIKE ‘binlog_row_metadata’; à FULL
- ネットワーク・エラーが発生しても抽出が失敗に耐えられるように、binlogの保持期間を少なくとも 24 時間に変更する必要があります
call mysql.rds_set_configuration(‘binlog retention hours’, 24);
- MariaDBバージョン10.2以降では、Oracle GoldenGateはMySQLと同じように機能しますが、新しい変数を構成する必要があります。
追加する必要がある変数は”binlog-annotate-row-events=OFF“です。
この変数を構成した後でMariaDBを再起動し、Extractプロセスを起動します
- リモート取得が機能するには、Oracle GoldenGateリモート取得ユーザーにアクセス権限を付与します。または、RDSの作成時に作成したadminユーザーを使用できます。
CREATE USER ‘ggadmin’@’%’ IDENTIFIED BY ‘<password>’;
GRANT ALL PRIVILEGES ON *.* TO ‘ggadmin’@’%’ WITH GRANT OPTION;
FLUSH PRIVILEGES;
- リモートのMySQLサーバーのserver_id値は0より大きくする必要があります。この値は、MySQLリモート・サーバーで次の文を発行することによって検証できます。:
SHOW VARIABLES LIKE ‘server_id’;
OCI GGをデプロイし、ソースAWS RDS MYSQLとOCI ADBの両方の接続を作成:
- OCIにMySQL用のOCI Goldengateをデプロイ
OCI Goldengateは、OCIメニューのOracle Databaseセクションにあります
デプロイメントに移動してデプロイメントを作成
テクノロジにMySQLを選択し、デプロイメントを作成
- デプロイメントの準備ができたら、OCIでAWS MySQL RDSへの接続を作成
VPNまたはFast Connectがある場合は、’プライベート・エンドポイントを介したネットワーク接続’を使用し、プライベートIPおよびサブネットを指定する必要があります。MySQLデプロイメントへの接続の割当て
割り当てるとGoldengateコンソールに表示されるので、接続を試みることができます
- Oracle用のOCI GoldengateのデプロイメントとAutonomous Databaseへの接続を作成します。
OCI Autonomousデータベースには’ggadmin’としてGoldengateがすでにあり、ユーザーのロックを解除できるため、接続できるはずです
alter user ggadmin identified by <password> account unlock;
ALTER USER ggadmin QUOTA unlimited ON data;
GRANT UNLIMITED TABLESPACE TO ggadmin;
初期ロードとCDCの両方について、GoldenGate取得および適用プロセスを設定:
Goldengateを構成する前に、ターゲット・データベースでMySQL表構造を作成する必要があります。この場合、OCI Autonomousデータベースになります。Goldengateはデータと表の作成のみを手前に行う必要があるためです
ターゲットDBにすでに表構造があると仮定 –
- CDC抽出を開始し、証跡を生成します。これらの証跡ファイルを消費するreplicatを起動しないでください。



- 初期ロード抽出を開始し、初期ロードが完了するまで待機します。



- MySQLデプロイメントからOracleデプロイメントにTrailファイルを送信する必要があります。そのため、MySQLデプロイメントのGoldengateタイプの接続を作成し、それをOracleデプロイメントに割り当てます


次に、レシーバ・サービスを作成して、CDCと初期ロードの両方の証跡ファイルをOracleデプロイメントにプルします。


- ステップ2で生成された初期ロード・トレイルを消費する新しいreplicatを作成します。完了するまで待機してから、replicatを停止します。




すべての初期ロード・データの完了後、初期ロード・レプリケーションを停止して削除します。
- 新しい複製を作成して、CDCトレイルを消費します。HANDLECOLLISIONSを使用するようにこのreplicatを構成してから、replicatを起動します。



CDC Replicat (ステップ5)がすべての証跡を消費し、replicat lagおよびreplicat RBAをチェックして、CDC replicatが停止していることを確認します。この時点で、ソース・データベースとターゲット・データベースは同期している必要があります。
CDC replicatを停止し、HANDLECOLLISIONSパラメータを削除して、CDC replicatを再起動します。


まとめ
このブログでは、AWS MySQL RDS/ Maria DBをOracle Autonomous Databaseに移行するためのエンドツーエンドのOCI Goldengate構成について学習しました。
Oracle Cloud Infrastructure Goldengateは、複数のソース・データベースとターゲット・データベースを使用する様々なユースケースに使用できる非常に強力なデータ統合プラットフォームを提供します。
