2016-08-02 7 views
0

そこにいくつかの同様の質問があることは知っていますが、私はまだこれについて混乱しています。このメカニズム(あるクラスタから別のクラスタへデータをコピーする)が必要なので、私は少し明確にしたいと考えています。Cassandra - あるクラスタから別のクラスタにsstableスナップショットをコピーする

非常に簡単なシナリオを想定しましょう。私は1つのcassandraクラスタ(C1)から別の(C2)にテーブルをコピーしたいと思います。コピーしているテーブルを「アイテム」といいます。

各クラスタのノード数が同じであるとします(クラスタ内のソースノードとターゲットノードはそれぞれ4個です)。重要であるかどうかはわかりません。

私はスナップショットとsstableloaderを使ってそのトリックを試みています。スナップショットを作成し、C1:N1(クラスタ1ノード1 .../myspace/item-xxxxxx /スナップショット/ #####)からターゲットテーブルディレクトリC2にスナップショットファイルをコピーできました。N1(クラスタ2ノード1:.../myspace/item-xxxxxx)。私はsstableloaderを使ってデータをロードし、nodetool修復を実行しました。完璧。唯一の問題は、ロードされたスナップショットがソースノードの1つのみであったため、データの一部(「1k行の約485」)が「復元」されていることです。だから、私はC1:N2からC2:N1にスナップショットをコピーしてロードすることを考えています。問題は、すべてのテーブルファイルが既にC2:N1に存在することです。スナップショットファイルをC1:N2からC2:N1のテーブルディレクトリにコピーすると、すでに存在するファイルが吹き飛ばされます。私は4つのターゲットノードをすべてチェックしませんでしたが、ターゲットのノード2をチェックしました。また、アイテムテーブルディレクトリもすでにデータファイルとともに存在していました。私はターゲット上のノードのすべてがデータファイルを持っていると推測しているので、他の3つのソースノードのスナップショットファイルをsstableloadする方法につきました。

ストーリーが短い(可能ならば): ソースクラスタの各ホストから複数のソーススナップショットファイルをターゲットクラスタにロードするにはどうすればよいですか?そして、問題を複雑にするには、ソースクラスタとターゲットクラスタのノード数が異なる場合は問題になります(ターゲット上のノード数を減らすことが潜在的に大きな問題になると思います)。

私の意見では、SOURCEクラスタでssableloaderを実行し、データをターゲットクラスタにストリーミングする方法は、実際には必要なものです。人生をもっと楽にしてくれるだろうと思います。

ありがとうございます。

-Jim

答えて

1

two options for bulk loadingがあり、あなたがそれらを一緒に半合併がありそうです。ほとんどの場合、「マニュアルをコピーしてください」と呼ばれるメカニズムを指していますが、リストアのパフォーマンスが最優先事項でなければ問題にならないかもしれません。 sstableローダーを使用することは異なりますが、それを必要としません。

sstableloaderツールは、ノードに接続し、そのノードクラスタ内のすべてのノードを見つけて、接続を使用してメタデータ/検出を構築します。選択したストレージを適切なトークン範囲でターゲットクラスタに分割/ストリーミングします(修復する必要はありません)。ソースクラスターノードからsstableloaderを実行し、それを宛先クラスターに向けると、自分の上にsstablesをコピーする必要はありません(別のDCにある場合は少し速いかもしれませんが)。あなたはOpsCenterはこれらの手順の自動化は、GUI https://docs.datastax.com/en/opscenter/5.2/opsc/online_help/services/opscBackupCloneCluster.html

+0

であなたのために行うことができますしている場合

だからsstableloader「-d IP」で実行されます。私がこれをしたら、それはターゲットIPであり、ターゲットノードの1つからそれを実行しています(そして、データをロードするためにスナップショットを使用しています)。たぶん私は間違っているだろう。あなたは、私がソースクラスタからそれを実行できると言った。私は "-d SourceIP"を置いていますか?その場合、接続先のクラスタIPはどこで指定しますか? –

+0

'-d'は、ターゲットクラスタ内のいずれかのノードになります。どこからでもツールを実行できます。 –

+0

お返事ありがとうございます。これに関する知識が不足して申し訳ありませんが、ソースクラスタをどのように指定して接続するのですか?ソースクラスタ上で実行するだけですか?つまり、ターゲットクラスタ上でsstableloaderを実行することはできません(ソースIPを指定しないため)。 –

関連する問題