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の文字セット

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_modeSTRICTとして使用して、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の制限事項は、GETBEFORECOLSCOMPARECOLSが使用される場合に適用されます。

サポートされていない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_tsincoming_heartbeat_ageoutgoing_heartbeat_ageなどのフィールドの情報は、システム時間について示しています。オペレーティング・システム時間に現在の正確なタイムゾーン情報が設定されていることを確認する必要があります。

  • ファイルの終わり(EOF)による位置指定は、MySQLでサポートされています。Oracle GoldenGate Extract for MySQLの場合は、ファイルの末尾に対応する位置が検出され、そこからトランザクションの読取りが開始されます。データがバイナリ・ログに継続的に書き込まれている場合は、EOFの位置が正確ではありません。

    Extractは、次を使用して追加および変更されます。
    ADD EXTRACT group_name, TRANLOG, EOF
    ALTER EXTRACT group_name, EOF

MySQL DDLのオブジェクトと操作のサポートの詳細

DDL操作のキャプチャとレプリケーションについてOracle GoldenGateでサポートされるMySQLオブジェクトと操作のリストを示します。
  • MySQLのためのDDLレプリケーションは、ソースとターゲットがMySQLデータベースである間でのみサポートされています。

  • DDL操作の基本的な抽出およびレプリケーションは、MySQL 5.7.10以上でサポートされています。

  • MySQL 5.7.10では、ローカルDDLキャプチャのみがサポートされています。

  • MySQL 8.0では、ローカルおよびリモートDDLキャプチャがサポートされています。

  • CREATE TABLEALTER 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をキャプチャして処理できます。

システム・スキーマ

次のスキーマまたはオブジェクトは、ワイルドカードなしで明示的に指定した場合を除いて、Oracle GoldenGateによる自動レプリケートは実施されません。

  • 'information_schema'

  • 'performance_schema'

  • 'mysql'