备份还原数据库
我以前写用于备份和群集管理。但是,我给出的备份还原示例并不适用于所有情况--例如,它可能不能在完全独立的集群上工作。或者部分恢复到一个表,而不是整个数据库。
在这种情况下,您可以选择使用。它有一个简单明了的语法:
|
1
2
3
|
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上的S3AWScp)并导入它们。不过有个陷阱。为了节省空间,Priam正在使用
所以你必须先解压它们,然后再使用Sstabeloader或其他任何东西。但怎么做?嗯,Priam为此提供了一项服务--您可以通过将绝对路径传递到压缩文件,并将绝对路径传递到应该放置未压缩文件的位置,这样就可以简单地通过解压缩程序传输原始文件。为了解压缩整个备份,我编写了一个python脚本。它假定有一定的结构,但您可以将其参数化,使其更加灵活。下面是代码(请原谅我的非惯用Python,我只将它用于简单的脚本编写):
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#! /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 restoreimport osimport requestsrootdir = '/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 = + fullpath + '&out=' + target + "/" + table + "/" + file print(url) requests.get(url) |
现在您已经解压缩了备份文件,您可以使用sstableloader恢复这些文件。如果您有大量数据,可能需要一些时间,并且不应该在执行快照备份的同时运行还原,因为它可能会失败(文档警告过)。
然后,如果你幸运的话,一切都会过去的。不幸的是,在某些情况下,它并不完美,因此,如果您删除了一个列,那么恢复一个旧的stable就会失败,因为它会尝试插入缺失的列。这听起来对实际生产系统来说是个大问题,有时,由于未知的原因(在流中失败,据称数据损坏),表可能只是无法恢复。在这些情况下,您可能需要使用然后将JSON转换为CQL以插入它。当然,没有工具可以这样做,所以。它并不完美,也不支持用户定义的类型、集合和映射。请注意,对于大型表来说,这可能不是一个很好的主意,而只是对于较小的表。
总之,有备份是非常重要的,但更重要的是能够从备份中恢复。如果没有还原过程,备份是无用的。简单地拥有可用的工具(例如Priam)并不意味着您可以准备好执行还原过程。您应该对活动的暂存数据进行测试还原,以及在空的新形成的集群上进行完全恢复,因为有不同的恢复方案。
https://m.douban.com/mip/note/810995454/
近年来,随着数据保护和隐私保护的趋势,以及GDPR和CCPA等数据保护法规的要求,一些组织正试图对其个人数据进行重组,使其具有更高的保护水平。
我看到组织采取的一种方法是应用“个人数据存储”模式(我称之为“个人数据存储”模式)。也就是说,从现有系统中提取所有个人数据,并将其存储在一个地方,在那里可以通过API(或在某些情况下直接通过数据库)访问。个人数据存储有很好的保护,审计,有正确的审计跟踪和异常检测,并提供隐私保护功能。
将一个人的数据保护工作主要集中在一个地方而不是分散在几十个系统上是有意义的。当然,将这么多数据从遗留系统迁移到一个新模块,然后升级到仍然能够在需要时请求和使用这些数据,这绝非易事。这就是为什么在某些情况下,这种模式只适用于敏感数据--医疗、生物识别、信用卡等。
为了完整起见,还有一种叫做它意味着一种体系结构,用户自己存储自己的数据以便进行控制。虽然这在理论上是不错的,但在实践中很少有用户有这样的能力,尽管我很佩

浙公网安备 33010602011771号