如何在Terraform中为CloudSQL主从实例设置指定instance_type?
解决方案
首先要明确:instance_type 是Terraform创建CloudSQL实例后生成的计算属性,并非可手动配置的参数,直接设置它会触发报错,必须通过其他配置项间接控制实例类型。
1. 主实例(ON_PREMISES_INSTANCE)配置
正常创建独立的CloudSQL主实例即可,无需额外设置特殊参数,实例创建后instance_type会自动变为ON_PREMISES_INSTANCE:
resource "google_sql_database_instance" "primary" { name = "primary-master" database_version = "POSTGRES_14" # 替换为你需要的版本 settings { tier = "db-f1-micro" # 替换为合适的实例规格 # 可添加其他配置,如磁盘大小、网络设置等 } }
2. 只读副本(READ_REPLICA_INSTANCE)配置
通过设置master_instance_name关联主实例,CloudSQL会自动将该实例标记为只读副本,instance_type会自动变为READ_REPLICA_INSTANCE:
resource "google_sql_database_instance" "read_replica" { name = "read-replica" database_version = "POSTGRES_14" # 需与主实例版本一致 master_instance_name = google_sql_database_instance.primary.name settings { tier = "db-f1-micro" # 可根据需求调整规格 # 可添加副本专属配置,如区域、备份设置等 } }
关键说明
- 不要在配置中手动指定
instance_type字段,它是Terraform自动生成的输出值,仅用于标识实例类型。 - 只读副本的
database_version必须与主实例保持一致,否则会创建失败。
内容的提问来源于stack exchange,提问作者AzyCrw4282
相关产品推荐
相关产品推荐

