Mise à jour des tables actives globales à l'aide de Terraform

Vous pouvez utiliser Terraform pour modifier une table active globale existante

Ajouter une réplique régionale

Vous pouvez ajouter une réplique régionale d'une table active globale existante.

Dans cet exemple, la table active globale mr_test existe déjà et possède une réplique régionale dans la région Sud-est du Canada (Montréal). Pour ajouter une réplique régionale de cette table dans une autre région du sud-est du Canada (Toronto), utilisez le fichier nosql.tf suivant pour définir la réplique régionale.

Remarques :

Les définitions de la table singleton (CREATE TABLE IF NOT EXISTS mr_test...) et des répliques existantes doivent toujours être incluses dans le script terraform, même si la table source et les répliques existent déjà. La suppression de la définition CREATE TABLE du script terraform supprime la table de la région. De même, la suppression de la définition de réplique existante du script terraform supprime la réplique de table régionale.
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]
}

Suivez les mêmes étapes que celles décrites dans Utilisation de Terraform pour créer une table active globale afin d'ajouter une réplique régionale de la table dans la nouvelle région. Terraform vous invite à indiquer qu'une nouvelle ressource de réplique est en cours d'ajout. Une fois la confirmation effectuée, Terraform ajoute la nouvelle réplique régionale de la table active globale.

Supprimer une réplique régionale

Vous pouvez supprimer une réplique régionale d'une table active globale existante.

Dans cet exemple, la table active globale mr_test existe déjà et possède une réplique dans la région Sud-est du Canada (Montréal) et Sud-est du Canada (Toronto). Pour supprimer la réplique de la région Sud-Est du Canada (Toronto), utilisez le fichier nosql.tf suivant où vous devez commenter (ou supprimer) le code relatif à l'ajout de la réplique dans le sud-est du Canada (Toronto).

Remarques :

La définition de la table singleton (CREATE TABLE IF NOT EXISTS mr_test...) doit toujours être incluse dans le script terraform, même si la table source existe déjà. La suppression de la définition CREATE TABLE du script terraform supprime la table de la région.
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]
#}

Suivez les mêmes étapes que celles décrites dans Utilisation de Terraform pour créer une table active globale afin de supprimer une réplique de la table de la région Sud-est du Canada (Toronto). Terraform vous invite à indiquer que la réplique oci_nosql_table_replica.replica_toronto est en cours de destruction. Une fois la confirmation effectuée, Terraform supprime la réplique régionale de la table active globale.

Modifier la capacité d'une table active globale

Vous pouvez modifier les unités de lecture, les unités d'écriture, la capacité de stockage et la durée de vie d'une table active globale à l'aide de Terraform.

Dans une table active globale, la modification de la limite de capacité de lecture ou de capacité d'écriture s'applique uniquement à la région locale dans laquelle elle a été modifiée. Toutefois, la modification de la capacité de stockage ou de la valeur TTL de niveau table par défaut applique les modifications à toutes les répliques régionales de la table.

Pour modifier la capacité de table de la table mr_test, utilisez le fichier nosql.tf suivant pour modifier les propriétés de la table (durée de vie par défaut de la table) et les limites de la table.
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 = 60
    max_write_units = 60
    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"
}
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]
}
Suivez les mêmes étapes que celles décrites dans Utilisation de Terraform pour créer une table active globale avec le fichier nosql.tf modifié, comme indiqué ci-dessus.

Remarques :

Une table active globale a une définition de table symétrique comprenant le schéma, l'index, la durée de vie et la taille de stockage dans toutes les répliques régionales. Si vous modifiez un index, une durée de vie ou une taille de stockage dans une réplique régionale, elle est automatiquement appliquée à toutes les autres répliques régionales. Il est donc recommandé de gérer ces définitions de table à partir d'une seule région.

Modifier la capacité de table d'une seule réplique régionale

Avec Terraform, vous ne pouvez pas modifier directement la capacité d'une réplique de table régionale.

Par exemple, vous ne pouvez pas modifier directement l'unité de lecture et l'unité d'écriture de la réplique dans la région Sud-est du Canada (Toronto) à l'aide de Terraform. Dans ce cas, vous devez d'abord importer la ressource de table, puis modifier les limites comme indiqué dans l'exemple ci-dessous.

Remarques :

La définition de la table singleton (CREATE TABLE IF NOT EXISTS mr_test...) doit toujours être incluse dans le script terraform, même si la table source existe déjà. La suppression de la définition CREATE TABLE du script terraform supprime la table de la région.
#Table has been created on ca-montreal-1
#update table read/write units to 100/100
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    = "100"
    max_storage_in_gbs = "1"
  }
}

#Run terraform import 
#Import table on ca-montreal-1 to bring it under Terraform management
$terraform import oci_nosql_table.mr_test <OCID>
$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.