MySQLに関するその他のOracle GoldenGateパラメータ

MySQLインストールで次のパラメータを使用できます。デフォルト以外の設定がMySQLデータベースに対して使用される場合、必須です。ビジネス要件や構成によっては、これら以外のOracle GoldenGateパラメータも必要です。

パラメータ 説明

CONNECTIONPORT port_numberを使用したDBOPTIONS

MySQLがデフォルトである3306で実行されない場合、Oracle GoldenGateプロセスの接続先のMySQLインスタンスのTCP/IP接続ポート番号をVAMに指定するために必要です。

DBOPTIONS CONNECTIONPORT 3307 

HOST host_idを使用したDBOPTIONS

Replicatの接続先のシステムをホストしているMySQLのDNS名またはIPアドレスを指定します。

ALLOWLOBDATATRUNCATEを使用したDBOPTIONS

レプリケートするLOBデータがターゲットMySQLのCHARVARCHARBINARYまたはVARBINARY列に対して大きすぎる場合にReplicatが異常終了することを防ぎます。

USERIDおよびPASSWORDを使用したSOURCEDB

MySQLデータベースに接続するOracle GoldenGateプロセスによって使用されるデータベース、ユーザー名およびパスワードで構成されるデータベース接続情報を指定します。MySQLがデフォルト・ポートである3306で実行されていない場合、SOURCEDB dbname@hostname:port, USERID user, PASSWORD passwordのようにポート番号を含む完全な接続文字列を指定する必要があります。.次に例を示します。

SOURCEDB mydb@mymachine:3307, USERID myuser, PASSWORD mypassword

MySQLデータベースをポート3306で実行中ではない場合、GGSCI経由でデータベースに影響するコマンドを発行する際に、DBLOGINコマンドでMySQLデータベースの接続ポートも指定する必要があります。

DBLOGIN SOURCEDB dbname@hostname:port, USERID user, PASSWORD password

たとえば:

GGSCI> DBLOGIN SOURCEDB mydb@mymachine:3307, USERID myuser, PASSWORD mypassword 

SQLEXEC

ReplicatでMySQLの接続タイムアウトを回避できるようにするため、Replicatパラメータ・ファイルのSQLEXEC文で次のコマンドを構成します。

SQLEXEC "select CURRENT_TIME();" EVERY n MINUTES

説明: nは、Replicatで再接続を行うまでの最大間隔です。推奨される接続タイムアウトは31536000秒(365日)です。

グローバル変数sql_mode

MySQL 5.7でハートビート表を機能させるには、MySQLグローバル変数sql_modeNO_ZERO_IN_DATENO_ZERO_DATEを含めないでください。次の例では、sql_modeNO_ZERO_IN_DATE、NO_ZERO_DATE値が含まれています。

mysql> show variables like '%sql_mode%';+---------------+-
+
| Variable_name | Value                                                      
                                                                              
|
+---------------+------------------------------------------------
+
| sql_mode      |
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_
DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+---------------+------------------------------------------------
-----------------------------------------------------------------
+
1 row in set (0.00 sec)
次のコマンドを発行して、これらの値を削除する必要があります。
mysql> Set global
sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO
_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> show variables like '%sql_mode%';
+---------------+--------------------------------------
-------------------------------------------------+
| Variable_name | Value                                                      
                                                 |
+---------------+--------------------------------------
-------------------------------------------------+
| sql_mode      |
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREA
TE_USER,NO_ENGINE_SUBSTITUTION |
+---------------+-----------------------------------
-------------------------------------------------+
1 row in set (0.01 sec)