OceanBase Binlog サービスは、OceanBase からトランザクションログを収集し、MySQL Binlog 形式に変換します。このサービスは、主にリアルタイムの変更追跡などのシナリオで利用されます。
背景情報
MySQL のバイナリログ(Binlog)は、マスタースレーブレプリケーションおよび変更追跡の基盤です。リアルタイムの変更追跡などのシナリオでは、パフォーマンスへの影響が小さい状態でバイナリログを有効化できます。この機能により、既存の MySQL Binlog 増分解析システムを再利用して、OceanBase Database の MySQL 互換モードから増分データを同期できます。カスタム開発や新規環境の構築は不要です。既存の MySQL ベースの増分変更追跡ソリューションを、ApsaraDB for OceanBase へシームレスに移行できます。
パフォーマンス制限
Binlog 変換サービスのパフォーマンスは、リソース構成および Clog 解析能力に制限されます。現在、Binlog サービスは最大 25 MB/s の Clog 解析速度をサポートしています。Binlog 変換レートの上限は、約 50,000 レコード/秒(RPS)です。ソースサービスのトラフィックがこれらの上限を超えると、Binlog 変換サービスの遅延が増加する可能性があります。また、Binlog サービスは最大 50 のサブスクリプション接続をサポートします。同時サブスクリプション接続数がこの上限を超えると、サービスはリクエストを拒否します。高トラフィックおよび大規模トランザクションのシナリオでは、Binlog サービスはリアルタイム性能を維持するために、Clog を増分的に処理する必要があります。
サービストラフィックが適切な範囲内である場合、Binlog 変換サービスの遅延は通常 1 秒未満です。ただし、データ定義言語(DDL)操作が頻繁に行われる場合や、データベース内で大規模トランザクションが実行されるなどの特殊なケースでは、1 秒未満の変換遅延を保証できません。
Binlog サービスの特徴
アクティブなサブスクリプション接続が 7 日以上存在しない場合、Binlog サービスは自動的に無効化されます。
OceanBase Binlog サービスはテナントレベルで管理されます。特定のデータベースまたはテーブルに対してバイナリログを有効化することはできません。
OceanBase Binlog サービスは、MySQL Binlog の Row フォーマットと互換性があります。変更は行単位で記録されます。
OceanBase Database の MySQL 互換モードは、ほとんどの MySQL データの型と互換性があります。詳細については、「OceanBase の MySQL データの型の概要」をご参照ください。OceanBase Database の MySQL 互換モードの DDL 構文は MySQL の DDL 構文とは異なり、MySQL 互換モードには独自の拡張構文がいくつかあります。そのため、これらの DDL 文は正しく解析されない場合があります。
説明OceanBase Database の MySQL 互換テナントにおける ENUM 型および SET 型の拡張セマンティクスはサポートされていません。たとえば、SET 型の定義で 64 メンバーを超えるメンバーを指定すること、SET 型で重複値を指定すること、ENUM 型で未定義のデータ(例:'')を挿入することなどはサポートされません。
VARCHAR 型は最大 65,535 バイトのデータを格納できます。VARCHAR 型の長さがこの値を超えると、対応するテーブルデータの解析エラーが発生する可能性があります。
注:文字セットの構成は VARCHAR の長さ設定に影響します。たとえば、文字セットが utf8mb4 の場合、1 文字は 4 バイトを占めます。この場合、VARCHAR に設定可能な最大長は 16,383 となります。
OceanBase Database の MySQL 互換テナントでは、LONGBLOB 型および LONGTEXT 型の最大サイズは 48 MB です。これは MySQL の実装とは異なります。
OceanBase Database V4.x を使用する場合、生成列に対して STORED 属性 を設定します。そうしないと、Binlog サービスがこれらの列のデータを変換しません。これにより、ダウンストリームのサブスクリプション解析が失敗したり、データ損失が発生したりする可能性があります。
OceanBase Database の MySQL 互換モードにおける Binlog プロトコルは、MySQL 5.7 Binlog プロトコルとほぼ一貫しており、同様の基本機能を提供します:
ファイル名+オフセットおよび GTID の 2 種類の抽出モードをサポートします。GTID は OceanBase Binlog サービスによって生成され、グローバルに一意です。
すべてのデータベースおよびテーブルの Binlog ファイルの読み取りをサポートします。OceanBase Binlog サービスは、テナントレベルで全データベースおよびテーブルの増分データをダンプし、Binlog ファイルに永続ストレージとして保存します。
複数の Binlog Dump サブスクリプション接続をサポートします。[最も古いバイナリログファイルの位置、最新の位置] の範囲内の任意のオフセットからサブスクライブできます。
Binlog ファイルの定期的なクリーンアップをサポートします。Alibaba Cloud 上で OceanBase Binlog サービスを有効化すると、デフォルトでログは 18 時間または最大 50 GB のいずれかの条件を満たした時点で削除されます。いずれかの条件が成立すると、ログのクリーンアップがトリガーされます。
FlinkCDC、Canal、MaxWell などの主要な MySQL Binlog 解析ツールとの統合をサポートします。
Binlog サービスは高可用性(HA)を提供し、数分以内に障害から自動回復できます。ただし、ダウンストリームのサブスクライバーは、障害発生時のサブスクリプション中断を防ぐために、再接続メカニズムを備えておく必要があります。
Binlog ファイルの取得方法
接続方法:テナントのプライマリエンドポイント経由で接続できます。
バージョン要件:OceanBase データベースインスタンスは V3.2.4 以降である必要があります。
操作手順:
OceanBase Binlog サービスはデフォルトで無効化されています。まず、サービスを有効化する必要があります。詳細については、「Binlog サービスの有効化」をご参照ください。
MySQL クライアントを使用して OceanBase データベースに接続します。詳細については、「MySQL クライアントを使用した OceanBase データベースインスタンスへの接続」をご参照ください。
OceanBase データベースへの接続後、接続済みのクライアントで関連する MySQL Binlog コマンドを実行できます。
show binary logs文を実行して、Binlog ファイルの一覧を表示します。
show master status文を実行して、現在書き込み中の Binlog ファイルを表示します。
show binlog events文を実行して、Binlog ファイル内の特定のイベントを表示します。
Canal を使用して変更をサブスクライブします。詳細については、「QuickStart」をご参照ください。