谷歌云Spanner的外部备份/快照

13

能否对Google Cloud Spanner数据库/表进行快照?出于合规性的原因,我们需要每天对当前数据库进行快照,以备在发生灾难时回滚:在Spanner中是否可能实现此功能?如果不支持,是否有意愿支持?

对于那些可能会问为什么我们需要它,因为Spanner已经具备了复制/冗余等功能 - 它不能防止人为错误(意外删除表)或破坏/间谍活动,所以需要这个功能和要求。

谢谢,M

4个回答

12

今天,您可以使用您喜欢的工具(mapreduce、spark、dataflow)读取所有数据并以特定时间戳(使用时间戳边界)进行读取,以便流式传输一致的快照。

https://cloud.google.com/spanner/docs/timestamp-bounds

您还有约一小时的时间导出数据,之后数据将被回收清除。

未来,我们将提供 Apache Beam/Dataflow 连接器,以更具可伸缩性的方式执行此操作。这将成为我们在云 Spanner 中执行数据导入/导出的首选方法。

从长远来看,我们将支持备份和恢复到备份的功能,但该功能目前尚不可用。


1
文档中也不清楚数据在集群中保留了多少个副本,以及在灾难情况下Google是否内部备份。 - onionjake
@onionjake 区域配置会保留3份数据副本(https://cloud.google.com/spanner/docs/instance-configuration#configuration)我们内部确实会备份,因此如果您提交支持工单,我们可以帮助您恢复数据。 - Albert Cui
有没有使用Dataflow/Spark导出数据的示例? - Rohan Monga
即将推出,请关注此处 - https://github.com/apache/beam/pull/2166 - Dominic Preuss
1
嗨,备份支持的进展有什么更新吗? - shlomiw
显示剩余3条评论

5
截至2018年7月,Cloud Spanner现在提供导入和导出功能,允许您将数据库导出为Avro格式。如果您通过Google Cloud Console网站进入特定的Cloud Spanner数据库,您会看到顶部有导入和导出按钮。只需点击“导出”,填写所需信息,例如目标Google Cloud Storage存储桶,数据库将备份为Avro格式到Google Cloud Storage中。如果您需要恢复数据库,请使用Google Cloud Console网站上Cloud Spanner部分对应的导入功能。
注意:实际备份和恢复(即导出和导入)是使用Google Cloud Dataflow完成的,并且您将为数据流操作付费。
请参阅导入导出功能的文档。

请注意,如果您尝试导出包含0行的表,则执行备份的云Spanner导出数据流作业将会失败。我已向Google提交了一张工单(编号#16454353),他们已经确认这是一个实际存在的问题,正在努力解决。 - dsquier
这个功能非常棒!我们真的很期待它。是否有通过命令行触发导出的选项,以便将其用作自动备份例程? - Christian Gintenreiter

2

0
根据下面的帖子(也由eb80回答),我已经成功地使用Spanner的Import/Export DataFlow作业脚本备份,通过构建模板并在cron作业中运行gcloud命令。但是,当您安排作业时,您需要解析输出并获取作业ID,以便您可以检查其状态(同样,我编写了脚本),当您获得JOB_STATE_DONE或JOB_STATE_FAILED时,它就完成了。如果您需要运行导入,则需要该作业ID,因为特定的备份文件夹结构如下:
gs://bucketName/yourFolder/instanceId-databaseId-jobId 如何批量加载从其他来源生成的自定义Avro数据?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接