通过 jenkins 运行 sql 导出(备份),定期收到 "错误:(gcloud.sql.export.sql)HTTPError 409:操作失败,因为另一个操作已在进行中。错误:(gcloud.sql.operations.wait) 参数 OPERATION [OPERATION ...]:必须指定。
我正在尝试确定在哪里可以看到哪个作业导致此操作失败
我试图将 gCloud SQL 操作等待 --超时延长到 1600 没有运气
Gcloud SQL 操作等待 --timeout=1600
要等待操作,您需要指定操作的 ID,如@PYB所述。下面介绍了如何以编程方式执行此操作,就像在 Jenkins 脚本中一样:
$ gcloud sql operations list --instance=$DB_INSTANCE_NAME --filter='NOT status:done' --format='value(name)' | xargs -r gcloud sql operations wait
$ gcloud sql ... # whatever you need to do
这里有 2 个错误可能会影响您。第一个是管理操作在前一个操作完成之前开始。通读这篇关于 SQL 的"最佳实践"文档,将在这方面为您提供帮助: https://cloud.google.com/sql/docs/mysql/best-practices#admin 具体而言,在"操作"选项卡中,您可以看到正在运行的操作。
最后,命令"gcloud sql operations wait --timeout=1600"中缺少 [OPERATION] 参数。请参阅此处有关该命令的文档:https://cloud.google.com/sdk/gcloud/reference/sql/operations/wait
OPERATION 是正在运行的操作的名称,如果您希望列出所有实例操作以获取正确的名称,则可以使用以下命令: https://cloud.google.com/sdk/gcloud/reference/sql/operations/list。
操作名称是十六进制格式的 36 个字符字符串,因此您的命令应如下所示:">
gcloud sql 操作等待操作 aaaaaaa-0000-0000-0000-0000000000000 --timeout=1600"
干杯
我在长时间运行的导入过程中遇到了同样的问题:
gcloud sql import sql "mycompany-mysql-1" $DB_BACKUP_PATH --database=$DB_NAME -q
这真的意味着如果导入运行一个小时,我将无法创建数据库 那段时间?真???
gcloud sql databases create $DB_NAME --instance="mycompany-mysql-1", -i "mycompany-mysql-1" --async "
如果您在 CI/CD 中使用 GCloud,这是一个大问题!有人有一个简单的解决方案吗?
我到现在为止的想法:
- 从云存储桶下载备份到 CI/CD
- 通过 CLI 连接到 MySQL 并以这种方式导入转储
但这意味着每当 CI/CD 中的两个任务想要同时执行多个任务时,一个任务就会失败,或者我必须等待。非常难过,如果我没猜错的话。