Bigtable 备份和冗余

Posted

技术标签:

【中文标题】Bigtable 备份和冗余【英文标题】:Bigtable Backups and Redundancy 【发布时间】:2015-07-17 18:39:13 【问题描述】:

Google Cloud Bigtable 看起来很棒,但我对备份和冗余有一些疑问。

是否有任何选项可以备份数据以防止人为错误?

集群当前在单个区域中运行 - 是否有任何方法可以缓解区域不可用的情况?

【问题讨论】:

这能回答你的问题吗? Google Cloud Bigtable backup and recovery 【参考方案1】:

目前可用的备份数据的一种方法是运行导出 MapReduce,如下所述:

https://cloud.google.com/bigtable/docs/exporting-importing#export-bigtable

您是对的,从今天开始,Bigtable 集群的可用性与它们运行的​​区域的可用性相关联。如果担心更高的可用性,您可以查看各种复制写入的方法(例如 kafka),但要注意请注意,这会增加您正在构建的系统的其他复杂性,例如管理集群之间的一致性。 (如果您的软件中存在错误,并且您跳过了某些写入的分发,会发生什么情况?)

使用 Cloud Datastore 等不同的系统可以避免这个问题,因为它不是一个单一的区域系统,但它提供了其他权衡考虑。

【讨论】:

【参考方案2】:

目前看来复制功能不可用,因此鉴于未提供对预写日志(或 BigTable TX 日志的名称)的读取访问权限,我看到以下选项:

    我们信任 Google。依靠他们的专业知识来确保可用性和恢复。托管 BigTable 对 HBase 开发人员的吸引力之一是管理开销较低,无需担心备份和恢复。

    在不同的 AZ 中部署辅助 BigTable 集群,并以异步模式向其发送每个 Mutation 的副本,由于低延迟不是优先事项,因此在客户端上具有更积极的写入缓冲。您甚至可以部署常规 HBase 集群而不是 BigTable 集群,但 Google 的 HBase 客户端和 Apache HBase 客户端可以在同一个运行时共存的程度还有待观察。

    将突变复制到本地文件,按计划卸载到选择的 GCP 存储类:标准或 DRA。在恢复时重播文件。

    3) 的变体。建立一个分布在多个可用区的 Kafka 集群。实现一个生产者并将 Mutations 发送到 Kafka,无论如何它的吞吐量应该高于 BigTable/HBase。通过在恢复时使用来自 Kafka 的消息来跟踪偏移和重放突变。

另一个想法...如果历史可以作为教训,AWS 从一开始就没有多可用区选项。他们需要一段时间才能进化。

【讨论】:

【参考方案3】:

您可以考虑 Egnyte 的https://github.com/egnyte/bigtable-backup-and-restore。这些是 java-bigtable-hbase 着色 jar 的 Python 包装器,可将 Bigtable 数据作为一系列 Hadoop 序列文件导出/导入 GCS 存储桶。

【讨论】:

【参考方案4】:

在撰写此答案时,Cloud Bigtable 支持托管 backups,它允许您保存表的架构和数据的副本,然后稍后从备份恢复到新表。

【讨论】:

以上是关于Bigtable 备份和冗余的主要内容,如果未能解决你的问题,请参考以下文章

缘起:BigTable

Bigtable 如何处理 Tablet Server 故障?

BigTable 设计 - BigTable 单元格大小的上限

BigTable Design - BigTable单元格大小的上限

Cloud Bigtable:区域或区域服务

浅析 Bigtable 和 LevelDB 的实现