Google Cloud Bigtable 看起来很棒,但是我对备份和冗余有一些疑问。
是否有任何备份数据的选项以防止人为错误?
集群当前在单个区域中运行 - 是否有任何方法可以缓解区域不可用的情况?
Google Cloud Bigtable 看起来很棒,但是我对备份和冗余有一些疑问。
是否有任何备份数据的选项以防止人为错误?
集群当前在单个区域中运行 - 是否有任何方法可以缓解区域不可用的情况?
备份当今可用数据的一种方法是运行导出 MapReduce,如下所述:
https://cloud.google.com/bigtable/docs/exporting-importing#export-bigtable
您是对的,截至今天,Bigtable 集群的可用性与它们运行的区域的可用性相关联。如果担心更高的可用性,您可以查看各种复制写入的方法(例如 kafka),但请注意,这为您正在构建的系统增加了其他复杂性,例如管理集群之间的一致性。(如果您的软件中存在错误,并且您跳过了某些写入的分发,会发生什么?)
使用 Cloud Datastore 等不同的系统可以避免这个问题,因为它不是一个单一的区域系统 - 但它提供了其他需要考虑的权衡。
在这个阶段似乎复制功能不可用,所以我看到以下选项,因为没有提供对预写日志(或 BigTable TX 日志的名称)的读取访问权限:
在我们信任的谷歌中。依靠他们的专业知识来确保可用性和恢复。托管 BigTable 对 HBase 开发人员的吸引力之一是管理开销较低,无需担心备份和恢复。
在不同的 AZ 中部署一个辅助 BigTable 集群,并以异步模式向其发送每个 Mutation 的副本,在客户端上使用更积极的写入缓冲,因为低延迟不是优先事项。您甚至可以部署常规 HBase 集群而不是 BigTable 集群,但 Google 的 HBase 客户端和 Apache HBase 客户端可以在同一运行时共存的程度仍有待观察。
将突变复制到本地文件,按计划卸载到选择的 GCP 存储类:标准或 DRA。在恢复时重播文件。
3) 的变体。建立一个分布在多个可用区的 Kafka 集群。实现一个生产者并将 Mutations 发送到 Kafka,无论如何它的吞吐量应该高于 BigTable/HBase。通过在恢复时使用来自 Kafka 的消息来跟踪偏移和重放突变。
另一个想法......如果历史是任何教训,AWS 从一开始就没有多可用区选项。他们花了一段时间来进化。
在撰写此答案时,Cloud Bigtable 支持托管备份,它允许您保存表的架构和数据的副本,然后稍后从备份恢复到新表。
你可以考虑 Egnyte 的https://github.com/egnyte/bigtable-backup-and-restore。这些是 java-bigtable-hbase 阴影 jar 的 Python 包装器,它可以将 Bigtable 数据作为一系列 Hadoop 序列文件导出/导入 GCS 存储桶。