6

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

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

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

4

4 回答 4

4

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

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

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

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

于 2015-06-12T16:20:07.613 回答
1

在这个阶段似乎复制功能不可用,所以我看到以下选项,因为没有提供对预写日志(或 BigTable TX 日志的名称)的读取访问权限:

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

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

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

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

另一个想法......如果历史是任何教训,AWS 从一开始就没有多可用区选项。他们花了一段时间来进化。

于 2015-05-08T08:45:35.133 回答
0

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

于 2020-09-17T18:52:20.810 回答
0

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

于 2020-02-20T10:26:50.993 回答