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

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

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

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

【问题讨论】:

标签: google-cloud-bigtable


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

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

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

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

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

    4. 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,它允许您保存表的架构和数据的副本,然后稍后从备份恢复到新表。

        【讨论】:

          猜你喜欢
          • 2020-12-22
          • 1970-01-01
          • 2016-05-28
          • 1970-01-01
          • 2019-09-17
          • 1970-01-01
          • 1970-01-01
          • 2011-06-12
          • 1970-01-01
          相关资源
          最近更新 更多