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では次のデータ型がサポートされています。

  • 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)

制限事項および説明

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

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

システム・スキーマ

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

  • 'information_schema'

  • 'performance_schema'

  • 'mysql'

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

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

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

ノート:

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