连云港seo,wordpress数据库访问优化,网页制作讲解视频,导航网站设计之前#xff0c;我曾写过关于设置Cassandra和Priam进行备份和集群管理的文章。 但是#xff0c;我在此处提供的用于备份还原的示例并不适用于所有情况#xff0c;例如#xff0c;它可能不适用于完全独立的群集。 或者在部分还原到一个表而不是整个数据库的情况下。 在这种… 之前我曾写过关于设置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