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

Vous pouvez utiliser Terraform pour modifier une table globale active existante

Ajouter une réplique régionale

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

Dans cet exemple, la table Global Active mr_test existe déjà et a une réplique régionale dans la région Canada - Sud-Est (Montréal). Pour ajouter une réplique régionale de cette table dans une autre région Canada - Sud-Est (Toronto), utilisez le fichier nosql.tf suivant pour définir la réplique régionale.

Note :

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 Utiliser Terraform pour créer une table globale active pour ajouter une réplique régionale de la table dans la nouvelle région. Vous obtenez une invite de Terraform indiquant qu'une nouvelle ressource de réplique est en cours d'ajout. Une fois que vous avez confirmé, Terraform ajoutera la nouvelle réplique régionale de la table Global Active.

Supprimer une réplique régionale

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

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

Note :

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 Utiliser Terraform pour créer une table Global Active pour supprimer une réplique de la table de la région Canada - Sud-Est (Toronto). Vous obtenez une invite de Terraform indiquant que la réplique oci_nosql_table_replica.replica_toronto est en cours de destruction. Une fois que vous aurez confirmé, Terraform supprimera la réplique régionale de la table Global Active.

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 Global Active, la modification de la limite de capacité de lecture ou d'écriture s'applique uniquement à la région locale où elle est modifiée. Toutefois, la modification de la capacité de stockage ou de la valeur de durée de vie par défaut au niveau table applique les modifications à toutes les répliques régionales de la table.

Pour modifier la capacité de la table mr_test, utilisez le fichier nosql.tf suivant pour modifier les propriétés de la table (durée de vie de la table par défaut) et modifier 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 Utiliser Terraform pour créer une table globale active avec le fichier nosql.tf modifié, comme indiqué ci-dessus.

Note :

Une table Global Active 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 une taille d'index, de durée de vie ou 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 la table d'une réplique régionale unique

À l'aide de 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 d'écriture pour la réplique dans la région Canada - Sud-Est (Toronto) directement à 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.

Note :

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.