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