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 Global Active 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 Sud-Est du Canada (Toronto), utilisez le fichier nosql.tf suivant.

Remarques :

Les définitions de la table (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 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]
}
Exécutez la commande suivante pour exécuter le script terraform :
terraform apply
Terraform affiche le plan à appliquer et invite à confirmer, comme indiqué ci-dessous :
Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve.

Une fois la confirmation effectuée, Terraform ajoute la nouvelle réplique régionale de la table Global Active dans la région de Toronto. Aucune unité de lecture et d'écriture n'étant explicitement fournie pour la réplique dans cette région, les valeurs sont reprises de la table mr_test dans la région US East (Ashburn). Dans l'exemple ci-dessus, les unités de lecture et d'écriture de la table de répliques dans la région Canada Southeast(Toronto) sont 51.

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 (CREATE TABLE IF NOT EXISTS mr_test...) doit toujours être incluse dans le script terraform même si la table 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]
#}
Exécutez la commande suivante pour appeler le script terraform :
terraform apply
Terraform affiche le plan à appliquer et invite à confirmer, comme indiqué ci-dessous :
Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve.

Une fois que vous l'aurez confirmé, Terraform déposera la réplique dans la région Sud-Est du Canada (Toronto).

Modifier la durée de vie et les limites de table 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 dans laquelle elle est modifiée. Toutefois, la modification de la capacité de stockage ou de la valeur de durée de vie au niveau de la table applique les modifications à la table locale ainsi qu'à toutes les répliques régionales de la table.

Pour modifier la capacité de la table mr_test, utilisez le fichier nosql.tf suivant.
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]
}
Exécutez la commande suivante pour appeler le script terraform :
terraform apply
Terraform affiche le plan à appliquer et invite à confirmer, comme indiqué ci-dessous :
Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve.
Une fois que vous avez confirmé la modification, les unités de lecture et d'écriture de la table dans la région locale (us-ashburn-1) sont remplacées par 70. Les limites de table des répliques dans les autres régions ne sont pas modifiées. Cependant, la valeur de durée de vie est remplacée par 15 jours dans la table locale et dans toutes les répliques.

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 les limites de table d'une réplique régionale

Le fournisseur OCI dans Terraform est configuré pour une seule région. Etant donné que les mises à jour de limite de table sont propres à une région, vous pouvez gérer les unités de lecture et d'écriture d'une réplique créée dans ca-toronto-1 uniquement à partir de la région de Toronto. De même, si vous souhaitez gérer les limites de table des différentes régions de votre table active globale, nous vous recommandons de structurer vos modules en terraform comme indiqué ci-dessous. Ici, Région 1, Région 2, etc. sont des répertoires dans votre répertoire Terraform. Le répertoire Terraform est celui qui est créé lorsque vous installez Terraform.



Dans le répertoire Terraform, tenez à jour des répertoires distincts pour chaque région et tenez à jour les configurations (représentées par nosql.tfdans le diagramme ci-dessus) avec les limites de table propres à chaque région. Les fichiers d'état terraform (terraform.tfstate) sont également créés et gérés séparément pour chaque région.

Dans notre cas, nous aurions trois répertoires dans le répertoire Terraform correspondant aux trois régions, us-ashburn-1, ca-montreal-1 et ca-toronto-1. Appelez les répertoires Ashburn, Montreal et Toronto.

Etapes de modification des unités de lecture/écriture de la table de répliques dans la région ca-toronto-1 :
  1. Accédez au répertoire Toronto. Créez une configuration Terraform (ici, nosql.tf) en dupliquant la définition de ressource oci_nosql_table de la configuration utilisée dans la région Est des Etats-Unis (Ashburn).
  2. Mettez à jour les unités de lecture et/ou d'écriture de la table si nécessaire.
    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. Importez la table existante dans votre état Terraform. Comme indiqué dans le diagramme ci-dessus, le fichier d'état est également propre à une région et, par conséquent, l'importation de la table ne crée aucun conflit d'état. Vous pouvez obtenir le fichier ocid de la table de répliques dans la région Sud-est du Canada (Toronto) à partir de la console OCI.
    terraform import oci_nosql_table.mr_test <ocid-of-replica-table-in-ca-toronto-1>
  4. Appliquer les modifications
    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.
    

    Lors de la confirmation, les unités de lecture et d'écriture sont modifiées respectivement à 100 et 90 pour la réplique dans la région ca-toronto-1.