私は1時間ごとにCassandraバックアップを持ち帰り、共有場所に移動したいと思う。デフォルトの場所にスナップショットを取るcassandra - 別の場所にスナップショットを撮る
カサンドラは、どのように私はは/ opt /バックアップ場所にスナップショットを取ることができますか?
私は1時間ごとにCassandraバックアップを持ち帰り、共有場所に移動したいと思う。デフォルトの場所にスナップショットを取るcassandra - 別の場所にスナップショットを撮る
カサンドラは、どのように私はは/ opt /バックアップ場所にスナップショットを取ることができますか?
スナップショットではできません。
nodetool snapshot -t <tag> <keyspace>
は、キー空間データディレクトリ内のすべてのファイルのハードリンクをsnapshots/<tag>
に作成するだけです。
これらはハードリンクなので、同じファイルシステム上になければなりません。これらのハードリンクの利点は、スナップショットが非常に高速で、最初に追加のディスクスペースを消費しないことです(スナップショットが圧縮/削除されるとスナップショットに残る)。
これらのバックアップを別の場所に保存する場合は、スナップショットの作成時に-t <tag>
を使用します。私はdemosnapshot
でデモを作ったし、簡単なスクリプト(完全に詳述しかし、考え方を示していない。
$ cat cassandrabackup.sh
#!/bin/bash
TAG=`date +%Y%m%d%H%M%S`
BACKUP_LOC=/tmp/backup/`hostname`
KEYSPACE=demokeyspace
echo creating snapshot $TAG
nodetool snapshot -t $TAG $KEYSPACE
echo sync to backup location $BACKUP_LOC
find /var/lib/cassandra -type f -path "*snapshots/$TAG*" -printf %P\\0 | rsync -avP --files-from=- --from0 /var/lib/cassandra/ $BACKUP_LOC
echo removing snapshot $TAG
nodetool clearsnapshot -t $TAG
は、スクリプトは、特定のタグ(日時)とsnaphotを作成し、バックアップの場所にrsyncs内容を削除し、その後、スナップショットKEYSPACE
は全てkeyspacesがバックアップされ定義されていない場合
結果はこのようなものです:私は、過去に自分でそのエラーをしたとして
$ ./cassandrabackup.sh
creating snapshot 20170823132936
Requested creating snapshot(s) for [demokeyspace] with snapshot name [20170823132936] and options {skipFlush=false}
Snapshot directory: 20170823132936
sync to backup location /tmp/backup/host1.domain.tld
building file list ...
6 files to consider
data1/
data1/demokeyspace/
data1/demokeyspace/demotable-0bbb579087ef11e7aa786377cd3ba823/
data1/demokeyspace/demotable-0bbb579087ef11e7aa786377cd3ba823/snapshots/
data1/demokeyspace/demotable-0bbb579087ef11e7aa786377cd3ba823/snapshots/20170823132936/
data1/demokeyspace/demotable-0bbb579087ef11e7aa786377cd3ba823/snapshots/20170823132936/manifest.json
13 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=0/6)
sent 305 bytes received 50 bytes 710.00 bytes/sec
total size is 13 speedup is 0.04
removing snapshot 20170823132936
Requested clearing snapshot(s) for [all keyspaces] with snapshot name [20170823132936]
$ [email protected]:~$ find /tmp/backup/
/tmp/backup/
/tmp/backup/host1.domain.tld
/tmp/backup/host1.domain.tld/data2
/tmp/backup/host1.domain.tld/data2/demokeyspace
/tmp/backup/host1.domain.tld/data2/demokeyspace/demotable-0bbb579087ef11e7aa786377cd3ba823
/tmp/backup/host1.domain.tld/data2/demokeyspace/demotable-0bbb579087ef11e7aa786377cd3ba823/snapshots
/tmp/backup/host1.domain.tld/data2/demokeyspace/demotable-0bbb579087ef11e7aa786377cd3ba823/snapshots/20170823125951
/tmp/backup/host1.domain.tld/data2/demokeyspace/demotable-0bbb579087ef11e7aa786377cd3ba823/snapshots/20170823125951/manifest.json
/tmp/backup/host1.domain.tld/data2/demokeyspace/demotable-0bbb579087ef11e7aa786377cd3ba823/snapshots/20170823130014
/tmp/backup/host1.domain.tld/data2/demokeyspace/demotable-0bbb579087ef11e7aa786377cd3ba823/snapshots/20170823130014/manifest.json
/tmp/backup/host1.domain.tld/data1
/tmp/backup/host1.domain.tld/data1/demokeyspace
/tmp/backup/host1.domain.tld/data1/demokeyspace/demotable-0bbb579087ef11e7aa786377cd3ba823
/tmp/backup/host1.domain.tld/data1/demokeyspace/demotable-0bbb579087ef11e7aa786377cd3ba823/snapshots
/tmp/backup/host1.domain.tld/data1/demokeyspace/demotable-0bbb579087ef11e7aa786377cd3ba823/snapshots/20170823132936
/tmp/backup/host1.domain.tld/data1/demokeyspace/demotable-0bbb579087ef11e7aa786377cd3ba823/snapshots/20170823132936/manifest.json
$
- バックアップ中にホスト名を含める;)
。別に増分バックアップ機能がカサンドラにも存在することから、:
http://docs.datastax.com/en/cassandra/3.0/cassandra/operations/opsBackupIncremental.html
これはクールです。一度にすべてのキースペースをバックアップすることは可能ですか? – SQLadmin
キースペースはまったく提供しません。すべてのキースペースは一度にスナップショットされます。 – Mandraenke
huh ,, Thanks Dude :) – SQLadmin
さて、ここからあなたの旅を開始。.. http://docs.datastax.com/en/cassandra/3.0/ cassandra/operations/opsAboutSnapshots.html。ここでは、あなたが探しているものの詳細なステップバイステップの説明があります。 – ruhul