Couchbaseクラスタ内では、他のノードのアイテムのコピーとなるレプリカデータを持っています。Couchbase Serverにアイテムを書き込んだ後、このデータのコピーをそのノードのRAMからもうひとつのノードへ作成します。レプリカデータの分散はアクティブデータと同じ方法で処理されます。SPOFを防ぐため、レプリカデータの一部がCouchbaseクラスタ中の異なるノードに分散されます。クラスタ内の各ノードはレプリカデータとアクティブデータを持っています。レプリカデータは他のノードからのデータのコピーで、アクティブデータはクライアントによってそのノードに保存されたデータそのものです。
ノード間のデータレプリケーションは完全にピアツーピアベースです。情報はクラスタ内のノード間で直接レプリケートされます。クラスタ内のノード間でトポロジ、階層、もしくはマスタースレーブの関係はありません。クライアントがクラスタ内のノードに書き込むとき、Couchbase Serverはノード上にデータを格納し、そしてその後データをクラスタ内のひとつ以上のノードに分散します。以下は、Couchbaseクラスタでの2つのノードを示していて、2つのノードがどのようにレプリカデータをもうひとつのノードに格納するかを図示しています。
クライアントアプリケーションがノードにデータを書き込むとき、データはレプリケーションキューに置かれ、そしてその後、コピーがもうひとつのノードに送信されます。レプリケートされたデータは2つ目のノード上のRAMで利用可能となっており、2つ目のノードのディスクに格納するためディスク書き込みキューに配置されています。
2つ目のノードもレプリカデータとクライアントからの受信書き込みの両方を同時に処理することに注意してください。2つ目のノードはレプリカデータとディスク書き込みキューへの受信書き込みの両方を配置します。ディスク書き込みキューにあまりに多くのアイテムがある場合、この2つ目のノードが最初のノードにバックオフのメッセージを送信します。すると最初のノードは、レプリケーションのため2つ目のノードにアイテムを送信する頻度を低くします。これは2つ目のノードがすでにクライアントアプリケーションから大量の書き込みを処理している場合、しばしば必要となります。この設定を変更する方法については、「ディスク書込キュー割当量の変更」を参照してください。
複数の変更がレプリケートされるのを待っている同一ドキュメントに対して発生する場合、Couchbase Serverはアイテムの重複を除去することができます。これは効率化のため、ドキュメントの最新バージョンのみを2つ目のノードに送信することを意味します。
システムで最初のノードが障害となった場合、レプリケートデータは2つ目のノードでまだ利用可能です。Couchbaseはほぼ瞬時に2つ目のノードからレプリカデータを提供します。これは2つ目のノードがすでにRAMにデータのコピーを持っており、つまりデータを障害ノードからコピーしなおしたり、ディスクから取り出したりする必要がないためです。いったんレプリカデータを2つ目のノードで有効化すると、Couchbase Serverはデータが取得できる場所を示すマップを更新し、サーバはこの情報をクライアントアプリケーションと共有します。その後、クライアントアプリケーションはレプリカデータを正常なノードから取得できます。ノード障害およびフェイルオーバについての詳細は、「ノードのフェイルオーバ」を参照してください。