alicloud_rds_ddr_instance

Provide RDS remote disaster recovery instance resources.

For information about RDS remote disaster recovery instance and how to use it, see What is ApsaraDB for RDS Remote Disaster Recovery.

Example Usage

Because the generation time of the disaster recovery set is uncertain, the query backup set may not have a value, so the following examples may not be executed successfully in one run.

Create an RDS instance based on the remote disaster recovery set

provider "alicloud" {
  region = "cn-hangzhou"
}

variable "name" {
  default = "tf-example"
}

data "alicloud_db_zones" "default" {
  engine                   = "MySQL"
  engine_version           = "8.0"
  db_instance_storage_type = "local_ssd"
  category                 = "HighAvailability"
}

data "alicloud_db_instance_classes" "default" {
  zone_id                  = data.alicloud_db_zones.default.ids.0
  engine                   = "MySQL"
  engine_version           = "8.0"
  db_instance_storage_type = "local_ssd"
  category                 = "HighAvailability"
}
data "alicloud_rds_cross_regions" "regions" {
}

resource "alicloud_vpc" "default" {
  vpc_name   = var.name
  cidr_block = "172.16.0.0/16"
}
resource "alicloud_vswitch" "default" {
  vpc_id       = alicloud_vpc.default.id
  cidr_block   = "172.16.0.0/24"
  zone_id      = data.alicloud_db_zones.default.ids.0
  vswitch_name = var.name
}

resource "alicloud_db_instance" "default" {
  engine                   = "MySQL"
  engine_version           = "8.0"
  instance_type            = data.alicloud_db_instance_classes.default.instance_classes.0.instance_class
  instance_storage         = data.alicloud_db_instance_classes.default.instance_classes.0.storage_range.min
  instance_charge_type     = "Postpaid"
  category                 = "HighAvailability"
  instance_name            = var.name
  vswitch_id               = alicloud_vswitch.default.id
  db_instance_storage_type = "local_ssd"
  monitoring_period        = "60"
}

resource "alicloud_rds_instance_cross_backup_policy" "default" {
  instance_id         = alicloud_db_instance.default.id
  cross_backup_region = data.alicloud_rds_cross_regions.regions.ids.0
}

data "alicloud_rds_cross_region_backups" "backups" {
  db_instance_id = alicloud_rds_instance_cross_backup_policy.default.instance_id
  start_time     = formatdate("YYYY-MM-DD'T'hh:mm'Z'", timeadd(timestamp(), "-24h"))
  end_time       = timestamp()
}

resource "alicloud_rds_ddr_instance" "default" {
  engine                   = "MySQL"
  engine_version           = "8.0"
  db_instance_storage_type = "local_ssd"
  instance_type            = alicloud_db_instance.default.instance_type
  instance_storage         = alicloud_db_instance.default.instance_storage
  payment_type             = "PayAsYouGo"
  vswitch_id               = alicloud_vswitch.default.id
  instance_name            = var.name
  monitoring_period        = "60"
  restore_type             = "BackupSet"
  backup_set_id            = data.alicloud_rds_cross_region_backups.backups.ids.0
}

Create RDS instance according to the recovery time point of remote disaster recovery

provider "alicloud" {
  region = "cn-hangzhou"
}

variable "name" {
  default = "tf-example"
}

data "alicloud_db_zones" "default" {
  engine                   = "MySQL"
  engine_version           = "8.0"
  db_instance_storage_type = "local_ssd"
  category                 = "HighAvailability"
}

data "alicloud_db_instance_classes" "default" {
  zone_id                  = data.alicloud_db_zones.default.ids.0
  engine                   = "MySQL"
  engine_version           = "8.0"
  db_instance_storage_type = "local_ssd"
  category                 = "HighAvailability"
}
data "alicloud_rds_cross_regions" "regions" {
}

resource "alicloud_vpc" "default" {
  vpc_name   = var.name
  cidr_block = "172.16.0.0/16"
}
resource "alicloud_vswitch" "default" {
  vpc_id       = alicloud_vpc.default.id
  cidr_block   = "172.16.0.0/24"
  zone_id      = data.alicloud_db_zones.default.ids.0
  vswitch_name = var.name
}

resource "alicloud_db_instance" "default" {
  engine                   = "MySQL"
  engine_version           = "8.0"
  instance_type            = data.alicloud_db_instance_classes.default.instance_classes.0.instance_class
  instance_storage         = data.alicloud_db_instance_classes.default.instance_classes.0.storage_range.min
  instance_charge_type     = "Postpaid"
  category                 = "HighAvailability"
  instance_name            = var.name
  vswitch_id               = alicloud_vswitch.default.id
  db_instance_storage_type = "local_ssd"
  monitoring_period        = "60"
}

resource "alicloud_rds_instance_cross_backup_policy" "default" {
  instance_id         = alicloud_db_instance.default.id
  cross_backup_region = data.alicloud_rds_cross_regions.regions.ids.0
}

data "alicloud_rds_cross_region_backups" "backups" {
  db_instance_id = alicloud_rds_instance_cross_backup_policy.default.instance_id
  start_time     = formatdate("YYYY-MM-DD'T'hh:mm'Z'", timeadd(timestamp(), "-24h"))
  end_time       = timestamp()
}

resource "alicloud_rds_ddr_instance" "default" {
  engine                   = "MySQL"
  engine_version           = "8.0"
  db_instance_storage_type = "local_ssd"
  instance_type            = alicloud_db_instance.default.instance_type
  instance_storage         = alicloud_db_instance.default.instance_storage
  payment_type             = "PayAsYouGo"
  vswitch_id               = alicloud_vswitch.default.id
  instance_name            = var.name
  monitoring_period        = "60"
  restore_type             = "BackupTime"
  restore_time             = data.alicloud_rds_cross_region_backups.backups.backups.0.recovery_end_time
  source_region            = data.alicloud_rds_cross_region_backups.backups.backups.0.restore_regions.0
  source_db_instance_name  = data.alicloud_rds_cross_region_backups.backups.db_instance_id
}

Deleting alicloud_rds_ddr_instance or removing it from your configuration

The alicloud_rds_ddr_instance resource allows you to manage payment_type = "Subscription" db instance, but Terraform cannot destroy it. Deleting the subscription resource or removing it from your configuration will remove it from your statefile and management, but will not destroy the DB Instance. You can resume managing the subscription db instance via the AlibabaCloud Console.

Argument Reference

The following arguments are supported:

This value must be a multiple of 5 GB. For more information, see Primary ApsaraDB RDS instance types.

parameters

The parameters mapping supports the following:

pg_hba_conf

The pg_hba_conf mapping supports the following:

The following attributes are exported:

Timeouts

The timeouts block allows you to specify timeouts for certain actions:

Import

RDS ddr instance can be imported using the id, e.g.

$ terraform import alicloud_rds_ddr_instance.example rm-abc12345678