トランザクション・ログの設定と要件

必要なバイナリ・ロギング設定やデータベース・サーバー変数など、Oracle GoldenGateのMySQLデータベースおよびサポートされているバリアントの準備方法について学習します。

ロギング・プロパティの構成

Oracle GoldenGateは、MySQLバイナリ・ログを使用して、ソース・トランザクションのレプリケートに必要なデータを格納します。Oracle GoldenGateの処理を開始する前に、バイナリ・ログをソース・システムに適切に構成する必要があります。

この項では、Oracle GoldenGate for MySQLに適用される次のバイナリ・ログ起動オプションおよびシステム変数について説明します。

ロギング・オプション 機能 要件
binlog_annotate_row_events ONOFF これらのイベントをバイナリ・ログに書き込むようにプライマリ・サーバーに指示するシステム変数。 MariaDBをソース・データベースとして使用する場合に必要です。

OFF

binlog_expire_logs_seconds 0 - 4294967295 サポートされている場合、このシステム変数はバイナリ・ログの有効期限を秒単位で設定します。 推奨値: >=86400
binlog_format ROW、STATEMENT、MIXED バイナリ・ロギング形式を設定するシステム変数。

MySQLがソース・データベースとして使用される場合に必要です。MIXEDまたはSTATEMENTに設定すると、ROWレベルのトランザクションのみが取得されます。

ROW

binlog retention hours 1 - 168 サポートされている場合、このシステム変数はバイナリ・ログの有効期限を時間単位で設定します。 推奨値: >=24
binlog_row_image FULL、MINIMAL、NOBLOB バイナリ・ログの列レベル・ロギングの様々なレベルを設定するシステム変数。

MySQLがソース・データベースとして使用される場合に必要です。

FULL

binlog_row_metadata FULL、MINIMAL 行ベースのロギングのためにバイナリ・ログに追加されるメタデータの量を構成するシステム変数。

MySQL 8.0以降をDDLサポートのソース・データベースとして使用する場合に必要です。

FULL

event_scheduler ON、OFF ハートビートの更新およびパージ・ジョブの作成を可能にするシステム変数。

Oracle GoldenGateのハートビート機能を実装する場合に必要です。

ON

log_bin ON、OFF バイナリ・ロギングのステータスを示すシステム変数。 MySQLがソース・データベースとして使用される場合に必要です。ONになっていない場合は、log-bin=binlogなどの名前を割り当てて設定します。
log_replica_updates ON、OFF 更新をプライマリ・サーバーから受信したときに、セカンダリ・サーバー自体のバイナリ・ログに記録するシステム変数。

MySQLがソース・データベースとして使用され、レプリカ・サーバーから取得するように構成されている場合に必要です。

ON

server_id 0 - 4294967295 バイナリ・ロギングが有効になっている場合に指定する必要があるシステム変数。レプリケーション・プライマリおよび各レプリケーション・レプリカで、値が0より大きく一意であることを確認してください。

MySQLがソース・データベースとして使用される場合に必要です。

>=1

データベース・レベルのロギングの検証

MySQLデータベースのOracle GoldenGateでの取得をサポートするために必要な、データベースの現在のバイナリ・ロギング設定を確認するには、次の問合せを実行します。設定を変更する必要がある場合は、「データベース・レベルのロギングの有効化」の手順に従います

  1. rootまたは割り当てられたデータベース・サービス管理者アカウントとしてMySQLにログインします。
    [root@srcdbserver ~]$ mysql -uroot -p
  2. 次のコマンドを発行して、データベースでバイナリ・ロギングが有効化されているかどうかを確認します。結果がONの場合、データベース・バイナリ・ログは有効です。
    show variables like ‘log_bin’;
  3. 次のコマンドを発行して、データベースが正しいバイナリ・ログ設定およびserver_idで有効化されているかどうかを確認します。binlog_format値がROWに設定され、binlog_row_imageおよびbinlog_row_metadataFULLに設定され、server_id変数が>=1に設定されていること、およびプライマリとレプリカに対して一意であることを確認します。

    show variables like ‘binlog_%’;
    show variables like ‘server_id’;
  4. このプロセスを繰り返して、DDLサポートやMariaDBサポートなどの要件に基づいて、「ロギング・プロパティの構成」にリストされているその他のオプションの変数を問い合せます。

データベース・レベルのロギングの有効化

必要に応じて、次のステップを実行して、MySQLデータベースのOracle GoldenGateでの取得をサポートするために必要なデータベース・バイナリ・ロギング設定を有効にします。「データベース・レベルのロギングの検証」の結果に基づいて、有効化または変更する必要がある設定のみを変更します。

  1. MySQL構成ファイルmy.cnf (Linuxの場合)またはmy.ini (Windowsの場合)を編集して、MySQLのOracle GoldenGateでの取得機能をサポートするために必要なシステム変数を有効にします。
    [root@srcdbserver ~]$ vi /etc/my.cnf
  2. バイナリ・ログを有効にするには、プリファレンスのlog-bin値を使用して、次のようなエントリを構成ファイルに追加します。
    log-bin=binlog
  3. 正しいバイナリ・ロギング形式およびserver_id変数を設定するには、次のように設定します。
    binlog-format=ROW
    binlog-row-image=FULL
    
    #For MySQL 8.0 and above, for DDL support
    binlog-row-metadata=FULL
    
    #Set to value > 0 and <= 4294967295
    server-id=1
  4. DDLサポートやMariaDBサポートなどの要件に基づいて、「ロギング・プロパティの構成」にリストされているその他のオプションのその他の変数を追加します。

  5. 保存してファイルを閉じます。

  6. データベースを再起動して、設定を有効にします。
    [root@srcdbserver ~]$ service mysqld restart
  7. 次のコマンドを使用して、データベース・サービスのステータスを確認します。
    [root@srcdbserver ~]$ service mysqld status

AmazonおよびAzure MySQLデータベース・サービスのシステム変数の変更

Oracle GoldenGateのExtractおよびハートビート機能を使用するようにAmazonおよびAzure MySQLデータベースを構成するには、必要な値にまだ設定されていない場合は、パラメータ・グループ、データベース作成/変更またはサーバー・パラメータ設定を使用して、必要な変更を追加する必要があります。これらのシステム変数を変更するには、次のガイドラインを使用します。

  1. Amazonでバイナリ・ロギングを有効にするには、データベースのバックアップを有効にする必要があります。有効にしていない場合、log_bin変数はOFFとしてレポートされ、Extractが異常終了し、binlogファイルのリストを取得できないことがレポートされます。

    データベースの作成時にバックアップを有効にするか、既存のデータベースを変更してバックアップ連隊を含めます。

  2. Amazon MySQLデータベースでは、binglog_format変数をROWに設定し、binlog_row_image変数をFULLに設定し、Oracle GoldenGateのハートビート機能を実装する場合はevent_schedulerONに設定し、DDL取得サポートを有効にする場合はbinlog_row_metadata変数をFULLに設定します。

    Amazon社が提供する手順に従って、既存のパラメータ・グループを作成または編集し、これらの変更を適用します。

    https://aws.amazon.com/premiumsupport/knowledge-center/enable-binary-logging-aurora/

  3. Azure MySQLデータベースでは、binlog_format変数をROWに、binlog_row_image変数をFULLに設定します。Microsoft社が提供する指示に従って、データベース・インスタンスのサーバー・パラメータ設定を変更します。

    https://docs.microsoft.com/en-us/azure/mysql/howto-server-parameters

データ使用可能性の確保

十分なバイナリ・ログ・データを保持し、Extractを停止した場合、または計画外の停止が発生した場合に、Extractをチェックポイントから再開できるようにします。Extractには、コミットされていない最も古い作業単位の開始点を含むバイナリ・ログ、およびそれ以降のすべてのバイナリ・ログへのアクセス権が必要です。推奨される保存期間は、少なくとも24時間は対応可能な、アクティブな情報とアーカイブされた情報の両方を含むトランザクション・データです。データ量とビジネス要件を考慮して最適な保存時間を決定するためにテストを実行しなければならない場合があります。

処理中にExtractで必要とされる、アクティブまたはバックアップ・ログのデータが保存されていない場合、次のいずれかの修正処理が必要になる場合があります。

  • バイナリ・ログ・データが使用可能な最新の時点からキャプチャを行う(およびターゲットで発生した可能性のあるデータ損失を受け入れる)ようにExtractを修正します。

  • ソース表とターゲット表を再同期してから、Oracle GoldenGate環境を再開します。

バイナリ・ログ・データの保持期間は、MySQLデータベースまたはバリアントに応じて異なる方法で増加できます。
  • MySQLサーバー、MySQL Heatwave、Azure Database for MySQLおよびMariaDBでは、変数binlog_expire_logs_secondsを増やして保持期間を調整できます。

  • Amazon Aurora for MySQLおよびAmazon RDS for MySQLでは、デフォルトのバイナリ・ログの保持設定はNULLです。つまり、Auroraの場合はログが遅延パージされ、RDS for MySQLの場合は保持されません。パラメータbinlog保持時間数を設定するには、次の手順を使用します。たとえば:

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

MySQLレプリケーション・レプリカに対する取得

MySQLレプリケーション・レプリカから取得するようにOracle GoldenGateを構成できます。

通常、レプリカで適用されるトランザクションは、レプリカのbinlogではなくリレー・ログに記録されます。レプリカがプライマリから受け取るトランザクションをbinlogに書き込むには、Oracle GoldenGateの他のバイナリ・ロギング・パラメータとともに、my.cnflog_replica_updatesオプションを1に指定して、レプリケーション・レプリカを起動する必要があります。プライマリのトランザクションがレプリカのbinlogに配置されたら、レプリカに通常のOracle GoldenGateのExtractを設定して取得を開始できます。