文档

数据库管理

更新时间:

本文介绍如何使用Terraform创建和删除RDS PostgreSQL数据库以及修改或添加数据库备注信息。

前提条件

  • 已创建RDS PostgreSQL实例,详情请参见创建RDS PostgreSQL实例

  • 实例状态为运行中,您可以通过如下两种方式查看:

    • 参见查询实例详情查看参数status,如果取值为Runing则表示实例状态为运行中。

    • 前往RDS管理控制台,切换到目标地域,找到指定实例后,查看实例状态。

创建数据库

以创建名为tf_database_test的数据库为例。

  1. terraform.tf配置文件中,补充如下内容。

    ...
    resource "alicloud_db_database" "db" {
      instance_id = alicloud_db_instance.instance.id
      name        = "tf_database_test"
    }
  2. 运行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:
      + create
    
    Terraform will perform the following actions:
    
      # alicloud_db_database.db will be created
      + resource "alicloud_db_database" "db" {
          + character_set = "utf8"
          + id            = (known after apply)
          + instance_id   = "pgm-****"
          + name          = "tf_database_test"
        }
    
    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_db_database.db: Creating...
    alicloud_db_database.db: Creation complete after 1s [id=pgm-****:tf_database_test]
    
    Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
  3. 查看结果。

    • 运行terraform show查看数据库信息。

      # alicloud_db_database.db:
      resource "alicloud_db_database" "db" {
          character_set = "UTF8"
          id            = "pgm-****:tf_database_test"
          instance_id   = "pgm-****"
          name          = "tf_database_test"
      }
      # 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_20220730"
          tcp_connection_type        = "SHORT"
          vpc_id                     = "vpc-****"
          vswitch_id                 = "vsw-****"
          zone_id                    = "cn-hangzhou-h"
      }
                                      
    • 登录RDS控制台查看数据库信息。创建数据库

修改或添加数据库备注

以添加tf_database_test数据库的备注信息为terraform_test为例。

  1. terraform.tf配置文件的resource "alicloud_db_database" "db"中,增加description配置项,具体配置如下。

    ...
    resource "alicloud_db_database" "db" {
    ...
      description = "terraform_test"
    }
  2. 运行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-****]
    alicloud_db_database.db: Refreshing state... [id=pgm-****:tf_database_test]
    
    Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the
    following symbols:
    -/+ destroy and then create replacement
    
    Terraform will perform the following actions:
    
      # alicloud_db_database.db must be replaced
    -/+ resource "alicloud_db_database" "db" {
          ~ character_set = "UTF8" -> "utf8" # forces replacement
          + description   = "terraform_test"
          ~ id            = "pgm-****:tf_database_test" -> (known after apply)
            name          = "tf_database_test"
            # (1 unchanged attribute hidden)
        }
    
    Plan: 1 to add, 0 to change, 1 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_database.db: Destroying... [id=pgm-****:tf_database_test]
    alicloud_db_database.db: Destruction complete after 1s
    alicloud_db_database.db: Creating...
    alicloud_db_database.db: Creation complete after 1s [id=pgm-****:tf_database_test]
    
    Apply complete! Resources: 1 added, 0 changed, 1 destroyed.
  3. 查看结果。

    • 运行terraform show查看数据库备注信息。

      # alicloud_db_database.db:
      resource "alicloud_db_database" "db" {
          character_set = "UTF8"
          description   = "terraform_test"
          id            = "pgm-****:tf_database_test"
          instance_id   = "pgm-****"
          name          = "tf_database_test"
      }
      # 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_20220730"
          tcp_connection_type        = "SHORT"
          vpc_id                     = "vpc-****"
          vswitch_id                 = "vsw-****"
          zone_id                    = "cn-hangzhou-h"
      }
                                      
    • 登录RDS控制台查看数据库备注信息。备注信息

删除数据库

以删除名为tf_database_test的数据库为例。

  1. terraform.tf配置文件中,删除resource "alicloud_db_database" "db"配置项的内容。例如,删除如下信息:

    ...
    resource "alicloud_db_database" "db" {
      instance_id = alicloud_db_instance.instance.id
      name        = "tf_database_test"
      description = "terraform_test"
    }
  2. 运行terraform apply

    出现如下配置信息后,确认配置信息并输入yes,开始删除。

    alicloud_db_database.db: Refreshing state... [id=pgm-****:tf_database_test]
    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:
      - destroy
    
    Terraform will perform the following actions:
    
      # alicloud_db_database.db will be destroyed
      # (because alicloud_db_database.db is not in configuration)
      - resource "alicloud_db_database" "db" {
          - character_set = "UTF8" -> null
          - description   = "terraform_test" -> null
          - id            = "pgm-****:tf_database_test" -> null
          - instance_id   = "pgm-****" -> null
          - name          = "tf_database_test" -> null
        }
    
    Plan: 0 to add, 0 to change, 1 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_database.db: Destroying... [id=pgm-****:tf_database_test]
    alicloud_db_database.db: Destruction complete after 1s
    
    Apply complete! Resources: 0 added, 0 changed, 1 destroyed.
  3. 查看结果。

    • 运行terraform show确认数据库已删除。

      # 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_20220730"
          tcp_connection_type        = "SHORT"
          vpc_id                     = "vpc-****"
          vswitch_id                 = "vsw-****"
          zone_id                    = "cn-hangzhou-h"
      }
                                      
    • 登录RDS控制台查看数据库已删除。空数据库

  • 本页导读 (1)
文档反馈