是否可以对 Google Cloud Spanner 数据库/表进行快照?出于合规性原因,我们必须拥有当前数据库的每日快照,以便在发生灾难时回滚:这在 Spanner 中是否可行?如果没有,是否有意支持它?
对于那些可能会问为什么我们需要它的人,因为 Spanner 被复制/冗余等 - 它不能防止人为错误(意外丢弃表)或破坏/间谍活动,因此是问题和要求。
谢谢,米
是否可以对 Google Cloud Spanner 数据库/表进行快照?出于合规性原因,我们必须拥有当前数据库的每日快照,以便在发生灾难时回滚:这在 Spanner 中是否可行?如果没有,是否有意支持它?
对于那些可能会问为什么我们需要它的人,因为 Spanner 被复制/冗余等 - 它不能防止人为错误(意外丢弃表)或破坏/间谍活动,因此是问题和要求。
谢谢,米
今天,您可以通过使用您最喜欢的工具(mapreduce、spark、dataflow)读取所有数据并在特定时间戳(使用 Timestamp Bounds)读取来输出一致的快照。
https://cloud.google.com/spanner/docs/timestamp-bounds
在数据被垃圾收集之前,您有大约一个小时的时间进行导出。
将来,我们将提供一个 Apache Beam/Dataflow 连接器,以一种更具可扩展性的方式来实现这一点。这将是我们将数据导入/导出到 Cloud Spanner 的首选方法。
从长远来看,我们将支持备份和恢复到备份的能力,但该功能目前不可用。
截至 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 完成的,您需要为数据流操作付费。
Google Cloud Spanner 现在有两种可用于备份的方法。
https://cloud.google.com/spanner/docs/backup
您可以使用内置备份或使用数据流作业进行导出/导入。
根据下面的线程(也由 eb80 回答),我已经能够通过构建模板并从 cron 作业中运行 gcloud 命令,使用他们的 Import/Export DataFlow 作业从 Spanner 成功编写备份脚本。问题是,当您安排作业时,您需要解析输出并获取作业 ID,以便您可以检查它的状态(再次,我编写了脚本),当您获得 JOB_STATE_DONE 或 JOB_STATE_FAILED 时,它就完成了。如果您需要运行导入,您将需要该作业 ID,因为特定的备份文件夹结构是:
gs://bucketName/yourFolder/instanceId-databaseId-jobId