4

それは些細なことですか?Bitcask とファイル バックアップ (各ノード上のファイル) を使用します。

最初のリング サイズが 256 で 16 ノードだとします。1024 のリングに拡張する必要がある場合、1024 のリング サイズで構成された 16 個の新しいインスタンスをセットアップし、古いクラスターのバックアップ ファイルをこれらの 16 個の新しいインスタンスにコピーして、Riak を起動できますか? Riak はこの古いデータを取得できますか?

リングサイズが変更されると、パーティションIDと個々のノードへのマッピングも変更される可能性があるため、そうではないと思います。しかし、他にどのような方法がありますか?この場合 (リングサイズが変更された場合)、riak-backup は機能しますか?


私が行った選択が十分に将来性のあるものであることを知りたいだけです. 明らかに、要件が大幅に変化したり、ユーザー ベースが急増したりすると、アーキテクチャ全体の変更が必要になる場合があります。しかし、私はある時点で(リングサイズに)この種の変更を加えることができることを望んでいます.

4

2 に答える 2

4

クラスタを別のリング サイズに移行するのは、ノード ベースのファイル バックアップでは困難です (つまり、Riak のバックアップで推奨されているように、各ノードの /data ディレクトリをバックアップするだけの場合)。ご想像のとおり、バックエンド データ ファイルはノードとパーティションの特定のリング サイズへのマッピングに依存するためです。

代わりに何をすべきですか?

次の 2 つのツールのいずれかを使用して、クラスター全体の「論理」バックアップを使用する必要があります。

  1. riak-admin のバックアップと復元 (実際には異なるリングサイズのクラスターで動作します)、または
  2. Riak データ移行ツール

いずれかを使用すると、基本的にクラスター全体のコンテンツが 1 つの場所にダンプされます (ディスク容量が不足しないように注意してください)。これを転送して、別のリング サイズで新しいクラスターに復元できます。

注意事項:

  • 非ライブ クラスタのバックアップのみを行います。つまり、クラスターを停止するか、少なくともバックアップの実行中に古いクラスターに新しい書き込みが行われないようにします。そうしないと、バックアップを開始しても新しい書き込みがまだ入っている場合、それらがバックアップされたデータ セットに含まれるという保証はありません。

  • バックアップ/復元を行う前に、必ず app.config とカスタム バケットの設定を新しいクラスターに転送してください。

うまくいけば、これが役に立ちます。したがって、簡単ではありません (つまり、時間がかかり、多くのディスク容量が必要になりますが、大量のデータを転送する場合は常にそうです)、極端に複雑でもありません。

于 2013-02-26T18:36:34.670 に答える
2

これは古い質問であることは承知していますが、Riak 2.x では、クラスターをシャットダウンせずにリングのサイズを動的に変更できるようになりました。

riak-admin cluster resize-ring <new_size>

riak-admin cluster plan

riak-admin cluster commit

注: Riak リングのサイズは、常に 2n の整数 (16、32、64 など) にする必要があります。

http://docs.basho.com/riak/latest/ops/advanced/ring-resizing/

于 2014-12-12T18:37:02.937 に答える