cassandra 备份

我之前曾写过关于设置Cassandra和Priam进行备份和集群管理的文章。 但是,我在此处提供的用于备份还原的示例并不适用于所有情况,例如,它可能不适用于完全独立的群集。 或者在部分还原到一个表而不是整个数据库的情况下。

在这种情况下,您可以选择使用sstableloader实用程序进行还原。 它具有简单明了的语法:

 sudo sstableloader -d 172.35.1.2,172.35.1.3 -ts /etc/cassandra/conf/truststore .jks \ -ks /etc/cassandra/conf/node .jks -f /etc/cassandra/conf/cassandra .yaml \ ~ /keyspacename/table-0edcc420c19011e7a8c37656dd492a94 

如果您查看Priam生成的备份,则看起来您可以只复制特定表的文件(例如,通过AWS上的s3 aws cp),然后sstableloader导入它们。 但是有一个陷阱。 为了节省空间,Priam使用Snappy压缩所有文件。 因此,如果您尝试将它们提供给任何Cassandra实用程序,它将抱怨它们已损坏。

因此,在使用sstableloader或其他任何工具之前,您必须解压缩它们。 但是如何? 好吧,Priam为此提供了一项服务-您通过将绝对路径传递到压缩文件,并将绝对路径传递到应放置未压缩文件的绝对路径来进行调用,并且可以轻松完成通过解压缩器传输原始文件的工作。 为了解压缩整个备份,我编写了一个python脚本。 它采用某种结构,但是您可以对其进行参数化以使其更加灵活。 这是代码(对不起我的非惯用Python,我仅将其用于简单的脚本编写):

 #! /usr/bin/env python  # python script used to pass each backup file through the decompression facility of Priam (using Snappy)  # so that it can be used with sstableloader for restore  import os  import requests  rootdir = '/home/ec2-user/backup'  target = '/home/ec2-user/keyspace'  for subdir, dirs, files in os.walk(rootdir): for file in files: fullpath = os.path.join(subdir, file) parent = os.path.join(fullpath, os.pardir) table = os.path.basename(os.path.abspath(parent)) targetdir = target + "/" + table + "/" if not os.path.exists(targetdir): os.makedirs(targetdir) url = ' http://localhost:8080/Priam/REST/v1/cassadmin/decompress?in= ' + fullpath + '&out=' + target + "/" + table + "/" + file print(url) requests.get(url) 

现在,您已解压缩了备份文件,可以使用sstableloader对其进行还原。 如果您有大量数据,可能会花费一些时间,并且不应在执行快照备份的同时运行还原,因为还原可能会失败(由文档警告)。

然后,如果幸运的话,一切都会过去。 不幸的是,有时候情况并非如此。 该工具远非完美,因此例如,如果您删除了一个列,则恢复旧的sstable将失败,因为它将尝试插入丢失的列中。 对于实际的生产系统,这听起来像是一个大问题, 并且已经有报道,但尚未解决 。 有时,表可能由于未知原因而无法恢复(流式传输失败,所谓的损坏数据)。 在这些情况下,您可能想使用sstabledump将sstables转储为JSON,然后将JSON转换为CQL以插入它。 当然,没有工具可以做到这一点,所以这里是用Java编写的工具 。 它不是完美的,并且不支持用户定义的类型,集合和映射。 请注意,对于大型表,这可能不是一个好主意,仅对于较小的表。

作为总结,在这里,备份非常重要,但是从备份中恢复则更为重要。 如果没有还原过程,则备份无用。 仅仅拥有可用的工具(例如Priam)并不意味着您可以准备执行还原过程。 您应该对活动登台数据进行测试还原,以及在空的,新形成的群集上进行完整还原,因为存在不同的还原方案。

翻译自: https://www.javacodegeeks.com/2019/11/restoring-cassandra-priam-backup-with-sstableloader.html

cassandra 备份

cassandra 备份_使用sstableloader恢复Cassandra Priam备份相关推荐

  1. 使用sstableloader恢复Cassandra Priam备份

    之前,我曾写过关于设置Cassandra和Priam进行备份和集群管理的文章. 但是,我在此处提供的用于备份还原的示例并不适用于所有情况,例如,它可能不适用于完全独立的群集. 或者在部分还原到一个表而 ...

  2. sqlserver定时差异备份_一分钟看懂完全备份、差异备份以及增量备份

    常用的数据备份方式有完全备份.差异备份以及增量备份,那么这三种备份方式有什么区别,在具体应用中又该如何选择呢? 1.备份方式简介 完全备份(Full Backup) 备份全部选中的文件夹,并不依赖文件 ...

  3. 云安全数据备份_确保您的业务数据备份安全的6个技巧

    云安全数据备份 Today's enterprises are heavily dependent on technology and data to facilitate routine opera ...

  4. mysql 文本备份_[MySQL]用mysqldump制作文本备份_MySQL

    mysqldump bitsCN.com [MySQL] 用mysqldump制作文本备份 在使用mysqldump备份MySQL时,备份文件是SQL格式的文本文件,它由一系列create table ...

  5. 安卓手机备份_安卓Android系统,如何备份手机通讯录?

    首先,我们得知道,没有备份,往往意味着很难恢复.所以,日常我们就要做好备份工作. 目前,微信上通讯录助手功能已经下线,故无法通过微信备份手机通讯. 需要备份手机通讯录的,可通过手机QQ(点蓝字可查看方 ...

  6. git mysql差异备份_结合Git实现Mysql差异备份,可用于生产环境

    埋头苦干多年一直没写过文章,今天突发狂想,为LNMP阵营贡献一些力量.就从平时工作过程中的心得和一些技巧分享出来.今天就猿们最熟悉的Mysql开始宅鸟的开篇博客 埋头苦干多年一直没写过文章,今天突发狂 ...

  7. 安卓手机备份_求一款能够云备份的安卓手机便签记事本?

    同事晨曦今天跟我们说了一件对她来说特别悲惨的事情,晨曦之前比较喜欢在小米手机自带的便签中记录一些工作.生活常用的文字内容,此外一些容易忘记的事情也会被记录到手机便签中,所以便签中保存的内容对晨曦来说还 ...

  8. mysql 提高恢复速度_如何有效地提高 MySQL 的备份和恢复速度?

    本文转载自链接:https://www.zhihu.com/question/20334428/answer/110981915 使用mysqldump备份时一般会会加上--single-transa ...

  9. 安卓手机备份_安卓手机微信记录误删除怎么恢复?大师在线指导:分五步操作!-安卓手机 ——快科技(驱动之家旗下媒体)-...

    安卓手机微信记录误删除怎么恢复?随着现在我国科学技术的逐步改善,并伴随我们国人的爱国情怀日益高涨,现在身边的亲朋好友大部分都已经开始使用我们国产的安卓手机,作为日常生活和工作交流的重要工具之一.那我们 ...

最新文章

  1. 最短路-SPAF模板
  2. 2020-10-29Ubuntu20.04将软件添加至桌面
  3. 《剑指Offer》 二进制中1的个数
  4. python call agilent com_python 控制Asterisk AMI接口外呼电话的例子
  5. 计算机机房新风机管道布置要求,新风系统管道布置—新风系统管道布置连接方法介绍...
  6. 微软披露首个由中国发现的蠕虫级漏洞 奇安信代码安全实验室获致谢
  7. 小菜找实习-动态规划
  8. Wordnet 与 Hownet 比较
  9. 工具 | 常用 MySQL 内核 Debug 技巧
  10. 衣服尺寸里面A,B是什么意思
  11. 学习要趁早年轻要挣钱
  12. 阿里巴巴矢量图引入步骤
  13. 浅谈两点分布,二项分布,伽马分布,指数分布,泊松分布,卡方分布,t分布,F分布,均匀分布,正态分布,β分布,狄利克雷分布--概率分布家族的伦理关系
  14. 文昌京东配送小哥的那些骄傲事
  15. 华三光纤交换机默认密码和重置方法
  16. PyQt5 教程 《日期和时间》
  17. Springboot2+hibernate5 sessionFactory配置
  18. 第三章 ContextCapture 19 空三处理
  19. Base64解密算法、AES解密
  20. android x86 v2ex,v2ex-android

热门文章

  1. P1527 [国家集训队]矩阵乘法
  2. 牛客网 【每日一题】6月8日 [SCOI2005]最大子矩阵
  3. P6295-有标号 DAG 计数【多项式求逆,多项式ln】
  4. CF1322B-Present【双指针】
  5. U86650-群鸡乱舞【矩阵乘法】
  6. [XSY3383]多线程(笛卡尔树,DP)
  7. [XSY] 分割(dfs树)
  8. IntelliJ IDEA 源值1.5已过时,将在未来所有版本中删除
  9. 高级JAVA码农必须搞清楚它们的区别:instanceof、isInstance、isAssignableFrom
  10. Java多线程神器:join使用及原理