cassandra - 将快照拍摄到不同的位置

时间:2017-08-23 06:27:45

标签: linux cassandra backup

我想每隔1小时采取 Cassandra备份并将其移至共享位置。

Cassandra将快照放在默认位置,如何在 / opt / backup 位置拍摄快照?

1 个答案:

答案 0 :(得分:4)

你不能(带快照)。

<?xml version="1.0" encoding="UTF-8"?> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd" xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0" xmlns:ext="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.2.0" xmlns:cxf="http://camel.apache.org/schema/blueprint/cxf"> <cm:property-placeholder persistent-id="configuration.file"/> <ext:property-placeholder evaluator="fabric8" placeholder-prefix="$[" placeholder-suffix="]"/> ... ... <bean id="_test" class="com.xxx.Test"> <argument value="$[env:TEST]"/> </bean> 是一个非常简单的工具 - 它只是为密钥空间数据目录中的每个文件创建硬链接nodetool snapshot -t <tag> <keyspace>

由于这些是硬链接,因此它们必须位于同一文件系统上。这些硬链接的好处是快照速度非常快,并且最初不会占用额外的磁盘空间(当sstables被压缩/删除时,文件仍保留在快照中)。

如果您希望在创建快照时使用snapshots/<tag>在不同位置进行这些备份。我用-t <tag>和一个简单的脚本编写了一个演示(没有完全详细说明,但显示了这个想法:

demosnapshot

该脚本使用特定标记(日期时间)创建快照,将内容rsyncs到备份位置,然后删除快照。如果未定义$ 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 ,则所有键空间都被备份。

结果如下:

KEYSPACE

我过去自己做过这个错误 - 在备份中包含主机名;)

除此之外,cassandra还有一个增量备份功能:

http://docs.datastax.com/en/cassandra/3.0/cassandra/operations/opsBackupIncremental.html