重要
このページは英語版のページを機械翻訳しています。原文はこちらからご覧ください。

TiDBクラスター間でインクリメンタルデータをリアルタイムで複製する

このドキュメントでは、TiDBクラスタとそのセカンダリMySQLまたはTiDBクラスタを構成する方法、およびプライマリクラスタからセカンダリクラスタに増分データをリアルタイムで複製する方法について説明します。

増分データをリアルタイムで複製するために実行中のTiDBクラスタとそのセカンダリクラスタを構成する必要がある場合は、 バックアップと復元(BR) 、およびDumplingを使用しTiDB Binlog

実装の原則

TiDBに書き込まれる各トランザクションには、一意のコミットタイムスタンプ(コミットTS)が割り当てられます。このTSを介して、TiDBクラスタのグローバル整合性ステータスを取得できます。

クラスタデータは、グローバルに一貫した時点でBRまたはDumplingを使用してエクスポートされます。次に、この時点から、TiDBBinlogを使用して増分データを複製します。つまり、レプリケーションプロセスは、完全レプリケーションと増分レプリケーションの2つの段階に分けられます。

  1. フルバックアップを実行し、バックアップデータのコミットTSを取得します。
  2. インクリメンタルレプリケーションを実行します。インクリメンタルレプリケーションの開始時刻がバックアップデータのコミットTSであることを確認してください。

ノート:

バックアップデータのエクスポート後に取得されるコミットTSは、閉じた間隔です。 TiDB Binlogを使用してレプリケーションプロセスを開始した後に取得されるinitial-commit-tsは、オープンインターバルです。

レプリケーションプロセス

既存のクラスタAが正しく機能するとします。まず、クラスタAのセカンダリクラスタとして新しいクラスタBを作成してから、クラスタAの増分データをクラスタBにリアルタイムで複製する必要があります。手順については、次の手順を参照してください。

手順1.TiDBBinlogを有効にする

TiDB BinlogがクラスタAにデプロイされ、有効になっていることを確認してください。

ステップ2.すべてのクラスタデータをエクスポートする

  1. 次のツールのいずれかを使用して、クラスタAのデータを(グローバル整合性が確保された状態で)指定されたパスにエクスポートします。

  2. グローバルに一貫したタイムスタンプを取得するCOMMIT_TS

    • BR validateコマンドを使用して、バックアップタイムスタンプを取得します。例えば:

      COMMIT_TS=`br validate decode --field="end-version" -s local:///home/tidb/backupdata | tail -n1`
      
    • または、 Dumplingメタデータを確認して、Pos( COMMIT_TS )を取得します。

      cat metadata
      
      Started dump at: 2020-11-10 10:40:19
      SHOW MASTER STATUS:
              Log: tidb-binlog
              Pos: 420747102018863124
      
      Finished dump at: 2020-11-10 10:40:20
      
  3. クラスタAのデータをクラスタBにエクスポートします。

ステップ3.増分データを複製する

次の構成を追加して、TiDB Binlogのdrainer.tomlの構成ファイルを変更し、TiDBBinlogがクラスタBへのデータの複製を開始するCOMMIT_TSを指定します。

initial-commit-ts = COMMIT_TS
[syncer.to]
host = {the IP address of cluster B}
port = 3306