バージョン情報にテーブル全体を移動する方法:カサンドラ:私のカサンドラの別の鍵空間
[cqlsh 5.0.1 |カサンドラ2.2.5 | CQL仕様3.3.1 |ネイティブプロトコルv4]
私はいくつかの巨大なテーブル(数百万行)を別のキースペースに移動しようとしています。 "csvへのコピー、csvからのコピー"の他に、より良い解決策がありますか?
バージョン情報にテーブル全体を移動する方法:カサンドラ:私のカサンドラの別の鍵空間
[cqlsh 5.0.1 |カサンドラ2.2.5 | CQL仕様3.3.1 |ネイティブプロトコルv4]
私はいくつかの巨大なテーブル(数百万行)を別のキースペースに移動しようとしています。 "csvへのコピー、csvからのコピー"の他に、より良い解決策がありますか?
私はこれを2.2.8を実行している単一ノードのクラスタで動作させることができました。
私のholidays
テーブルを私のpresentation
キースペースから私のstackoverflow
キースペースに移動して実験しました。
は新しい鍵空間内のテーブルを作成します。
は、ここで私が撮ったの手順です。
cf_id
列のsystem.schema_columnfamilies
テーブルに格納されている各テーブルには、一意の識別子のUUIDがあるため、この手順は重要です。このIDは、データを保持するディレクトリ名に添付されます。スキーマをあるキー空間から別のキー空間にコピー/ペーストすることにより、同じ列名が使用されていることを確認しますが、新しい一意識別子が生成されます。
注:3.xでは、識別子はテーブルに格納されています。
[email protected]:stackoverflow> CREATE TABLE holidays (
type text,
eventtime timestamp,
beginend text,
name text,
PRIMARY KEY (type, eventtime, beginend)
) WITH CLUSTERING ORDER BY (eventtime DESC, beginend DESC);
[email protected]:stackoverflow> SELECT * FROM stackoverflow.holidays ;
type | eventtime | beginend | name
------+-----------+----------+------
(0 rows)
(DISABLEGOSSIP、DRAIN、停止/殺す、など...)が正しく(s)はあなたのノードを停止します。今
は、ディスク上の古いものと新しいテーブルの場所を見つけ、コピーが/(古い場所から)新しい場所にファイルを移動:
$ ls -al /var/lib/cassandra/data22/stackoverflow/holidays-77a767e0a5f111e6a2bebd9d201c4c8f/
total 12
drwxrwxr-x 3 aploetz aploetz 4096 Nov 8 14:25 .
drwxrwxr-x 17 aploetz aploetz 4096 Nov 8 14:25 ..
drwxrwxr-x 2 aploetz aploetz 4096 Nov 8 14:25 backups
$ cp /var/lib/cassandra/data22/presentation/holidays-74bcfde0139011e6a67c2575e6398503/la* /var/lib/cassandra/data22/stackoverflow/holidays-77a767e0a5f111e6a2bebd9d201c4c8f/
$ ls -al /var/lib/cassandra/data22/stackoverflow/holidays-77a767e0a5f111e6a2bebd9d201c4c8f/
drwxrwxr-x 3 aploetz aploetz 4096 Nov 8 14:26 .
drwxrwxr-x 17 aploetz aploetz 4096 Nov 8 14:25 ..
drwxrwxr-x 2 aploetz aploetz 4096 Nov 8 14:25 backups
-rw-rw-r-- 1 aploetz aploetz 43 Nov 8 14:26 la-1-big-CompressionInfo.db
-rw-rw-r-- 1 aploetz aploetz 628 Nov 8 14:26 la-1-big-Data.db
-rw-rw-r-- 1 aploetz aploetz 9 Nov 8 14:26 la-1-big-Digest.adler32
-rw-rw-r-- 1 aploetz aploetz 16 Nov 8 14:26 la-1-big-Filter.db
-rw-rw-r-- 1 aploetz aploetz 57 Nov 8 14:26 la-1-big-Index.db
-rw-rw-r-- 1 aploetz aploetz 4468 Nov 8 14:26 la-1-big-Statistics.db
-rw-rw-r-- 1 aploetz aploetz 94 Nov 8 14:26 la-1-big-Summary.db
-rw-rw-r-- 1 aploetz aploetz 94 Nov 8 14:26 la-1-big-TOC.txt
-rw-rw-r-- 1 aploetz aploetz 43 Nov 8 14:26 la-2-big-CompressionInfo.db
-rw-rw-r-- 1 aploetz aploetz 164 Nov 8 14:26 la-2-big-Data.db
-rw-rw-r-- 1 aploetz aploetz 10 Nov 8 14:26 la-2-big-Digest.adler32
-rw-rw-r-- 1 aploetz aploetz 16 Nov 8 14:26 la-2-big-Filter.db
-rw-rw-r-- 1 aploetz aploetz 26 Nov 8 14:26 la-2-big-Index.db
-rw-rw-r-- 1 aploetz aploetz 4460 Nov 8 14:26 la-2-big-Statistics.db
-rw-rw-r-- 1 aploetz aploetz 108 Nov 8 14:26 la-2-big-Summary.db
-rw-rw-r-- 1 aploetz aploetz 94 Nov 8 14:26 la-2-big-TOC.txt
があなたのノードを再起動します( s)。 cqlsh経由
問合せ:
Connected to SnakesAndArrows at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 2.2.8 | CQL spec 3.3.1 | Native protocol v4]
Use HELP for help.
[email protected]> SELECT * FROM stackoverflow.holidays ;
type | eventtime | beginend | name
--------------+--------------------------+----------+------------------------
Religious | 2016-12-26 05:59:59+0000 | E | Christmas
Religious | 2016-12-25 06:00:00+0000 | B | Christmas
Religious | 2016-03-28 04:59:59+0000 | E | Easter
Religious | 2016-03-27 05:00:00+0000 | B | Easter
presentation | 2016-05-06 20:40:08+0000 | B | my presentation
presentation | 2016-05-06 20:40:03+0000 | B | my presentation
presentation | 2016-05-06 20:39:15+0000 | B | my presentation
presentation | 2016-05-06 20:38:10+0000 | B | my presentation
US | 2016-07-05 04:59:59+0000 | E | 4th of July
US | 2016-07-04 05:00:00+0000 | B | 4th of July
US | 2016-05-09 04:59:59+0000 | E | Mothers Day
US | 2016-05-08 05:00:00+0000 | B | Mothers Day
Nerd | 2016-12-22 05:59:59+0000 | E | 2112 Day
Nerd | 2016-12-21 06:00:00+0000 | B | 2112 Day
Nerd | 2016-09-26 04:59:59+0000 | E | Hobbit Day
Nerd | 2016-09-25 05:00:00+0000 | B | Hobbit Day
Nerd | 2016-09-20 04:59:59+0000 | E | Talk Like a Pirate Day
Nerd | 2016-09-19 05:00:00+0000 | B | Talk Like a Pirate Day
Nerd | 2016-05-07 04:59:59+0000 | E | Star Wars Week
Nerd | 2016-05-04 05:00:00+0000 | B | Star Wars Week
Nerd | 2016-03-14 05:00:00+0000 | E | Pi Day
Nerd | 2016-03-14 05:00:00+0000 | B | Pi Day
(22 rows)
このアプローチの問題、あなたはクラスタを停止する必要があり、各ノード上のファイルを動き回るということです。 cqlsh COPY
は、クラスタを実行している状態で、単一のノードでインポートとエクスポートを行うことができます。
そして、私は、COPY
がこのデータセットをより小さなデータセットに限定していることを知っています。しかし、2.2.xには、大きなデータセットのタイムアウトを防ぐためにCOPYを抑制するのに役立つオプションがあります。私は最近、タイムアウトなしで3億7千万の行をエクスポート/インポートしました。