TiDBBinlogクラスターの概要
このドキュメントでは、TiDBBinlogのクラスタバージョンのアーキテクチャとデプロイメントを紹介します。
TiDB Binlogは、TiDBからbinlogデータを収集し、ダウンストリームプラットフォームにほぼリアルタイムのバックアップとレプリケーションを提供するために使用されるツールです。
TiDBBinlogには次の機能があります。
- データ複製: TiDBクラスタのデータを他のデータベースに複製します
- リアルタイムのバックアップと復元: TiDBクラスタ内のデータをバックアップし、クラスタに障害が発生したときにTiDBクラスタを復元します
ノート:
TiDB Binlogは、TiDB v5.0で導入された一部の機能と互換性がなく、一緒に使用することはできません。詳細については、 ノートを参照してください。 TiDBBinlogの代わりにTiCDCを使用することをお勧めします。
TiDBBinlogアーキテクチャ
TiDBBinlogアーキテクチャは次のとおりです。
TiDB Binlogクラスタは、ポンプとドレイナーで構成されています。
ポンプ
ポンプは、TiDBで生成されたbinlogを記録し、トランザクションのコミット時間に基づいてbinlogをソートし、消費のためにbinlogをDrainerに送信するために使用されます。
ドレイナー
ドレイナーは、各ポンプからbinlogを収集してマージし、binlogをSQLまたは特定の形式のデータに変換し、データを特定のダウンストリームプラットフォームに複製します。
binlogctl
ガイド
binlogctl
は、次の機能を備えたTiDBBinlogの操作ツールです。
- TiDBクラスタの現在の
tso
を取得する - ポンプ/ドレイナーの状態を確認する
- ポンプ/ドレイナーの状態の変更
- ポンプ/ドレイナーの一時停止または閉鎖
主な特徴
- 複数のポンプがクラスタを形成し、水平方向にスケールアウトできます
- TiDBは、組み込みのPump Clientを使用して、binlogを各Pumpに送信します
- Pumpはbinlogを保存し、binlogをDrainerに順番に送信します
- Drainerは、各ポンプのbinlogを読み取り、binlogをマージして並べ替え、binlogをダウンストリームに送信します。
- ドレイナーはリレーログをサポートします。リレーログによって、Drainerはダウンストリームクラスターが一貫した状態にあることを確認します。
ノート
v5.1では、v5.0で導入されたクラスター化インデックス機能とTiDBBinlogの間の非互換性が解決されました。 TiDBBinlogとTiDBServerをv5.1にアップグレードし、TiDB Binlogを有効にすると、TiDBはクラスター化インデックスを使用したテーブルの作成をサポートします。クラスター化インデックスを使用して作成されたテーブルでのデータの挿入、削除、および更新は、TiDBBinlogを介してダウンストリームに複製されます。 TiDB Binlogを使用してクラスター化インデックスを使用してテーブルを複製する場合は、次の点に注意してください。
- アップグレードシーケンスを手動で制御してクラスタをv5.0からv5.1にアップグレードした場合は、TiDBサーバーをv5.1にアップグレードする前に、TiDBbinlogがv5.1にアップグレードされていることを確認してください。
- システム変数
tidb_enable_clustered_index
を同じ値に構成して、アップストリームとダウンストリームの間でTiDBクラスター化インデックステーブルの構造に一貫性を持たせることをお勧めします。
TiDB Binlogは、TiDB v5.0で導入された次の機能と互換性がなく、一緒に使用することはできません。
- TiDBクラスター化インデックス :TiDB Binlogが有効になった後、TiDBは、主キーとして非単一整数列を使用してクラスター化インデックスを作成することを許可しません。作成されたクラスター化インデックステーブルのデータの挿入、削除、および更新は、TiDBBinlogを介してダウンストリームに複製されません。クラスタ化インデックスを使用してテーブルをレプリケートする必要がある場合は、クラスタをv5.1にアップグレードするか、代わりにTiCDCを使用してください。
- TiDBシステム変数tidb_enable_async_commit :TiDB Binlogを有効にした後、このオプションを有効にしてもパフォーマンスを向上させることはできません。 TiDBBinlogの代わりにTiCDCを使用することをお勧めします。
- TiDBシステム変数tidb_enable_1pc :TiDB Binlogを有効にした後、このオプションを有効にしてもパフォーマンスを向上させることはできません。 TiDBBinlogの代わりにTiCDCを使用することをお勧めします。
TiDB Binlogは、TiDB v4.0.7で導入された次の機能と互換性がなく、一緒に使用することはできません。
- TiDBシステム変数tidb_enable_amend_pessimistic_txn :2つの機能には互換性の問題があります。それらを一緒に使用すると、TiDBBinlogがデータを一貫して複製しないという問題が発生する可能性があります。
Drainerは、binlogのMySQL、TiDB、Kafka、またはローカルファイルへの複製をサポートしています。 binlogを他のDrainerのサポートされていない宛先に複製する必要がある場合は、binlogをKafkaに複製し、Kafkaのデータを読み取って、binlogコンシューマープロトコルに従ってカスタマイズされた処理を行うようにDrainerを設定できます。 Binlogコンシューマークライアントユーザーガイドを参照してください。
増分データを回復するためにTiDBBinlogを使用するには、config
db-type
をfile
(proto buffer形式のローカルファイル)に設定します。 Drainerは、binlogを指定されたプロトバッファ形式のデータに変換し、そのデータをローカルファイルに書き込みます。このように、 レパロを使用してデータを段階的に回復できます。db-type
の値に注意してください:- TiDBのバージョンが2.1.9より前の場合は、
db-type="pb"
を設定します。 - TiDBのバージョンが2.1.9以降の場合は、
db-type="file"
またはdb-type="pb"
を設定します。
- TiDBのバージョンが2.1.9より前の場合は、
ダウンストリームがMySQL、MariaDB、または別のTiDBクラスタの場合、 sync-diff-inspectorを使用して、データ複製後にデータを検証できます。