この章では、MySQLデータベース上のOracle GoldenGateのサポート情報について説明します。
内容は次のとおりです。
親トピック: MySQLでのOracle GoldenGateの使用
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では次のデータ型がサポートされています。
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では、マイナスの日付はサポートされていません。
浮動小数点数の範囲および精度のサポートは、ホスト・マシンによって異なります。通常は有効桁数が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データ型
Oracle GoldenGate for MySQLでは次のオブジェクトおよび操作がサポートされています。
MySQL 5.7.10以降に対するDDL (データ定義言語)操作の基本的な抽出とレプリケーション。CREATE TABLE
、ALTER TABLE
およびDROP TABLE
操作のみがサポートされます。
Oracle GoldenGateでは、トランザクション表の抽出およびレプリケーションがサポートされます。
Oracle GoldenGateでは、MySQLおよび使用されるデータベース・ストレージ・エンジンでサポートされる行の最大サイズおよび列の最大数を上限に、トランザクション表がサポートされます。InnoDBでは、最大1017列がサポートされます。
Oracle GoldenGateでは、AUTO_INCREMENT
列属性がサポートされます。Extractによって増分値がバイナリ・ログからキャプチャされ、Replicatの挿入操作でターゲット表に適用されます。
Oracle GoldenGateでは、ソースおよびターゲット・データベースのトランザクション表に対する次のDML操作がサポートされます。
挿入操作
更新操作(圧縮を含む)
削除操作(圧縮を含む)。カスケード削除問合せを実行すると、親操作の子が削除されます
切捨て操作
Oracle GoldenGateでは、MySQLネイティブ・レプリケーションとの同時操作が可能です。
Oracle GoldenGateでは、MySQLのDYNSQL
機能がサポートされます。
自動ハートビート表のサポートに関する制限事項は次のとおりです。
ハートビート表の追加時のエラーを回避するため、ハートビート表の作成先のデータベースがすでに存在することを確認します。
ハートビート履歴遅延ビューで、heartbeat_received_ts
、incoming_heartbeat_age
、outgoing_heartbeat_age
などのフィールドの情報は、システム時間について示しています。オペレーティング・システム時間に現在の正確なタイムゾーン情報が設定されていることを確認する必要があります。
MySQL 5.5ではハートビート表はサポートされません。
親トピック: MySQLのサポート対象の理解
MySQLでは次のデータ型はサポートされていません。
XML
、SET
およびジオメトリ・データ型などもサポートされていません。
Intervalデータ型はサポートされません。
親トピック: MySQLのサポート対象の理解