4 MySQLのサポート対象の理解

この章では、Oracle GoldenGateでサポートされているデータベースと表の機能について説明します。

内容は次のとおりです。

4.1 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の場合、collation_server変数をutf8mb4_binに設定しないでください。

  • 次の文字セットはサポートされていません。

    • armscii8
    • keybcs2
    • utf16le
    • geostd8

4.2 サポートされているMySQLデータ型

MySQLでは次のデータ型がサポートされています。

  • BLOB

  • BIG INT

  • BINARY

  • BIT(M)

  • CHAR

  • DATE

  • DATETIME

  • DECIMAL

  • DOUBLE

  • ENUM

  • FLOAT

  • INT

  • JSON

  • LONGBLOB

  • LONGTEXT

  • MEDIUMBLOB

  • MEDIUM INT

  • MEDIUMTEXT

  • SMALL INT

  • TEXT

  • TIME

  • TIMESTAMP

  • TINYBLOB

  • TINYINT

  • TINYTEXT

  • VARBINARY

  • VARCHAR

  • YEAR

4.2.1 制限事項および説明

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データはソース・データベースのものと異なります。Oracle GoldenGate Microservicesインストールの場合、タイムゾーンが同じかどうかに関係なく、ExtractはタイムゾーンをUTCに解決します。次の問合せを実行して、ソース・データベースのタイムゾーンを確認します。

    select @@system_time_zone; 

    これにより、PDTなどのタイムゾーン値が返されます。

    Classic Architectureの場合、TZというOracle GoldenGateのセッション変数を作成し、データベースのタイムゾーン値と同じ値に設定します。

    MAの場合は、TZというソースEXTRACTを含むデプロイメントに変数を作成し、ソース・データベースのタイムゾーンの値に設定します。その後、実行中のOracle GoldenGateプロセスを停止して管理サービスを再起動し、ExtractおよびReplicatを起動します。

  • 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は異常終了します。

  • MySQLターゲットのトランザクション境界を維持するには、MyISAMエンジンではなくInnoDBトランザクション・データベース・エンジンを指定して、ターゲット表を作成または変更します。MyISAMを使用すると、Replicatのレコードは受信時に適用されるため、自動コミットをオフにしていても、トランザクションの整合性が保証されません。MyISAMではトランザクションをロールバックできません。

  • ビューとの間の抽出およびレプリケーションはサポートされていません。

  • スレーブによって適用されるトランザクションは、スレーブのbinlogではなくリレー・ログに記録されます。スレーブがマスターから受け取るトランザクションをbinlogに書き込むには、my.cnfでlog slave-updatesオプションを1に指定して、レプリケーション・スレーブを起動する必要があります。これ以外に、他のバイナリ・ログ・パラメータも設定する必要があります。 マスターのトランザクションがスレーブのbinlogに書き込まれた後で、スレーブに対して通常のキャプチャを設定し、スレーブのbinlogをキャプチャして処理できます。

4.3 サポートされていないMySQLデータ型

Oracle GoldenGate for MySQLでは、次のデータ型はサポートされていません。

XMLSET、すべての空間型(Geometryなど)。

ノート:

Extractは、サポートされていないデータ型を含む表からキャプチャするように構成されている場合には異常終了するため、Extractがサポートされないデータ型の列を含む表からキャプチャするように構成されていないことを確認します。

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

4.4.1 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の双方向構成ではサポートされていません。

4.5 システム・スキーマ

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

  • 'information_schema'

  • 'performance_schema'

  • 'mysql'