我目前正在为我们公司的 CI/CD 管道添加一个额外的步骤,以便我们在进行可能在我们的数据库上运行迁移的部署之前对数据库进行备份。
为了进行备份,我使用以下命令向 Google Cloud Platform 进行身份验证:
gcloud auth activate-service-account --key-file /path/to/keyfile.json
验证后我使用以下命令:
gcloud sql backups create --async --instance instance_name
我的问题是添加异步标志的含义是什么。我理解这样做意味着我的管道将不会等待备份完成再继续下一步,但是,如果下一步涉及运行可能会破坏某些东西的迁移,这是否意味着我在上一步中进行的备份可能会处于迁移部分运行的中间状态?
Google 实际上是如何处理备份创建的?他们是否会在那个时间点创建数据库快照,然后从中进行备份?删除 --async 标志是否更安全,以确保在运行任何潜在迁移之前备份已完成?
我尝试查看文档但并没有对此进行详细介绍。
答案1
我认为对于快照目的,最好不要使用--异步,除非您确实确定 CI/CD 中的下一个操作不会干扰快照操作。
也就是说,我认为快照会完成,但是下一个操作(如果它与 cloudsql 实例或数据库有关)如果在快照运行时同时运行则会失败。
举个例子:你不能通过以下方式导出多个数据库gcloud sql 导出 sql同时。您必须等待第一次运行完成,否则第二次执行将失败!
希望这有帮助!
答案2
我们可以使用以下命令了解备份过程的状态:-
使用
gcloud sql operations list
命令获取操作ID。使用
gcloud sql operations describe
命令获取操作的状态。 更多详细信息请参见此处
有关 --async 命令,请参阅谷歌文档看起来执行将返回到其他作业,并且备份将在后台继续。