【问题标题】:Google Deployment Manager - database creation failsGoogle 部署管理器 - 数据库创建失败
【发布时间】:2019-07-17 09:42:00
【问题描述】:

我正在尝试使用 Google 部署管理器创建一个 CloudSQL 实例和两个数据库。我无法在两个数据库都成功创建的情况下获得可靠的首次部署。相反,每次我运行它时,一个(或两个!)都会失败,状态为“FAILED_PRECONDITION”,错误消息“Bad Request”,并且没有进一步解释哪个先决条件失败或如何修复它.有没有其他人遇到过这个问题或对我如何找到问题有任何线索?

{{ 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-cloud-platform google-cloud-sql google-deployment-manager


    【解决方案1】:

    所以,我找到了答案。事实证明,当我遇到这个问题时,谷歌对他们的错误消息的帮助甚至比我想象的要小。看起来是什么(我仍然没有具体证据表明这是前提条件,但下面似乎解决了它)是您不能在同一个 CloudSQL 上同时创建两个数据库实例和部署管理器尝试这样做,因为它们都只依赖于 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 }}
    

    【讨论】:

    • 我很震惊。这对我也有用。 :shocked-emoji: 谢谢!!
    • 太棒了!我很高兴!
    • 这似乎也适用于数据库用户——他们不能同时创建。谢谢!我同意你关于部署管理器错误消息的看法——严重缺乏实际信息。在这种情况下,通常是两个参数一起发生冲突(或操作,就像现在在这里看到的那样)。
    【解决方案2】:

    顺便说一句,我的同事今天刚刚发现,从右喵开始,将 backendType 显式设置为 SECOND_GEN 并将 databaseVersion 设置为 MYSQL_5_6 也会产生 400 错误。您可以在控制台中使用此组合。这是最近的一次 API 中断。请注意。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-12
      • 2018-02-05
      • 1970-01-01
      相关资源
      最近更新 更多