Bigtable备份和冗余

时间:2015-05-07 09:21:08

标签: google-cloud-bigtable

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

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

群集当前在单个区域中运行 - 有没有办法减轻区域不可用?

4 个答案:

答案 0 :(得分:4)

备份现有数据的一种方法是运行导出MapReduce,如下所述:

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

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

使用不同的系统(如Cloud Datastore)可以避免此问题,因为它不是单个区域系统 - 但它提供了其他权衡因素。

答案 1 :(得分:1)

似乎复制功能在此阶段不可用,所以我看到以下选项,因为没有提供对Write Ahead Log(或任何BigTable TX日志的名称)的读访问权:

  1. Google We Trust。依靠他们在确保可用性和恢复方面的专业知识。托管BigTable到HBase开发人员的一个吸引人之处就是降低管理开销,而不必担心备份和恢复。

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

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

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

在撰写此答案时,Cloud Bigtable支持托管的backups,可让您保存表的架构和数据的副本,然后在以后的时间从备份还原到新表。