Actualización de tablas activas globales mediante Terraform

Puede utilizar Terraform para modificar una tabla activa global existente

Agregar una réplica regional

Puede agregar una réplica regional de una tabla activa global existente.

En este ejemplo, la tabla Global Active mr_test ya existe y tiene una réplica regional en la región Sureste de Canadá (Montreal). Para agregar una réplica regional de esta tabla en otra región del sudeste de Canadá (Toronto), utilice el siguiente archivo nosql.tf.

Note:

Las definiciones de la tabla (CREATE TABLE IF NOT EXISTS mr_test...) y las réplicas existentes siempre se deben incluir en el archivo de comandos terraform, incluso si la tabla y las réplicas ya existen. Si se elimina la definición CREATE TABLE del script terraform, se borra la tabla de la región. Del mismo modo, al eliminar la definición de réplica existente del script terraform, se borra la réplica de la tabla regional.
variable "compartment_ocid" {
}
variable "table_ddl_statement" {
  default = "CREATE TABLE IF NOT EXISTS mr_test(id INTEGER,
             name STRING, info JSON,PRIMARY KEY(id))
             using TTL 10 days with schema frozen"
}
resource "oci_nosql_table" "mr_test" {
  #Required
  compartment_id = var.compartment_ocid
  ddl_statement  = var.table_ddl_statement
  name           = "mr_test"
  table_limits {
    #Required
    max_read_units = 51
    max_write_units = 51
    max_storage_in_gbs = 2     
  }
}
resource "oci_nosql_table_replica" "replica_montreal" {
  table_name_or_id = oci_nosql_table.mr_test.id
  region = "ca-montreal-1"
  #Optional
  max_read_units     = "60"
  max_write_units    = "60"
}
#add a regional replica
resource "oci_nosql_table_replica" "replica_toronto" {
  compartment_id = var.compartment_ocid
  table_name_or_id = "mr_test"
  region = "ca-toronto-1"  
  depends_on = [oci_nosql_table.mr_test]
}
Ejecute el siguiente comando para ejecutar el script terraform:
terraform apply
Terraform muestra el plan que se va a aplicar y solicita confirmación como se muestra a continuación:
Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve.

Una vez que confirme, Terraform agregará la nueva réplica regional de la tabla Global Active en la región de Toronto. Puesto que no se han proporcionado explícitamente unidades de lectura y escritura para la réplica en esta región, los valores se toman de la tabla mr_test en la región US East (Ashburn). En el ejemplo anterior, las unidades de lectura y escritura de la tabla de réplica en la región Canada Southeast(Toronto) serían 51.

Borrar una réplica regional

Puede borrar una réplica regional de una tabla activa global existente.

En este ejemplo, la tabla Global Active mr_test ya existe y tiene una réplica en la región Canada Southeast(Montreal) y Canada Southeast(Toronto). Para borrar la réplica de la región Sureste de Canadá (Toronto), utilice el siguiente archivo nosql.tf donde debe comentar (o eliminar) el código relacionado con la adición de la réplica en el Sureste de Canadá (Toronto).

Note:

La definición de la tabla (CREATE TABLE IF NOT EXISTS mr_test...) siempre se debe incluir en el script terraform, incluso si la tabla ya existe. Si se elimina la definición CREATE TABLE del script terraform, se borra la tabla de la región.
variable "compartment_ocid" {
}
variable "table_ddl_statement" {
  default = "CREATE TABLE IF NOT EXISTS mr_test(id INTEGER,
             name STRING, info JSON,PRIMARY KEY(id))
             using TTL 10 days with schema frozen"
}
resource "oci_nosql_table" "mr_test" {
  #Required
  compartment_id = var.compartment_ocid
  ddl_statement  = var.table_ddl_statement
  name           = "mr_test"
  table_limits {
    #Required
    max_read_units = 51
    max_write_units = 51
    max_storage_in_gbs = 2     
  }
}
resource "oci_nosql_table_replica" "replica_montreal" {
  table_name_or_id = oci_nosql_table.mr_test.id
  region = "ca-montreal-1"
  #Optional
  max_read_units     = "60"
  max_write_units    = "60"
}
#resource "oci_nosql_table_replica" "replica_toronto" {
#  compartment_id = var.compartment_ocid
#  table_name_or_id = "mr_test"
#  region = "ca-toronto-1"  
#  depends_on = [oci_nosql_table.mr_test]
#}
Ejecute el siguiente comando para llamar al script terraform:
terraform apply
Terraform muestra el plan que se va a aplicar y solicita confirmación como se muestra a continuación:
Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve.

Una vez que lo confirme, Terraform borrará la réplica en la región del sudeste de Canadá (Toronto).

Cambio de los límites de TTL y tabla de una tabla activa global

Puede cambiar las unidades de lectura, las unidades de escritura, la capacidad de almacenamiento y la TTL de tabla para una tabla activa global mediante Terraform.

En una tabla activa global, cambiar el límite de capacidad de lectura o el límite de capacidad de escritura solo se aplica a la región en la que se cambia. Sin embargo, si se cambia la capacidad de almacenamiento o el valor de TTL de nivel de tabla, se aplican los cambios a la tabla local, así como a todas las réplicas regionales de la tabla.

Para cambiar la capacidad de la tabla mr_test, utilice el siguiente archivo nosql.tf.
variable "compartment_ocid" {
}

variable "table_ddl_statement" {
  default = "CREATE TABLE IF NOT EXISTS mr_test(id INTEGER,
            name STRING, info JSON,PRIMARY KEY(id))
            using TTL 15 days with schema frozen"
}
resource "oci_nosql_table" "mr_test" {
  #Required
  compartment_id = var.compartment_ocid
  ddl_statement  = var.table_ddl_statement
  name           = "mr_test"
  table_limits {
    #Required
    max_read_units = 70
    max_write_units = 70
    max_storage_in_gbs = 2     
  }
}
resource "oci_nosql_table_replica" "replica_montreal" {
  table_name_or_id = oci_nosql_table.mr_test.id
  region = "ca-montreal-1"

  #Optional  
  max_read_units = 60  
  max_write_units = 60
}
resource "oci_nosql_table_replica" "replica_toronto" {
  compartment_id = var.compartment_ocid
  table_name_or_id = "mr_test"
  region = "ca-toronto-1"  
  depends_on = [oci_nosql_table.mr_test]
}
Ejecute el siguiente comando para llamar al script terraform:
terraform apply
Terraform muestra el plan que se va a aplicar y solicita confirmación como se muestra a continuación:
Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve.
Una vez que confirme, las unidades de lectura y escritura de la tabla en la región local (us-ashburn-1) se cambian a 70. Los límites de tabla de las réplicas en las otras regiones no se modifican. Sin embargo, el valor de TTL se cambia a 15 días en la tabla local y en todas las réplicas.

Note:

Una tabla activa global tiene una definición de tabla simétrica que incluye esquema, índice, TTL y tamaño de almacenamiento en todas las réplicas regionales. Si realiza un cambio en un índice, TTL o tamaño de almacenamiento en una réplica regional, se aplica automáticamente al resto de réplicas regionales. Por lo tanto, se recomienda gestionar estas definiciones de tabla solo desde una región.

Editar los límites de tabla de una réplica regional

El proveedor de OCI en Terraform está configurado para una sola región. Dado que las actualizaciones de límite de tabla son específicas de cada región, puede gestionar las unidades de lectura y escritura de una réplica creada en ca-toronto-1 solo desde la región de Toronto. Del mismo modo, si desea gestionar los límites de tabla de las diferentes regiones de la tabla activa global, le recomendamos que estructure sus módulos en terraform como se muestra a continuación. Aquí, la región 1, la región 2, etc. son directorios del directorio Terraform. El directorio Terraform es el que se crea al instalar Terraform.



En el directorio Terraform, mantenga directorios independientes para cada región y mantenga las configuraciones (representadas como nosql.tfen el diagrama anterior) con límites de tabla específicos de región dentro de ellas. Los archivos de estado de terraform (terraform.tfstate) también se crean y gestionan por separado para cada región.

En nuestro caso, tendríamos tres directorios dentro del directorio Terraform que corresponden a las tres regiones, us-ashburn-1, ca-montreal-1 y ca-toronto-1. Llamemos a los directorios Ashburn, Montreal y Toronto.

Pasos para modificar las unidades de lectura/escritura de la tabla de réplica en la región ca-toronto-1:
  1. Navegue hasta el directorio Toronto. Cree una configuración de Terraform (aquí, nosql.tf) duplicando la definición del recurso oci_nosql_table de la configuración utilizada en la región este de EE. UU. (Ashburn).
  2. Actualice las unidades de lectura y/o escritura de la tabla según sea necesario.
    resource "oci_nosql_table" "mr_test" {
      #Required
      compartment_id = var.compartment_ocid
      ddl_statement  = "CREATE TABLE IF NOT EXISTS mr_test(id INTEGER,
                        name STRING, info JSON, PRIMARY KEY(id))
                        with schema frozen"
      name           = "mr_test"
      table_limits {
        #Required
        max_read_units     = 100
        max_write_units    = 90
        max_storage_in_gbs = 1
      }
    }
  3. Importe la tabla existente al estado de Terraform. Como se muestra en el diagrama anterior, el archivo de estado también es específico de la región y, por lo tanto, la importación de la tabla no crea ningún conflicto de estado. Puede obtener el ocid de la tabla de réplicas en la región Sureste de Canadá (Toronto) desde la consola de OCI.
    terraform import oci_nosql_table.mr_test <ocid-of-replica-table-in-ca-toronto-1>
  4. Aplicar cambios
    terraform apply
    
    Terraform shows the plan to be applied and prompts for confirmation as shown below.
    Do you want to perform these actions?
    Terraform will perform the actions described above.
    Only 'yes' will be accepted to approve.
    

    Al confirmar, las unidades de lectura y escritura se modifican respectivamente a 100 y 90 para la réplica en la región ca-toronto-1.