XDCRを使うことで、一定時間内にクラスタに存在するデータのスナップショットを作成するレプリケーションを起動・停止・再起動することができます。XDCRで実装することができるいくつかの解決方法をいかに記します。
アクティブオフサイトバックアップの作成
別クラスタにあるアプリケーションデータのライブバックアップをXDCRを通じて作ることができます。セカンダリクラスタはローカルにおくことも、別のデータセンターにおくこともできます。元クラスタから地理的に離すことも近づけることも可能です。プライマリクラスタに障害が発生した場合は、セカンダリクラスタを有効とすることも、プライマリクラスタ内のデータを再度読み込むためにセカンダリクラスタに保存されているデータを使うこともできます。
例えば、次のようにインフラを設定することができます。
クラスタAをプライマリクラスタとします。それはライブデータを保持し、アプリケーション・サーバーによって使用されます。
バックアップクラスタであるクラスタBに、クラスタAからのデータを複製するように、単一方向レプリケーションを設定します。
クラスタAに障害が発生した時、クラスタが再度機能するようにする必要があります。その後、クラスタBのデータをクラスタAに再度単一方向レプリケーションで複製し、アプリケーションをクラスタAに対して有効化します。
地理的なクラスタデータの分散
双方向レプリケーションを使うことで、ロケーションを超えた2つの異なるクラスタ間で2つの異なるバケットデータを同期することができます。このモデルを使えば地理的に負荷を分散することができます。例えば、2つのクラスタのデータの一貫性を保ちながら、USとヨーロッパとの間でデータを分散することができます。
このシナリオでは、次のようにクラスタを構成します。
送信元クラスタに、1つ以上のバケットをクラスタBのバケットを宛先となるように設定します。
宛先クラスタに、宛先となるバケットからクラスタAの送信元バケットに複製するよう設定します。
XDCRは、すべての変更をクラスタAからクラスタBのバケットへ、またその逆へと複製します。これは、互いに同期して二つのクラスタを保持し、各クラスタ内の互いに一致しているドキュメントを維持するのに役立ちます。
継続的なセカンダリバックアップの更新
ライブクラスタのローカルバックアップを作る場合、バックアッププロセス中はCPUやディスクスペースといった追加のクラスタリソースが必要となります。バックアッププロセスは、ある時点で存在するクラスタのデータのスナップショットを作成します。ライブクラスタでは、バックアップした後にドキュメントへの変更が発生した場合、ローカルバックアップで作ったデータが一致しないことがあります。バックアップを現行化するために、再度バックアッププロセスを実行する必要があります。
XDCRを使用すると、このシナリオでは、 2つの利点があります。
XDCRは徐々に自動的に他のクラスタにデータを複製します。そのため、バックアッププロセスを管理し、定期的にバックアップを実行することが容易となります。
1つのクラスタから別のクラスタへのバックアップのリソース負荷をシフトすることができます。送信元クラスタにリソースの制約がある場合は、宛先クラスタでバックアップを早めに実行するほうが良いでしょう。宛先クラスタでのバックアップを実行するには、2つのクラスタ間の単一方向のレプリケーションを構成してから、バックアップを実行するためにセカンダリクラスタを使用します。
一連の操作は、以下のとおりです。
送信元クラスタから宛先クラスタに単一方向レプリケーションを設定します。
Couchbaseのバックアップツールcbbackup
を使用して、宛先クラスタ上にデータをバックアップします。宛先クラスタはアクティブなデータを提供できないため、より一貫性の高いバックアップスナップショットが作成されます。
定期的な間隔で、ライブクラスタの変更を宛先クラスタのバックアップに反映させるために、このプロセスを繰り返します。cbbackup
についての詳細は以下を御覧ください「cbbackupツール」.