本文介绍如何使用Terraform升级RDS PostgreSQL实例的版本。
前提条件
已创建RDS PostgreSQL实例,详情请参见创建RDS PostgreSQL实例。
实例状态为运行中,您可以通过如下两种方式查看:
参见查询实例详情查看参数status,如果取值为Runing则表示实例状态为运行中。
前往RDS管理控制台,切换到目标地域,找到指定实例后,查看实例状态。
升级实例内核小版本
以升级RDS PostgreSQL实例内核小版本到20220830
为例。
在terraform.tf文件的
resource "alicloud_db_instance" "instance" {}
中增加target_minor_version
配置项,具体配置如下:... resource "alicloud_db_instance" "instance" { ... target_minor_version = "rds_postgres_1300_20220830" }
说明小版本号
rds_postgres_1300_20220830
各字段含义:rds:RDS实例。
postgres:PostgreSQL数据库。
1300:PostgreSQL大版本为13。
20220830:AliPG内核小版本,支持设置20220130或以上版本。各小版本的具体信息,请参见AliPG内核小版本发布记录。
运行
terraform apply
。出现如下配置信息后,确认配置信息并输入yes,开始修改实例配置。
alicloud_vpc.main: Refreshing state... [id=vpc-****] alicloud_vswitch.main: Refreshing state... [id=vsw-****] alicloud_db_instance.instance: Refreshing state... [id=pgm-****] Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: ~ update in-place Terraform will perform the following actions: # alicloud_db_instance.instance will be updated in-place ~ resource "alicloud_db_instance" "instance" { id = "pgm-****" ~ target_minor_version = rds_postgres_1300_20220730 -> rds_postgres_1300_20220830 # (31 unchanged attributes hidden) } Plan: 0 to add, 1 to change, 0 to destroy. Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve. Enter a value:
出现类似如下日志时,表示升级成功。
alicloud_db_instance.instance: Modifying... [id=pgm-****] alicloud_db_instance.instance: Still modifying... [id=pgm-****, 10s elapsed] ...... alicloud_db_instance.instance: Still modifying... [id=pgm-****, 4m0s elapsed] alicloud_db_instance.instance: Modifications complete after 4m1s [id=pgm-***] Apply complete! Resources: 0 added, 1 changed, 0 destroyed.
查看结果。
运行
terraform show
查看RDS PostgreSQL实例内核小版本。# alicloud_db_instance.instance: resource "alicloud_db_instance" "instance" { client_ca_enabled = 0 client_crl_enabled = 0 connection_string = "pgm-****.pg.rds.aliyuncs.com" connection_string_prefix = "pgm-****" db_instance_storage_type = "cloud_essd" db_time_zone = "Asia/Shanghai" deletion_protection = false engine = "PostgreSQL" engine_version = "13.0" force_restart = false ha_config = "Auto" id = "pgm-****" instance_charge_type = "Postpaid" instance_name = "terraformtest" instance_storage = 50 instance_type = "pg.n2.2c.2m" maintain_time = "05:00Z-06:00Z" monitoring_period = 300 period = 0 port = "5432" private_ip_address = "172.16.XX.XX" resource_group_id = "rg-****" security_group_ids = [] security_ip_mode = "normal" security_ips = [ "127.0.0.1", ] sql_collector_config_value = 30 sql_collector_status = "Disabled" storage_auto_scale = "Enable" storage_threshold = 30 storage_upper_bound = 100 target_minor_version = "rds_postgres_1300_20220830" tcp_connection_type = "SHORT" vpc_id = "vpc-****" vswitch_id = "vsw-****" zone_id = "cn-hangzhou-j" pg_hba_conf { address = "127.0.0.1" database = "all" method = "md5" priority_id = 1 type = "host" user = "all" } }
登录RDS控制台查看RDS PostgreSQL实例内核小版本。
升级实例大版本
以将实例pgm-****
的大版本由RDS PostgreSQL 13
升级为RDS PostgreSQL 14
为例。
在terraform.tf文件中增加
resource "alicloud_rds_upgrade_db_instance" "upgrade" {}
配置项,具体配置如下:... resource "alicloud_rds_upgrade_db_instance" "upgrade" { source_db_instance_id = alicloud_db_instance.instance.id target_major_version = "14.0" db_instance_class = "pg.n2.2c.2m" db_instance_storage = "50" instance_network_type = "VPC" db_instance_storage_type = "cloud_essd" collect_stat_mode = "After" switch_over = "false" payment_type = "PayAsYouGo" vswitch_id = alicloud_vswitch.main.id }
运行
terraform apply
开始升级RDS PostgreSQL实例大版本。出现如下配置信息后,确认配置信息并输入yes,开始升级。
alicloud_vpc.main: Refreshing state... [id=vpc-****] alicloud_vswitch.main: Refreshing state... [id=vsw-****] alicloud_db_instance.instance: Refreshing state... [id=pgm-****] Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: # alicloud_rds_upgrade_db_instance.upgrade will be created + resource "alicloud_rds_upgrade_db_instance" "upgrade" { + acl = (known after apply) + auto_upgrade_minor_version = (known after apply) + ca_type = (known after apply) + collect_stat_mode = "After" + connection_string = (known after apply) + db_instance_class = "pg.n2.2c.2m" + db_instance_description = (known after apply) + db_instance_storage = 50 + db_instance_storage_type = "cloud_essd" + engine = (known after apply) + engine_version = (known after apply) + ha_mode = (known after apply) + id = (known after apply) + instance_network_type = "VPC" + maintain_time = (known after apply) + payment_type = "PayAsYouGo" + port = (known after apply) + private_ip_address = (known after apply) + replication_acl = (known after apply) + security_ips = (known after apply) + server_cert = (known after apply) + server_key = (known after apply) + source_db_instance_id = "pgm-****" + ssl_enabled = (known after apply) + switch_over = "false" + sync_mode = (known after apply) + target_major_version = "14.0" + tcp_connection_type = (known after apply) + vpc_id = (known after apply) + vswitch_id = "vsw-****" + zone_id = (known after apply) + zone_id_slave_1 = (known after apply) + parameters { + name = (known after apply) + value = (known after apply) } } Plan: 1 to add, 0 to change, 0 to destroy. Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve. Enter a value:
出现类似如下日志时,表示升级成功。
alicloud_rds_upgrade_db_instance.upgrade: Creating... alicloud_rds_upgrade_db_instance.upgrade: Still creating... [10s elapsed] ... alicloud_rds_upgrade_db_instance.upgrade: Still creating... [23m41s elapsed] alicloud_rds_upgrade_db_instance.upgrade: Creation complete after 23m51s [id=pgm-****] Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
查看结果。
运行
terraform show
查看升级的RDS PostgreSQL实例。# alicloud_rds_upgrade_db_instance.upgrade: resource "alicloud_rds_upgrade_db_instance" "upgrade" { collect_stat_mode = "After" connection_string = "pgm-****.pg.rds.aliyuncs.com" db_instance_class = "pg.n2.2c.2m" db_instance_description = "Upgrade from pgm-****" db_instance_storage = 50 db_instance_storage_type = "cloud_essd" deletion_protection = false engine = "PostgreSQL" engine_version = "14.0" ha_mode = "RPO" id = "pgm-****" instance_network_type = "VPC" maintain_time = "18:00Z-22:00Z" payment_type = "PayAsYouGo" port = "5432" private_ip_address = "172.16.XX.XX" security_ips = [ "127.0.0.1", ] source_db_instance_id = "pgm-****" switch_over = "false" sync_mode = "Async" target_major_version = "14.0" tcp_connection_type = "LONG" vpc_id = "vpc-****" vswitch_id = "vsw-****" zone_id = "cn-hangzhou-j" }
登录RDS控制台查看升级的RDS PostgreSQL实例。