我正在为Cassandra数据库构建一个备份和恢复过程,以便在需要时准备就绪,以便我了解细节以构建适合生产的东西.我在这里遵循Datastax的说明:
http://www.datastax.com/documentation/cassandra/2.0/cassandra/operations/ops_backup_restore_c.html.
首先,我在开发盒上播种数据库,然后尝试进行备份/恢复.这是备份脚本:
#!/bin/bash
cd /opt/apache-cassandra-2.0.9
./bin/nodetool clearsnapshot -t after_seeding makeyourcase
./bin/nodetool snapshot -t after_seeding makeyourcase
cd /var/lib/
tar czf after_seeding.tgz cassandra/data/makeyourcase/*/snapshots/after_seeding
Run Code Online (Sandbox Code Playgroud)
是的,也许,tar不是最有效的方式,但我只是想让一些事情发挥作用.我检查了tar,所有文件都在那里.
备份数据库后,我关闭了Cassandra和我的应用程序,然后rm -rf /var/lib/cassandra/模拟完全丢失.
现在恢复数据库.从http://www.datastax.com/documentation/cassandra/2.0/cassandra/operations/ops_backup_snapshot_restore_t.html恢复"方法2" 与我的模式创建组件比方法1更兼容.
所以,方法2 /步骤1,"重新创建模式":重新启动Cassandra,然后重新启动我的应用程序.该应用程序构建为在必要时在启动时重新创建架构.一旦它启动,就会有一个工作的Cassandra节点,其中包含应用程序的架构,但没有数据.
方法2 /步骤2"恢复快照":它们提供了三种选择,第一种是使用sstableloader,记录在http://www.datastax.com/documentation/cassandra/2.0/cassandra/tools/toolsBulkloader_t.html.加载器所需的文件夹结构与快照工具创建的文件夹结构完全不同,因此必须将所有内容移动到位.在遇到所有麻烦之前,我会在一张桌子上试一试:
>./bin/sstableloader makeyourcase/users
Error: Could not find or load main class org.apache.cassandra.tools.BulkLoader
Run Code Online (Sandbox Code Playgroud)
嗯,好吧,那不行.BulkLoader位于./lib/apache-cassandra-2.0.9.jar中,但加载器似乎没有设置为开箱即用.让我们继续第二种方法,将快照目录复制到makeyourcase/users/snapshots /目录中,而不是调试工具.这应该很简单,因为我们将快照目录放回原来的位置,所以tar xzf after_seeding.tgz应该这样做:
cd /var/lib/
tar xzf after_seeding.tgz
chmod -R u+rwx cassandra/data/makeyourcase
Run Code Online (Sandbox Code Playgroud)
并将快照目录放回各自的"快照"目录下,刷新应恢复数据:
cd /opt/apache-cassandra-2.0.9
./bin/nodetool refresh -- makeyourcase users
Run Code Online (Sandbox Code Playgroud)
这没有抱怨.请注意,您必须为每个表运行此操作,因此您必须首先生成表列表.但是,在我们这样做之前,请注意Cassandra日志中有一些有趣的东西:
INFO 14:32:26,319 Loading new SSTables for …Run Code Online (Sandbox Code Playgroud)