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.
mr_test existe déjà et comporte 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.
Note :
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]
}
terraform applyDo 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é, Terraform ajoutera la nouvelle réplique régionale de la table Global Active dans la région de Toronto. Comme aucune unité de lecture et d'écriture n'est 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éplique dans la région Canada Southeast(Toronto) seraient 51.
Supprimer une réplique régionale
Vous pouvez supprimer une réplique régionale d'une table globale active existante.
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 (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]
#}
terraform applyDo 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é, Terraform supprimera la réplique dans la région Canada - Sud-Est (Toronto).
Modifier les limites de durée de vie et 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 la modification 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.
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]
}terraform applyDo you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve.us-ashburn-1) sont remplacées par 70. Les limites de table des répliques des autres régions ne sont pas modifiées. Toutefois, la valeur de durée de vie est remplacée par 15 jours dans la table locale et dans toutes les répliques.
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 les limites de table d'une réplique régionale
Le fournisseur OCI dans Terraform est configuré pour une seule région. Comme 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éé lors de l'installation de Terraform.
Dans le répertoire Terraform, tenez à jour des répertoires distincts pour chaque région et tenez à jour les configurations (représentées en tant que nosql.tfdans le diagramme ci-dessus) avec des limites de table propres à la 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. Appelons les répertoires Ashburn, Montreal et Toronto.
ca-toronto-1 :
- Naviguez jusqu'au répertoire
Toronto. Créez une configuration Terraform (ici,nosql.tf) en dupliquant la définition de ressourceoci_nosql_tableà partir de la configuration utilisée dans la région États-Unis - Est (Ashburn). - Mettez à jour les unités de lecture et/ou d'écriture de la table selon les besoins.
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 } } - Importez la table existante à votre état Terraform. Comme le montre le diagramme ci-dessus, le fichier d'état est également spécifique à une région et, par conséquent, l'importation de la table ne crée aucun conflit d'état. Vous pouvez obtenir la valeur
ocidde la table de répliques dans la région Canada - Sud-Est (Toronto) à partir de la console OCI.terraform import oci_nosql_table.mr_test <ocid-of-replica-table-in-ca-toronto-1> - 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.
