トランザクション・ログの設定と要件
必要なバイナリ・ロギング設定やデータベース・サーバー変数など、Oracle GoldenGateのMySQLデータベースおよびサポートされているバリアントの準備方法について学習します。
ロギング・プロパティの構成
Oracle GoldenGateは、MySQLバイナリ・ログを使用して、ソース・トランザクションのレプリケートに必要なデータを格納します。Oracle GoldenGateの処理を開始する前に、バイナリ・ログをソース・システムに適切に構成する必要があります。
この項では、Oracle GoldenGate for MySQLに適用される次のバイナリ・ログ起動オプションおよびシステム変数について説明します。
ロギング・オプション | 値 | 機能 | 要件 |
---|---|---|---|
binlog_annotate_row_events |
ON 、OFF |
これらのイベントをバイナリ・ログに書き込むようにプライマリ・サーバーに指示するシステム変数。 | MariaDBをソース・データベースとして使用する場合に必要です。
|
binlog_expire_logs_seconds |
0 - 4294967295 |
サポートされている場合、このシステム変数はバイナリ・ログの有効期限を秒単位で設定します。 | 推奨値: >=86400 |
binlog_format |
ROW、STATEMENT、MIXED |
バイナリ・ロギング形式を設定するシステム変数。 |
MySQLがソース・データベースとして使用される場合に必要です。
|
binlog retention hours |
1 - 168 |
サポートされている場合、このシステム変数はバイナリ・ログの有効期限を時間単位で設定します。 | 推奨値: >=24 |
binlog_row_image |
FULL、MINIMAL、NOBLOB |
バイナリ・ログの列レベル・ロギングの様々なレベルを設定するシステム変数。 |
MySQLがソース・データベースとして使用される場合に必要です。
|
binlog_row_metadata |
FULL、MINIMAL |
行ベースのロギングのためにバイナリ・ログに追加されるメタデータの量を構成するシステム変数。 |
MySQL 8.0以降をDDLサポートのソース・データベースとして使用する場合に必要です。
|
event_scheduler |
ON、OFF |
ハートビートの更新およびパージ・ジョブの作成を可能にするシステム変数。 |
Oracle GoldenGateのハートビート機能を実装する場合に必要です。
|
log_bin |
ON、OFF |
バイナリ・ロギングのステータスを示すシステム変数。 | MySQLがソース・データベースとして使用される場合に必要です。ON になっていない場合は、log-bin=binlog などの名前を割り当てて設定します。 |
log_replica_updates |
ON、OFF |
更新をプライマリ・サーバーから受信したときに、セカンダリ・サーバー自体のバイナリ・ログに記録するシステム変数。 |
MySQLがソース・データベースとして使用され、レプリカ・サーバーから取得するように構成されている場合に必要です。
|
server_id |
0 - 4294967295 |
バイナリ・ロギングが有効になっている場合に指定する必要があるシステム変数。レプリケーション・プライマリおよび各レプリケーション・レプリカで、値が0より大きく一意であることを確認してください。 |
MySQLがソース・データベースとして使用される場合に必要です。
|
データベース・レベルのロギングの検証
MySQLデータベースのOracle GoldenGateでの取得をサポートするために必要な、データベースの現在のバイナリ・ロギング設定を確認するには、次の問合せを実行します。設定を変更する必要がある場合は、「データベース・レベルのロギングの有効化」の手順に従います
-
rootまたは割り当てられたデータベース・サービス管理者アカウントとしてMySQLにログインします。
[root@srcdbserver ~]$ mysql -uroot -p
-
次のコマンドを発行して、データベースでバイナリ・ロギングが有効化されているかどうかを確認します。結果がONの場合、データベース・バイナリ・ログは有効です。
show variables like ‘log_bin’;
-
次のコマンドを発行して、データベースが正しいバイナリ・ログ設定および
server_id
で有効化されているかどうかを確認します。binlog_format
値がROW
に設定され、binlog_row_image
およびbinlog_row_metadata
がFULL
に設定され、server_id
変数が>=1
に設定されていること、およびプライマリとレプリカに対して一意であることを確認します。show variables like ‘binlog_%’; show variables like ‘server_id’;
-
このプロセスを繰り返して、DDLサポートやMariaDBサポートなどの要件に基づいて、「ロギング・プロパティの構成」にリストされているその他のオプションの変数を問い合せます。
データベース・レベルのロギングの有効化
必要に応じて、次のステップを実行して、MySQLデータベースのOracle GoldenGateでの取得をサポートするために必要なデータベース・バイナリ・ロギング設定を有効にします。「データベース・レベルのロギングの検証」の結果に基づいて、有効化または変更する必要がある設定のみを変更します。
-
MySQL構成ファイル
my.cnf
(Linuxの場合)またはmy.ini
(Windowsの場合)を編集して、MySQLのOracle GoldenGateでの取得機能をサポートするために必要なシステム変数を有効にします。[root@srcdbserver ~]$ vi /etc/my.cnf
-
バイナリ・ログを有効にするには、プリファレンスのlog-bin値を使用して、次のようなエントリを構成ファイルに追加します。
log-bin=binlog
-
正しいバイナリ・ロギング形式および
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
-
DDLサポートやMariaDBサポートなどの要件に基づいて、「ロギング・プロパティの構成」にリストされているその他のオプションのその他の変数を追加します。
-
保存してファイルを閉じます。
-
データベースを再起動して、設定を有効にします。
[root@srcdbserver ~]$ service mysqld restart
-
次のコマンドを使用して、データベース・サービスのステータスを確認します。
[root@srcdbserver ~]$ service mysqld status
AmazonおよびAzure MySQLデータベース・サービスのシステム変数の変更
Oracle GoldenGateのExtractおよびハートビート機能を使用するようにAmazonおよびAzure MySQLデータベースを構成するには、必要な値にまだ設定されていない場合は、パラメータ・グループ、データベース作成/変更またはサーバー・パラメータ設定を使用して、必要な変更を追加する必要があります。これらのシステム変数を変更するには、次のガイドラインを使用します。
-
Amazonでバイナリ・ロギングを有効にするには、データベースのバックアップを有効にする必要があります。有効にしていない場合、
log_bin
変数はOFF
としてレポートされ、Extractが異常終了し、binlog
ファイルのリストを取得できないことがレポートされます。データベースの作成時にバックアップを有効にするか、既存のデータベースを変更してバックアップ連隊を含めます。
-
Amazon MySQLデータベースでは、
binglog_format
変数をROW
に設定し、binlog_row_image
変数をFULL
に設定し、Oracle GoldenGateのハートビート機能を実装する場合はevent_scheduler
をON
に設定し、DDL取得サポートを有効にする場合はbinlog_row_metadata
変数をFULL
に設定します。Amazon社が提供する手順に従って、既存のパラメータ・グループを作成または編集し、これらの変更を適用します。
https://aws.amazon.com/premiumsupport/knowledge-center/enable-binary-logging-aurora/
-
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 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.cnf
でlog_replica_updates
オプションを1
に指定して、レプリケーション・レプリカを起動する必要があります。プライマリのトランザクションがレプリカのbinlog
に配置されたら、レプリカに通常のOracle GoldenGateのExtractを設定して取得を開始できます。