ログ・パラメータの設定
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は次のパラメータ設定を確認してこの索引ファイル・パスを取得します。
-
Extractの
TRANLOGOPTIONS
パラメータとALTLOGDEST
オプション。このパラメータでログ索引ファイルの場所が指定されている場合、Extractでは、MySQLサーバー構成ファイルで指定されているデフォルトよりもこの場所を優先します。ALTLOGDEST
が使用される場合、バイナリ・ログ索引ファイルも指定されたディレクトリに格納される必要があります。このパラメータは、MySQL構成ファイルで索引ファイルのフル・パス名が指定されていないか、間違った場所が指定されている場合、または同じマシンに複数のMySQLのインストールがある場合に使用されます。Oracle GoldenGate 21c以降、ALTLOGDEST
パラメータはローカルExtractではオプションですが、リモートExtractの場合、このパラメータは必須です。ALTLOGDEST
が指定されていない場合、バイナリ・ログ索引およびバイナリ・ログ・ファイルパスはデータベースから直接フェッチされます。このようにフェッチされるパスも、既存のプロセスと同じアクセシビリティ・チェックの対象となります。TRANLOGOPTIONS
をALTLOGDEST
,とともに使用して索引ファイル・パスを指定するには、次のようなコマンドを使用します。TRANLOGOPTIONS ALTLOGDEST "/mnt/rdbms/mysql/data/logs/binlog.index"
リモート・サーバーから取得する場合、またはリモート取得の場合は、リモート・サーバー上の索引ファイル・パスのかわりに
REMOTE
オプションを指定するのみで済みます。リモート取得の場合は、Extractパラメータ・ファイルで次のように指定します。TRANLOGOPTIONS ALTLOGDEST REMOTE
-
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はそれを使用します。 -
-
MariaDBバージョン10.2以降では、Oracle GoldenGateはMySQLの場合と同様に動作しますが、
my.cnf
ファイルまたはmy.ini
ファイルで新しい変数を構成する必要があります。追加する必要がある変数は、binlog-annotate-row-events=OFF
です。この変数を構成した後、MariaDBを再起動し、抽出プロセスを開始します。