MySQL: サポートされているデータ型、オブジェクトおよび操作
この項では、MySQLデータベース上のOracle GoldenGateのサポート情報について説明します。
Oracle GoldenGate for MySQLは、サポートされているMySQLデータベース・バージョンおよびサポートされているバリアント(MariaDB、Amazon RDS for MySQL、Amazon Aurora MySQL、Google Cloud SQL for MySQLなど)の初期ロードおよびトランザクション・データの取得および配信をサポートしています。
Oracle GoldenGate for MySQLでは、ソース・データのマッピング、フィルタリングおよび変換がサポートされており、このドキュメントで特に明記されている場合を除き、Oracle GoldenGateでサポートされている他のソース・データベースから導出されたデータのMySQLデータベースへのレプリケーションもサポートされています。
トピック:
- MySQLの文字セット
- Oracle GoldenGate for MySQLでサポートされるデータ型
- サポートされていないMySQLデータ型
- MySQLについてサポートされているオブジェクトおよび操作
- MySQL DDLのオブジェクトと操作のサポートの詳細
- MySQLについてサポートされていないオブジェクトおよび操作
- システム・スキーマ
親トピック: MySQL
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)); |
サポートの制限事項
Oracle GoldenGateは、リストされたオブジェクトごとに混合文字セットをサポートしますが、次の制限があります。
-
バイナリ照合は、マルチバイト文字セットではサポートされていません。たとえば、文字セットが
utf8mb4
の場合、collation_server変数をutf8mb4_bin
に設定しないでください。 -
次の文字セットはサポートされていません。
armscii8
utf8mb3
keybcs2
utf16le
geostd8
Oracle GoldenGate for MySQLでサポートされるデータ型
Oracle GoldenGate for MySQLでは、次のデータ型がサポートされています。
-
BLOB
-
BIGINT
-
BINARY
-
BIT(M)
-
CHAR
-
DATE
-
DATETIME
-
DECIMAL
-
DOUBLE
-
ENUM
-
FLOAT
-
INT
-
JSON
-
LONGBLOB
-
LONGTEXT
-
MEDIUMBLOB
-
MEDIUMINT
-
MEDIUMTEXT
-
SMALLINT
-
TEXT
-
TIME
-
TIMESTAMP
-
TINYBLOB
-
TINYINT
-
TINYTEXT
-
VARBINARY
-
VARCHAR
-
YEAR
制限事項および説明
Oracle GoldenGate for MySQLの実行時には、次の点に注意する必要があります。
-
ファンクション索引は、取得または配信ではサポートされていません。
-
Oracle GoldenGateでは、
BLOB
型またはTEXT
型が主キーとして使用される場合はサポートされません。 -
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は異常終了します。
-
-
JSONデータ型では、単一列の表はサポートされていません。
JSON
データ型の単一列を持つ表に対して構成されている場合、Extractは異常終了します。 -
JSON
データ型はCDRをサポートしていません。GETBEFORECOLS
が構成され、表にJSON
データ型の列がある場合、次のメッセージがレポート・ファイルに記録されます。INFO OGG-06556 The following columns will not be considered for CDR
CDRの制限事項は、
GETBEFORECOLS
とCOMPARECOLS
が使用される場合に適用されます。
サポートされていないMySQLデータ型
Oracle GoldenGate for MySQLでは、次のデータ型はサポートされていません。
すべての空間型(Geometryなど)、SET
。
ノート:
Extractは、サポートされていないデータ型を含む表からキャプチャするように構成されている場合には異常終了するため、Extractがサポートされないデータ型の列を含む表からキャプチャするように構成されていないことを確認します。
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
などのフィールドの情報は、システム時間について示しています。オペレーティング・システム時間に現在の正確なタイムゾーン情報が設定されていることを確認する必要があります。
-
-
ファイルの終わり(EOF)による位置指定は、MySQLでサポートされています。Oracle GoldenGate Extract for MySQLの場合は、ファイルの末尾に対応する位置が検出され、そこからトランザクションの読取りが開始されます。データがバイナリ・ログに継続的に書き込まれている場合は、EOFの位置が正確ではありません。
Extractは、次を使用して追加および変更されます。ADD EXTRACT group_name, TRANLOG, EOF
ALTER EXTRACT group_name, EOF
MySQL DDLのオブジェクトと操作のサポートの詳細
-
MySQLのためのDDLレプリケーションは、ソースとターゲットがMySQLデータベースである間でのみサポートされています。
-
DDL操作の基本的な抽出およびレプリケーションは、MySQL 5.7.10以上でサポートされています。
-
MySQL 5.7.10では、ローカルDDLキャプチャのみがサポートされています。
-
MySQL 8.0では、ローカルおよびリモートDDLキャプチャがサポートされています。
-
CREATE TABLE
、ALTER TABLE
およびDROP TABLE
操作のみがサポートされます。 -
TRUNCATE
操作は、GETTRUNCATES
ExtractおよびReplicatパラメータを介してDMLとしてサポートされているため、MySQL DDLサポート用にOracle GoldenGateを構成する必要はありません。 -
DDLレプリケーションは、Oracle GoldenGateの双方向構成ではサポートされていません。
-
DDLレプリケーションは、
binlog_row_metadata
データベース設定をFULL
に設定できないクラウド・ベースのデータベース・サービスではサポートされていません。
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
というソースExtractを含む変数をデプロイメントに作成し、ソース・データベースのタイムゾーンの値に設定します。その後、実行中のOracle GoldenGateプロセスを停止して管理サービスを再起動し、ExtractおよびReplicatを起動します。 -
ビューとの間の抽出およびレプリケーションはサポートされていません。
-
スレーブによって適用されるトランザクションは、スレーブの
binlog
ではなくリレー・ログに記録されます。スレーブがマスターから受け取るトランザクションをbinlog
に書き込むには、my.cnf
でlog slave-updatesオプションを1に指定して、レプリケーション・スレーブを起動する必要があります。これ以外に、他のバイナリ・ログ・パラメータも設定する必要があります。 マスターのトランザクションがスレーブのbinlog
に書き込まれた後で、スレーブに対して通常のキャプチャを設定し、スレーブのbinlog
をキャプチャして処理できます。