12 MySQLのサポート対象の理解
この章では、Oracle GoldenGateでサポートされているデータベースと表の機能について説明します。
内容は次のとおりです。
MySQLの文字セット
MySQLには、ユーザーが異なるレベルで異なる文字セットを指定できる機能があります。
レベル | 例 |
---|---|
データベース |
create database test charset utf8; |
表 |
create table test( id int, name char(100)) charset utf8; |
列 |
create table test ( id int, name1 char(100) charset gbk, name2 char(100) charset utf8)); |
サポートの制限事項
-
データベースの文字セットをutf8mb4/utf8に指定すると、デフォルトの照合は
utf8mb4_unicode_ci
/utf8_general_ci
になります。collation_server=utf8mb4_bin
を指定すると、データベースはデータをバイナリとして解釈します。たとえば、CHAR
列の長さを4に指定した場合、4バイトを超えるデータを挿入しようとすると、データが長すぎることがターゲット・データベースから警告されますが、返されるバイト長は16 (utf8mb4の場合)になります。これはデータベースの制限のため、Oracle GoldenGateではバイナリ照合をサポートしていません。この問題を解決するには、文字セットがutf8mb4およびcollation_server=utf8_bin
(utf8)に設定されている場合に、collation_server=utf8mb4_bin
を指定します。 -
次の文字セットはサポートされていません。
armscii8
keybcs2
utf16le
geostd8
親トピック: MySQLのサポート対象の理解
サポートされているMySQLデータ型
MySQLでは次のデータ型がサポートされています。
-
CHAR
-
VARCHAR
-
INT
-
TINYINT
-
SMALL
INT
-
MEDIUM INT
-
BIG INT
-
DECIMAL
-
FLOAT
-
DOUBLE
-
DATE
-
TIME
-
YEAR
-
DATETIME
-
TIMESTAMP
-
BINARY
-
VARBINARY
-
TEXT
-
TINYTEXT
-
MEDIUMTEXT
-
LONGTEXT
-
BLOB
-
TINYBLOB
-
MEDIUMBLOB
-
LONGBLOB
-
ENUM
-
BIT(M)
親トピック: MySQLのサポート対象の理解
制限事項および説明
Oracle GoldenGate for MySQLの実行時には、次の点に注意する必要があります。
-
ファンクション索引は、取得または配信ではサポートされていません。
-
Oracle GoldenGateでは、
BLOB
型またはTEXT
型が主キーとして使用される場合はサポートされません。 -
Oracle GoldenGateでは、UTF8およびUCS2文字セットがサポートされます。UTF8型は、証跡に書き込まれる前に、Oracle GoldenGateによってUTF16に変換されます。
-
UTF32はOracle GoldenGateではサポートされません。
-
Oracle GoldenGateでは、
TIME
型の範囲が00:00:00から23:59:59までサポートされます。 -
Oracle GoldenGateでは、
0001/01/03:00:00:00
から9999/12/31:23:59:59
のタイムスタンプ・データをサポートします。タイムスタンプがGMTからローカル時間に変換されると、これらの制限も変換後のタイムスタンプに適用されます。タイムゾーンに応じて、変換により時間が追加または引かれる場合があり、これにより、タイムスタンプがサポートされている上限を超えたり、下回ったりすることがあります。 -
Oracle GoldenGateインストール・サーバーのタイムゾーンがソース・データベース・サーバーのタイムゾーンと一致しない場合、ターゲット・データベースに送信されるTIMESTAMPデータはソース・データベースとは異なります。
Classic Architectureの場合は、
TZ
というOracle GoldenGateのセッション変数を作成し、データベースのタイムゾーン値と同じ値に設定します。 -
Oracle GoldenGateでは、マイナスの日付はサポートされていません。
-
浮動小数点数の範囲および精度のサポートは、ホスト・マシンによって異なります。通常は有効桁数が16桁の精度ですが、データベースのドキュメントで想定されている近似について確認してください。Oracle GoldenGateでは、サポートされる精度を超える値は丸められるか切り捨てられます。
-
ENUM
型を非strictのsql_mode
で使用すると、非strictのsql_mode
では無効なENUM
値の入力が防止されず、エラーが返されます。この状況を回避するには、次のいずれかの操作を行います。-
sql_mode
をSTRICT
として使用して、Extractを再起動します。これによってユーザーはどのデータ型の無効な値も入力できなくなります。IEユーザーはデータ型の有効な値のみを入力できます。 -
非strictの
sql_mode
を引き続き使用しますが、ENUM
データ型は使用しません。 -
非strictの
sql_mode
を引き続き使用し、データベースの有効な値でENUM
データ型を使用します。無効な値を指定した場合、データベースではそのまま受け入れられますがExtractは異常終了します。
-
-
MySQLターゲットのトランザクション境界を維持するには、MyISAMエンジンではなくInnoDBトランザクション・データベース・エンジンを指定して、ターゲット表を作成または変更します。MyISAMを使用すると、Replicatのレコードは受信時に適用されるため、自動コミットをオフにしていても、トランザクションの整合性が保証されません。MyISAMではトランザクションをロールバックできません。
-
ビューとの間の抽出およびレプリケーションはサポートされていません。
-
スレーブによって適用されるトランザクションは、スレーブの
binlog
ではなくリレー・ログに記録されます。スレーブがマスターから受け取るトランザクションをbinlog
に書き込むには、my.cnf
でlog slave-updatesオプションを1に指定して、レプリケーション・スレーブを起動する必要があります。これ以外に、他のバイナリ・ログ・パラメータも設定する必要があります。 マスターのトランザクションがスレーブのbinlog
に書き込まれた後で、スレーブに対して通常のキャプチャを設定し、スレーブのbinlog
をキャプチャして処理できます。
親トピック: サポートされているMySQLデータ型
サポートされていないMySQLデータ型
Oracle GoldenGate for MySQLでは、次のデータ型はサポートされていません。
すべての空間型(Geometryなど)、JSON
、SET
、XML
ノート:
Extractは、サポートされていないデータ型を含む表からキャプチャするように構成されている場合には異常終了するため、Extractがサポートされないデータ型の列を含む表からキャプチャするように構成されていないことを確認します。
親トピック: MySQLのサポート対象の理解
MySQLについてサポートされているオブジェクトおよび操作
MySQLのためのOracle GoldenGateでは、次のオブジェクトおよび操作がサポートされています。
-
Oracle GoldenGateでは、ソースおよびターゲット・データベースのトランザクション表に対する次のDML操作がサポートされます。
-
挿入操作
-
更新操作(圧縮を含む)
-
削除操作(圧縮を含む)
-
切捨て操作
-
-
Oracle GoldenGateは、DDL (データ定義言語)操作の抽出とレプリケーションをサポートしています。
-
Oracle GoldenGateでは、MySQLおよび使用されるデータベース・ストレージ・エンジンでサポートされる行の最大サイズおよび列の最大数を上限に、トランザクション表がサポートされます。InnoDBでは、最大1017列がサポートされます。
-
Oracle GoldenGateでは、
AUTO_INCREMENT
列属性がサポートされます。Extractによって増分値がバイナリ・ログからキャプチャされ、Replicatの挿入操作でターゲット表に適用されます。 -
Oracle GoldenGateでは、MySQLネイティブ・レプリケーションとの同時操作が可能です。
-
Oracle GoldenGateでは、MySQLの
DYNSQL
機能がサポートされます。ノート:
XAトランザクションは取得でサポートされておらず、binlog
に記録されたすべてのXAトランザクションがExtractを異常終了します。したがって、取得するためにExtractが構成されているデータベースに対してXAトランザクションを使用しないでください。Oracle GoldenGate取得用に構成されていないデータベースにXAトランザクションが使用されている場合は、MySQLサーバー構成ファイルのパラメータ
binlog-ignore-db
を使用して、これらのデータベースをMySQLバイナリ・ログへのロギングから除外します。自動ハートビート表のサポートに関する制限事項は次のとおりです。
-
ハートビート表の追加時のエラーを回避するため、ハートビート表の作成先のデータベースがすでに存在することを確認します。
-
ハートビート履歴遅延ビューで、
heartbeat_received_ts
、incoming_heartbeat_age
、outgoing_heartbeat_age
などのフィールドの情報は、システム時間について示しています。オペレーティング・システム時間に現在の正確なタイムゾーン情報が設定されていることを確認する必要があります。
-
親トピック: MySQLのサポート対象の理解
サポートされていないオブジェクトおよび操作
Oracle GoldenGate for MySQLでは次のオブジェクトおよび操作がサポートされていません。
-
表示されない列
-
Oracle GoldenGateの
BATCHSQL
機能 -
初期ロード中の配列フェッチ
-
次の文字セットはサポートされていません。
- ULIB_CS_ARMSCII8, /* American National 166-9 */
- ULIB_CS_GEOSTD8, /* Geogian Standard */
- ULIB_CS_KEYBCS2, /* Kemennicky MS-DOS
-
FETCHMOCOLS
およびFETCHMODCOLEXCEPT
TABLEオプションを使用するNLS LOBデータのキャプチャは、DDLが有効な場合はサポートされません。 -
表の名前変更。
-
ストアド・プロシージャ内のDDL文はサポートされません。
-
Oracle GoldenGateインストール・サーバーのタイムゾーンがソース・データベース・サーバーのタイムゾーンと一致しない場合、ターゲット・データベースに送信されるTIMESTAMPデータはソース・データベースとは異なります。Oracle GoldenGate Microservicesインストールの場合、タイムゾーンが同じかどうかに関係なく、ExtractはタイムゾーンをUTCに解決します。次の問合せを実行して、ソース・データベースのタイム・ゾーンを確認します。
select @@system_time_zone;
これにより、PDTなどのタイムゾーン値が返されます。
TZ
という、Oracle GoldenGateのセッション変数を作成し、それをデータベースのタイムゾーン値と同じ値に設定します。 -
ビューとの間の抽出およびレプリケーションはサポートされていません。
-
スレーブによって適用されるトランザクションは、スレーブの
binlog
ではなくリレー・ログに記録されます。スレーブがマスターから受け取るトランザクションをbinlog
に書き込むには、my.cnf
でlog slave-updatesオプションを1に指定して、レプリケーション・スレーブを起動する必要があります。これ以外に、他のバイナリ・ログ・パラメータも設定する必要があります。 マスターのトランザクションがスレーブのbinlog
に書き込まれた後で、スレーブに対して通常のキャプチャを設定し、スレーブのbinlog
をキャプチャして処理できます。
親トピック: MySQLのサポート対象の理解
システム・スキーマ
次のスキーマまたはオブジェクトは、ワイルドカードなしで明示的に指定した場合を除いて、Oracle GoldenGateによる自動レプリケートは実施されません。
-
'information_schema'
-
'performance_schema'
-
'mysql'
-
'sys'
親トピック: MySQLのサポート対象の理解