Google 部署管理器 - 数据库创建失败
Google Deployment Manager - database creation fails
我正在尝试使用 Google 部署管理器创建一个 CloudSQL 实例和两个数据库。我无法在两个数据库都成功创建的情况下获得可靠的首次部署。相反,每次我 运行 它,一个(或两个!)失败,状态为 "FAILED_PRECONDITION",错误消息 "Bad Request",并且没有关于 哪个 [=18] 的进一步解释=] 前提条件失败或如何修复它。有没有其他人以前遇到过这个问题或对我如何找到问题有任何线索?
属性 {{ SQL_NAME }}
等都在我的 jinja 模板的顶部定义,但为了清楚起见,我省略了它们。
resources:
- name: {{ SQL_NAME }}
type: sqladmin.v1beta4.instance
properties:
backendType: SECOND_GEN
instanceType: CLOUD_SQL_INSTANCE
region: {{ properties["region"] }}
databaseVersion: {{ properties["dbType"] }}
settings:
tier: db-n1-standard-1
dataDiskSizeGb: 10
dataDiskType: PD_SSD
storageAutoResize: true
replicationType: SYNCHRONOUS
locationPreference:
zone: {{ properties['zone']}}
ipConfiguration:
privateNetwork: {{ properties["network"] }}
- name: {{ DB_NAME }}
type: sqladmin.v1beta4.database
properties:
name: db1
instance: $(ref.{{ SQL_NAME }}.name)
charset: utf8
collation: utf8_general_ci
metadata:
dependsOn:
- {{ SQL_NAME }}
- name: {{ DB2_NAME }}
type: sqladmin.v1beta4.database
properties:
name: db2
instance: $(ref.{{ SQL_NAME }}.name)
charset: utf8
metadata:
dependsOn:
- {{ SQL_NAME }}
- name: {{ USER_NAME }}
type: sqladmin.v1beta4.user
properties:
name: dbroot
host: "%"
instance: $(ref.{{ SQL_NAME }}.name)
password: {{ properties['password'] }}
metadata:
dependsOn:
- {{ SQL_NAME }}
所以,我找到了答案。事实证明 Google 对他们的错误消息的帮助甚至比我遇到问题时想象的还要少。它似乎是什么(我仍然没有 具体 证据表明这是前提条件,但下面似乎解决了它)是你不能同时创建两个数据库同一个 CloudSQL 实例,Deployment Manager 会尝试这样做,因为它们都只依赖于 CloudSQL 实例本身。我通过在每个连续资源上添加依赖项解决了这个问题:
- name: {{ DB_NAME }}
type: sqladmin.v1beta4.database
properties:
name: db1
instance: $(ref.{{ SQL_NAME }}.name)
charset: utf8
collation: utf8_general_ci
metadata:
dependsOn:
- {{ SQL_NAME }}
- name: {{ DB2_NAME }}
type: sqladmin.v1beta4.database
properties:
name: db2
instance: $(ref.{{ SQL_NAME }}.name)
charset: utf8
metadata:
dependsOn:
- {{ SQL_NAME }}
- {{ DB_NAME }}
- name: {{ USER_NAME }}
type: sqladmin.v1beta4.user
properties:
name: dbroot
host: "%"
instance: $(ref.{{ SQL_NAME }}.name)
password: {{ properties['password'] }}
metadata:
dependsOn:
- {{ SQL_NAME }}
- {{ DB2_NAME }}
顺便说一句,我的同事今天才发现,从右喵开始,将 backendType 显式设置为 SECOND_GEN 并将 databaseVersion 显式设置为 MYSQL_5_6 也会产生 400 错误。您可以在控制台中使用此组合。这是最近的一次 API 休息。请注意。
我正在尝试使用 Google 部署管理器创建一个 CloudSQL 实例和两个数据库。我无法在两个数据库都成功创建的情况下获得可靠的首次部署。相反,每次我 运行 它,一个(或两个!)失败,状态为 "FAILED_PRECONDITION",错误消息 "Bad Request",并且没有关于 哪个 [=18] 的进一步解释=] 前提条件失败或如何修复它。有没有其他人以前遇到过这个问题或对我如何找到问题有任何线索?
属性 {{ SQL_NAME }}
等都在我的 jinja 模板的顶部定义,但为了清楚起见,我省略了它们。
resources:
- name: {{ SQL_NAME }}
type: sqladmin.v1beta4.instance
properties:
backendType: SECOND_GEN
instanceType: CLOUD_SQL_INSTANCE
region: {{ properties["region"] }}
databaseVersion: {{ properties["dbType"] }}
settings:
tier: db-n1-standard-1
dataDiskSizeGb: 10
dataDiskType: PD_SSD
storageAutoResize: true
replicationType: SYNCHRONOUS
locationPreference:
zone: {{ properties['zone']}}
ipConfiguration:
privateNetwork: {{ properties["network"] }}
- name: {{ DB_NAME }}
type: sqladmin.v1beta4.database
properties:
name: db1
instance: $(ref.{{ SQL_NAME }}.name)
charset: utf8
collation: utf8_general_ci
metadata:
dependsOn:
- {{ SQL_NAME }}
- name: {{ DB2_NAME }}
type: sqladmin.v1beta4.database
properties:
name: db2
instance: $(ref.{{ SQL_NAME }}.name)
charset: utf8
metadata:
dependsOn:
- {{ SQL_NAME }}
- name: {{ USER_NAME }}
type: sqladmin.v1beta4.user
properties:
name: dbroot
host: "%"
instance: $(ref.{{ SQL_NAME }}.name)
password: {{ properties['password'] }}
metadata:
dependsOn:
- {{ SQL_NAME }}
所以,我找到了答案。事实证明 Google 对他们的错误消息的帮助甚至比我遇到问题时想象的还要少。它似乎是什么(我仍然没有 具体 证据表明这是前提条件,但下面似乎解决了它)是你不能同时创建两个数据库同一个 CloudSQL 实例,Deployment Manager 会尝试这样做,因为它们都只依赖于 CloudSQL 实例本身。我通过在每个连续资源上添加依赖项解决了这个问题:
- name: {{ DB_NAME }}
type: sqladmin.v1beta4.database
properties:
name: db1
instance: $(ref.{{ SQL_NAME }}.name)
charset: utf8
collation: utf8_general_ci
metadata:
dependsOn:
- {{ SQL_NAME }}
- name: {{ DB2_NAME }}
type: sqladmin.v1beta4.database
properties:
name: db2
instance: $(ref.{{ SQL_NAME }}.name)
charset: utf8
metadata:
dependsOn:
- {{ SQL_NAME }}
- {{ DB_NAME }}
- name: {{ USER_NAME }}
type: sqladmin.v1beta4.user
properties:
name: dbroot
host: "%"
instance: $(ref.{{ SQL_NAME }}.name)
password: {{ properties['password'] }}
metadata:
dependsOn:
- {{ SQL_NAME }}
- {{ DB2_NAME }}
顺便说一句,我的同事今天才发现,从右喵开始,将 backendType 显式设置为 SECOND_GEN 并将 databaseVersion 显式设置为 MYSQL_5_6 也会产生 400 错误。您可以在控制台中使用此组合。这是最近的一次 API 休息。请注意。