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

この章では、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では、マイナスの日付はサポートされていません。

  • 浮動小数点数の範囲および精度のサポートは、ホスト・マシンによって異なります。通常は有効桁数が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をキャプチャして処理できます。

  • Extract用のXAトランザクションはサポートされていません。

MySQLについてサポートされているオブジェクトおよび操作

Oracle GoldenGate for MySQLでは次のオブジェクトおよび操作がサポートされています。

  • MySQL 5.7.10以降に対するDDL (データ定義言語)操作の基本的な抽出とレプリケーション。CREATE TABLEALTER 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_tsincoming_heartbeat_ageoutgoing_heartbeat_ageなどのフィールドの情報は、システム時間について示しています。オペレーティング・システム時間に現在の正確なタイムゾーン情報が設定されていることを確認する必要があります。

    • MySQL 5.5ではハートビート表はサポートされません。

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

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

  • XMLSETおよびジオメトリ・データ型などもサポートされていません。

  • Intervalデータ型はサポートされません。