※ 本記事は、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データベースをターゲットとして使用しています。

 

アーキテクチャ:

Architecture

要件:

  • AWS RDSで実行されているMySQL 5.7, 8.0 バージョン・インスタンス
  • OCI上のOracle Autonomous database
  • MySQLのOCI Goldengateデプロイメント
  • OracleのOCI Goldengateデプロイメント
  • AWSとOCIの間の低レイテンシのネットワーク接続(プライベートVPNまたはFast Connectが推奨)

重要: OCI GGでサポートされているすべてのテクノロジおよびバージョンがここにリストされます – サポート対象

 

移行の手順:

  1. GG MySQLで変更データ取得抽出を構成します。これにより、MySQL DBで発生する変更の取得が開始されます。
  2. 初期ロード抽出を構成し、AWD MySQL RDSからすべての初期データを取得します
  3. ターゲットADBに初期ロード・データをロードするためのreplicatの構成
  4. 初期ロードの実行後に変更を適用するCDC replicatを構成します(HANDLECOLLISIONSを使用した重複に対処する必要がある場合があります)

 

Goldengateを構成する前にAWS RDS MySQLのセットアップ:

重要なノート: ここで実行するすべてのステップは、Amazon RDS MySQL 8.0を使用していますが、これらのステップを変更せずに、Amazon RDS MariaDB 10.5を使用することもできます。

  1. パラメータ・グループを作成し、次のパラメータを使用して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
  1. ネットワーク・エラーが発生しても抽出が失敗に耐えられるように、binlogの保持期間を少なくとも 24 時間に変更する必要があります

call mysql.rds_set_configuration(‘binlog retention hours’, 24);

  1. MariaDBバージョン10.2以降では、Oracle GoldenGateはMySQLと同じように機能しますが、新しい変数を構成する必要があります。

追加する必要がある変数は”binlog-annotate-row-events=OFF“です。

この変数を構成した後でMariaDBを再起動し、Extractプロセスを起動します

  1. リモート取得が機能するには、Oracle GoldenGateリモート取得ユーザーにアクセス権限を付与します。または、RDSの作成時に作成したadminユーザーを使用できます。

CREATE USER ‘ggadmin’@’%’ IDENTIFIED BY ‘<password>’;

GRANT ALL PRIVILEGES ON *.* TO ‘ggadmin’@’%’ WITH GRANT OPTION;

FLUSH PRIVILEGES;

  1. リモートのMySQLサーバーのserver_id値は0より大きくする必要があります。この値は、MySQLリモート・サーバーで次の文を発行することによって検証できます。:

                  SHOW VARIABLES LIKE ‘server_id’;

 

OCI GGをデプロイし、ソースAWS RDS MYSQLとOCI ADBの両方の接続を作成:           

  1. OCIにMySQL用のOCI Goldengateをデプロイ

            OCI Goldengateは、OCIメニューのOracle Databaseセクションにあります

             デプロイメントに移動してデプロイメントを作成

             テクノロジにMySQLを選択し、デプロイメントを作成

 

  1. デプロイメントの準備ができたら、OCIでAWS MySQL RDSへの接続を作成

               VPNまたはFast Connectがある場合は、’プライベート・エンドポイントを介したネットワーク接続’を使用し、プライベートIPおよびサブネットを指定する必要があります。MySQLデプロイメントへの接続の割当て

              割り当てるとGoldengateコンソールに表示されるので、接続を試みることができます

 

  1. 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にすでに表構造があると仮定 –

  1. CDC抽出を開始し、証跡を生成します。これらの証跡ファイルを消費するreplicatを起動しないでください。

CDC Extract 1

 

CDC Extract 2

CDC Extract 3

 

 

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

Initial Ext 1

Initial Ext 2

Initial Ext 3

 

 

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

Receiver 2

 

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

Receiver 3

Receiver 4

 

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

Init Rep 1

Initial Rep 2

Initial Rep 3

Initial Rep 4

すべての初期ロード・データの完了後、初期ロード・レプリケーションを停止して削除します。

 

  1. 新しい複製を作成して、CDCトレイルを消費します。HANDLECOLLISIONSを使用するようにこのreplicatを構成してから、replicatを起動します。

CDC Rep 1

CDC Rep 2

CDC Rep 3

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

CDC replicatを停止し、HANDLECOLLISIONSパラメータを削除して、CDC replicatを再起動します。

CDC Rep 4

CDC Rep 5

まとめ

このブログでは、AWS MySQL RDS/ Maria DBをOracle Autonomous Databaseに移行するためのエンドツーエンドのOCI Goldengate構成について学習しました。

Oracle Cloud Infrastructure Goldengateは、複数のソース・データベースとターゲット・データベースを使用する様々なユースケースに使用できる非常に強力なデータ統合プラットフォームを提供します。