ログ・パラメータの設定

MySQLのトランザクション・ログから取得するには、Oracle GoldenGate Extractプロセスがすべてのバイナリ・ログ・ファイルのパスを含む索引ファイルを検索できる必要があります。

Extractは、すべての表列がバイナリ・ログに存在するものと想定します。その結果、完全として設定されたbinlog_row_imageがサポートされ、これがデフォルトになります。他の値のbinlog_row_imageはサポートされません。

ノート:

バイナリ・ログは少なくとも24時間保持することをお薦めします。

MySQL 5.7では、server_idオプションをlog-binとともに指定する必要があり、そのようにしないとサーバーが起動しません。MySQL 8.0では、server_idはデフォルトで有効化されます。

Extractは次のパラメータ設定を確認してこの索引ファイル・パスを取得します。

  1. ExtractのTRANLOGOPTIONSパラメータとALTLOGDESTオプション。このパラメータでログ索引ファイルの場所が指定されている場合、Extractでは、MySQLサーバー構成ファイルで指定されているデフォルトよりもこの場所を優先します。ALTLOGDESTが使用される場合、バイナリ・ログ索引ファイルも指定されたディレクトリに格納される必要があります。このパラメータは、MySQL構成ファイルで索引ファイルのフル・パス名が指定されていないか、間違った場所が指定されている場合、または同じマシンに複数のMySQLのインストールがある場合に使用されます。Oracle GoldenGate 21c以降、ALTLOGDESTパラメータはローカルExtractではオプションですが、リモートExtractの場合、このパラメータは必須です。ALTLOGDESTが指定されていない場合、バイナリ・ログ索引およびバイナリ・ログ・ファイルパスはデータベースから直接フェッチされます。このようにフェッチされるパスも、既存のプロセスと同じアクセシビリティ・チェックの対象となります。

    TRANLOGOPTIONSALTLOGDEST,とともに使用して索引ファイル・パスを指定するには、次のようなコマンドを使用します。

    TRANLOGOPTIONS ALTLOGDEST "/mnt/rdbms/mysql/data/logs/binlog.index"

    リモート・サーバーから取得する場合、またはリモート取得の場合は、リモート・サーバー上の索引ファイル・パスのかわりにREMOTEオプションを指定するのみで済みます。リモート取得の場合は、Extractパラメータ・ファイルで次のように指定します。

    TRANLOGOPTIONS ALTLOGDEST REMOTE

  2. MySQLサーバー構成ファイル: 構成ファイルには、MySQLのサーバーとクライアントのデフォルト起動オプションが格納されます。Windowsでは、構成ファイルの名前はmy.iniです。他のプラットフォームでは、my.cnfです。ALTLOGDEST付きのTRANLOGOPTIONSが指定されていない場合、Extractは構成ファイルからログ・ファイルの場所に関する情報を取得します。ただし、ALTLOGDESTを指定している場合でも、次のExtractパラメータは正しく設定する必要があります。

    • binlog-ignore-db=oggddl: DDLログ履歴表がbinlogに入力されないようにします。これはmy.cnfまたはmy.iniファイルで設定されます。

    • log-bin: このパラメータは、バイナリ・ロギングの有効化に使用されます。このパラメータはバイナリ・ログ索引ファイルの場所も指定します。ALTLOGDESTが使用される場合でもOracle GoldenGateの必須パラメータです。log-binが指定されていないと、バイナリ・ロギングが無効になり、Extractからエラーが返されます。

    • log-bin-index: このパラメータでは、バイナリ・ログ索引の場所を指定します。使用されていない場合、Extractは索引ファイルがログ・ファイルと同じ場所にあるとみなします。このパラメータが使用され、バイナリ・ログが含まれるディレクトリとは異なるディレクトリが指定されている場合、Extractの起動後、バイナリ・ログは移動できません。

    • max_binlog_size: このパラメータでは、バイナリ・ログ・ファイルのサイズをバイト単位で指定します。

      ノート:

      現在のログのサイズがmax_binlog_size値に達すると、新しいファイルにロールオーバーする前にトランザクションの記録を終了する必要がある場合を除き、サーバーでは新しいバイナリ・ログ・ファイルが自動的に作成されます。

    • binlog_format: このパラメータでは、ログの形式を設定します。ROWという値に設定する必要があります。これによって、DML文をバイナリ形式で記録するようデータベースに指示されます。Extractは、ROW以外のbinlog_formatが検出されたときに、異常終了するのではなく、ROW形式で書き込まれていないbinlogイベントを何もせずに無視します。

      ノート:

      MySQLのバイナリ・ロギングでは、特定の表についてロギングを有効または無効にすることはできません。データベースのすべての表にグローバルに適用されます。

    • mysql.rds_set_configuration: MySQL Amazon RDSインスタンスから取得する場合、MySQLコマンドラインでmysql.rds_set_configuratonストアド・プロシージャをコールして、特定の期間のバイナリ・ログを保持する必要があります。デフォルトでは、MySQL Amazon RDSのbinlog_retention_hoursのデフォルト値はNULLに設定されています。これは、バイナリ・ログが保持されないことを意味します。

      次の例は、バイナリ・ログを24時間保持するコマンドを示しています。

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

    構成ファイルを検出するために、ExtractはMYSQL_HOME環境変数を確認します。MYSQL_HOMEが設定されている場合、Extractは指定されたディレクトリの構成ファイルを使用します。MYSQL_HOMEが設定されていない場合、Extractはinformation_schema.global_variables表に問い合せてMySQLのインストール・ディレクトリを決定します。構成ファイルがそのディレクトリにある場合、Extractはそれを使用します。

  3. MariaDBバージョン10.2以降では、Oracle GoldenGateはMySQLの場合と同様に動作しますが、my.cnfファイルまたはmy.iniファイルで新しい変数を構成する必要があります。追加する必要がある変数は、binlog-annotate-row-events=OFFです。この変数を構成した後、MariaDBを再起動し、抽出プロセスを開始します。