Actualización de tablas activas globales mediante Terraform
Puede utilizar Terraform para modificar una tabla activa global existente
En este artículo se incluyen los siguientes temas:
- Agregar una réplica regional
- Borrar una réplica regional
- Cambio de los límites de TTL y tabla de una tabla activa global
- Editar los límites de tabla de una réplica regional
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.
Nota: 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 del sudeste de Canadá (Toronto), utilice el siguiente archivo nosql.tf donde necesita comentar (o eliminar) el código relacionado con la adición de la réplica en el sudeste de Canadá (Toronto).
Nota: La definición de la tabla (CREATE TABLE IF NOT EXISTS mr_test...) siempre se debe incluir en el script terraform aunque la tabla ya exista. 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 el TTL de tabla para una tabla activa global mediante Terraform.
En una tabla activa global, el cambio del límite de capacidad de lectura o del 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 de 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 cambian. Sin embargo, el valor de TTL se cambia a 15 días tanto en la tabla local como en todas las réplicas.
Nota: Una tabla activa global tiene una definición de tabla simétrica que incluye el esquema, el índice, TTL y el 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 a todas las demás 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.

Descripción de la ilustración terraform.png
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:
-
Navegue hasta el directorio
Toronto. Cree una configuración de Terraform (aquí,nosql.tf) duplicando la definición del recursooci_nosql_tablede la configuración utilizada en la región este de EE. UU. (Ashburn). -
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 } } -
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
ocidde 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> -
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.