マスタースレーブレプリケーションのRedisの

いくつかの一般的な概念

  我々は最初のマスタースレーブのレプリケーションプロセスを交換するために私たちを助けるであろう、いくつかの基本的な概念を理解する必要があります前に、マスター・スレーブレプリケーションの原理を説明します:

   2つの伝搬の同期動作にRedisの複製機能とコマンド。

  • シンクロナス

  メモ、幾分異なっている以前のバージョンと、このステップでredis2.8後バージョンredis2.8、新しいバージョンは、主にメンテナンスをオフセットしており、他の基本的に同じで、ここでメインの新しいバージョンです。  

  データベースの現在の状態は、ここでクライアントがサーバ、サーバ第1同期動作からマスターコピーからのコマンドslaveof要求からサーバーに送信する場合、すなわち、マスタサーバの更新サーバからデータベースの状態。

  断線や再同期を含む(もちろん、マスターの同期動作を実現するために、プライマリサーバーからサーバーにコマンドを送信する必要が、サーバーPSYNC最初の同期(再同期完了)からのコマンドを使用して、最初の非同期によってPSYNCああ再接続同期後)部分再同期を使用している多少異なります。

  最初のコピー

  1. PSYNCコマンドは、マスターサーバーにサーバーから送信されます。

  2.手のセットでRDBファイルを生成して、今から実行されたすべてのコマンドを記録するために、バッファを使用するマスターサーバーPSYNCのコマンド実行BGSAVEのコマンドを受信しました。

  時間が終了すると、プライマリサーバはコマンドをBGSAVEますメインサービスBGSAVEにコマンドを送信する場合、RBDは、サーバーからサーバーからファイルを受け入れ、ロードRDBファイル3.を生成し、それらのステータスの更新が生きるために、データベース・サーバは、コマンドを実行しBGSAVE状態データベース

  4.マスターのサーバレコードは、サーバからサーバからのライトコマンドを実行し、データベースは現在、すべての書き込みコマンドの内側に位置するこれらのバッファのプライマリサーバの状態にデータベースを更新します。

  最初の非コピー

  サーバーオフからマスターサーバーからコピーした場合、マスターサーバーは、サーバーから新しいコピーの先頭にPSYNCをお送りします<RUNID> <オフセット>コマンド、RUNIDは、マスターサーバーのコピーのIDであり、さらにはオフセット電流サーバーコピーからオフセットされ、このコマンドは同期がこれら2つのパラメータによって決定されるサーバーからマスターサーバー上で実行されました。

  1。

  2。

  3。

  • コマンドの広がり

  場合は、同期動作の実施後にクライアントから送信された主なサービス実行コマンドは、両方のマスター・スレーブデータベース・サーバは、一貫性のある状態に到達しますが、そのような一貫性のある状態が静的でない場合、プライマリ・データベース・サーバは、変更される可能性が高いです、および一貫性のない状態から、メインサーバが発生します。

  バック状態から今回のマスタサーバとメインサーバが再び一貫した得るためには、コマンドの操作を実行するために、サーバから普及する必要があります。プライマリサーバが送信、それは一貫性のないサーバーピースからの主な原因の書き込みコマンドで、彼の実行を命じ書きますライトコマンドが同じサーバから実行されたときに実行するサーバから、マスタ・スレーブサーバは、再び一貫性のある状態を返します。

  • 再同期完全および部分再同期化
  • コピーオフセット

  コピーの実装でパーティー - 各サーバからマスタサーバと一つのコピーがオフセットを維持します。オフセットをコピーすることによって、部品の再同期を行う際に達成されます。

  マスターは、サーバからのデータのNバイトを伝播するたびに、独自のオフセット値を加えたNをコピーします

  • コピーバックログバッファ

  複製バックログFIFOバッファ(FIFO)キューを維持メインサーバの固定長であり、デフォルトは1Mです。そこに純粋な伝播最新の書き込みコマンドであり、各バイトのためにコピーされたコピーバッファバックログオフセット応答キューを記録し、この部分を返します。

  再接続がサーバーから切断するとき、最初のサーバからマスタサーバはPSYNCメインサービスに自身の複製オフセットオフセットIDとメインサービス送信されたIDとIDそれらの主なサービスを介してコマンドを送信します。比較は、バッファバックログをコピーしない場合はオフセットドリフト量複製バックログバッファ後のデータは、その後、マスターは、サーバーの一部から再同期操作を実行する場合は、バックログバッファを取り、複製するオフセットから送信され、その後、メインサーバーは、サーバーから完全な再同期されます。

マスター・スレーブレプリケーションの原則

  実際には、上記の概念の導入の一部、マスタースレーブレプリケーション原理が出てきた、と我々は(例えば、マスタースレーブレプリケーションの最初の実行)を下記の要約します。

  クライアントは、サーバからのコマンドを送信したいslaveof

  マスタサーバPSYNCにサーバから送信された?-1コマンド完全な再同期操作を実行するマスターサーバーを要求するための1

  2.主服务器在接收到完整重同步请求后,在后台重启一个线程执行BGSAVE命令,也就是对才是数据快照生成RDB文件,并向从服务器返回+FULLRESYNC 主服务器id 主服务器此时的偏移量等数据,而主线程仍然可以接受请求,并将请求放到缓冲区

  3.当主服务器的BGSAVE命令执行完毕时,主服务器将生成RDB文件发送给从服务器,从服务器完成此文件的接受和载入,将自己的数据库状态更新至住服务器执行BGSAVE命令时的数据库状态

  4.主服务器将记录在缓冲区中的所有写命令发送给从服务器,主服务器修改自己的复制偏移量,从服务器接收成功后,也会修改自己的复制偏移量,这样主从服务器的数据就保持一致了

  对于如果不是第一次执行复制的情况就是执行部分重同步的操作,这里不在累述。

おすすめ

転載: www.cnblogs.com/htyj/p/11717039.html
おすすめ