データの不整合を最小限に抑えるために、すべてのノードを一緒にバックアップおよび復元するのがベストプラクティスです。Couchbaseは、常にアイテム単位で整合性を持っていますが、クラスタ全体の整合性や順序どおりの永続性を保証するものではありません。
Couchbase Serverクラスタを復元するための2つのオプションがあります。
前提事項:
クラスタには、同じ数のノードが含まれている必要があり、それらのノードは同じIPアドレス(または、ホスト名:ここに記載されている手順に従った場合)である必要があります。
すべてのデータベースファイルと同様に、すべてのconfig.datファイルをそれらの元の場所に復元する必要があります。
すべてのノードでCouchbase Serverサービスを停止します
データベースと設定ファイルを置き換えます。
サービスを再起動します。
これは、全クラスタ内の各ノードで実行する必要があります。
クラスタ全体を新しいマシンセットに移行するには、この機能を使用することができます。このような時に特に有用です。
ノードのIPアドレスが変更されるクラウド環境
プロダクションクラスタと同じデータを持った開発用/テスト用クラスタを作成する時
前提事項:
2つのクラスタは同じトポロジである必要があります(同じノード数)。
元のクラスタは、良好な状態になっている必要があります。これは、すべてのノードが起動および実行中であり、かつ再バランスまたはフェイルオーバー操作がなされていないことを意味します。
両方のクラスタが同じOSとメモリの構成であることがベストプラクティスです。
手順
前述の手順を使用して、すべてのノードのデータファイルのバックアップを取ります。
次に、すべてのノードでCouchbase Serverをシャットダウンして、DBファイルをコピーします。これを交互に繰り返します。
Couchbase Server(少なくともバージョン1.7.1)を新しいノードとクラスタに一緒にインストールします。
クラスタをセットアップするためにWebコンソールを使用している場合、'default'バケットが作成されます。
先に進む前に、このバケットを削除してください。
元のファイルのコピーを、すべての新しいノード上のデータディレクトリに置きます
以前のノードと1対1で"一致"する必要はありません。
しかし、元の各データファイルセットは、新しいクラスタ内の一つのノードのみに配置してください。
ノードに配置したファイルの所有者情報を確認してください。
新しいノードでCouchbase Serverを起動します。
新しいノードで、同じ名前、SASLの設定でバケットを作成します。
バケットの作成後、各ノードは、データファイルからの項目を、メモリへロードし始めます。
クラスタは、ウォームアップ後バランスの取れた状態になります。
ノードがウォームアップしている間、リバランスプロセスを起動しないでください。
もしいずれかのノードがウォームアップ中にダウンした場合、すべてのノードを再起動することがベストプラクティスです。
mbrestoreスクリプトの旧バージョンには、いくつかのバグがあります。
mbrestoreを使用する場合は、機能を保証する最新のスクリプトを取得する必要があります。
こちらから最新版をダウンロードすることができます。
最新バージョンのスクリプトは、過去のあらゆるCouchbaseのバージョンで動作する"はず"です。
クラスタを復元するために、上記の要件を満たすことができないのであれば、mbrestoreツール(バージョン1.6.4およびそれ以降に含まれている)を使用することができます。このスクリプトは、1セットのデータベースファイルからドキュメントを読み、クライアントコマンドとして、選択されたbucketに、それらを送信します。
これは以下の場合に便利です。
異なるサイズのクラスタにデータを復元したい場合
異なるbucketにデータを転送/復元したい場合
壊れたか破損したデータベースファイル(通常はディスクドライブ上の容量不足から)がある場合
mbrestoreツールには、次のオプションがあります:
%mbrestore opts db_files (use -h for detailed help) -a --add Use add instead of set to avoid overwriting existing items -H --host Hostname of moxi server to connect to (default is 127.0.0.1) -p --port Port of moxi server to connect to (default is 11211) -t --threads Number of worker threads -u --username Username to authenticate with (this is the name of the bucket you are sending data into) -P --password Password to authenticate with (this is the password of the bucket you are sending data into)
データの量によっては、このスクリプトの実行に長い時間がかかることがあります。スクリプトを実行しているサーバーへの接続が中断されないこと、または、スクリプトをバックグラウンド実行するツール(すなわちscreen)を使うことがベストプラクティスです。Linuxで実行する場合:
/opt/couchbase/bin/mbrestore -a default default-0.mb default-1.mb default-2.mb default-3.mb
正しく復元するためには、コマンドの引数として、データベースのバックアップファイル名をすべて指定する必要があります。。Windowsで実行する場合:
cd "C:/Program Files/Couchbase/Server/bin/" .\mbrestore -a "C:/backup/2010-12-22/default" "C:/backup/2010-12-22/default-0.mb" \ "C:/backup/2010-12-22/default-1.mb" "C:/backup/2010-12-22/default-2.mb" "C:/backup/2010-12-22/default-3.mb"
正しく復元するためには、コマンドの引数として、データベースのバックアップファイル名をすべて指定する必要があります。