最近有用户到后台留言,希望讲解下Cassandra备份相关的方案。所以这期的三分钟我们来聊下备份。
首先来聊备份的目的是什么,通常来说有以下5个原因:
单副本节点情况下磁盘等硬件故障。
数据迁移到其它系统。
数据被污染。
意外删除。
将集群回滚至原始状态用于做基准测试。
数据备份恢复的手段通常是以下步骤:
备份现有数据文件。
将备份文件推送到外部磁盘/存储。
从外部磁盘/存储中提取数据并将其回复到数据库中。
校验数据是否完整。
Cassandra 提供到备份方式有两种
基于快照的备份。
增量备份。
具体的操作步骤社区有完整的文档,见以下链接,这里就不详细说了。
https://cassandra.apache.org/doc/latest/cassandra/operating/backups.html#:~:text=Backups%20in%20Apache%20Cassandra%20database,to%20node%2Fpartition%2Fnetwork%20failure
这里对以上的备份做一些补充。我们希望备份尽量少手动操作。这里推荐几个开源的备份恢复工具:
1.Medusa for Apache Cassandra。 Github 地址如下:
https://github.com/thelastpickle/cassandra-medusa
它提供以下功能:
单节点备份。
单节点还原。
集群范围的就地还原(在用于备份的同一集群上还原)。
集群范围的远程恢复(在与用于备份的集群不同的集群上进行恢复)。
备份清除。
通过 Apache Libcloud 支持本地存储、谷歌云存储 (GCS) 和 AWS S3。可以扩展以支持 Apache Libcloud 支持的其他存储提供程序。
支持使用单个令牌或 vnode 的集群。
完整或差异备份。
2.Netflix开源的Priam。GitHub地址如下:
https://github.com/Netflix/Priam
这个工具提供以下丰富的功能:
使用 SimpleDB 进行token管理。
支持通过公共 IP 在 AWS 中的多区域 Cassandra 部署。
多区域环境中的自动安全组更新。
将 SSTables 从本地临时磁盘备份到 S3。
使用 Snappy 压缩动态压缩备份数据。
备份节流
用于未来增强功能的可插拔模块(支持多种数据存储)。
用于列出和恢复备份数据的 API操作。
用于备份/恢复和其他操作的 REST API 操作。
这2个都是Cassandra集群规模上万点重度用户开源出来的工具,可以放心的在生产环境中使用。
除了以上工具,还有一些花样的玩法。比如:
数量不大的情况下,直接使用CQL的COPY TO/FROM 方式来完成备份与恢复。
使用CDC的方式,实时的把数据通过Pulsar同步到其它集群或者异构数据库里面,这也是当前火遍全球的数据同步方式。
最后,备份恢复完成后。我们需要校验下数据是否完整,通常会检查下数据的总数是否相等来做个完整性判断。这个时候可以使用DataStax的DSBulk来做个count的查询。其用法如下:
dsbulk ( load | unload | count ) [options](( -k | --keyspace ) keyspace_name( -t | --table ) table_name)| ( --schema.query string )[ help | --help ]Github:https://github.com/datastax/dsbulk
本期的分享就到这边了。
如果你有关于Cassandra/Pulsar相关素材,欢迎投稿,我们将会给你赠送一个小礼物。
想学习更多的Casssandra、Spark、Pulsar相关知识,请扫码关注。




