Aggiornamento delle tabelle attive globali mediante Terraform
È possibile utilizzare Terraform per modificare una tabella attiva globale esistente
Aggiungi una replica regionale
È possibile aggiungere una replica regionale di una tabella attiva globale esistente.
mr_test esiste già e dispone di una replica regionale nell'area Sud-Est del Canada (Montreal). Per aggiungere una replica regionale di questa tabella in un'altra area, Canada sud-est (Toronto), utilizzare il seguente file nosql.tf.
Nota
Le definizioni della tabella (CREATE TABLE IF NOT EXISTS mr_test...) e delle repliche esistenti devono essere sempre incluse nello script terraform anche se la tabella e le repliche esistono già. Se si rimuove la definizione CREATE TABLE dallo script terraform, la tabella viene eliminata dall'area. La rimozione della definizione di replica esistente dallo script terraform comporta l'eliminazione della replica della tabella regionale.
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. Una volta confermata, Terraform aggiungerà la nuova replica regionale della tabella Global Active nell'area di Toronto. Poiché non vi sono unità di lettura e scrittura fornite in modo esplicito per la replica in quest'area, i valori vengono acquisiti dalla tabella mr_test nell'area US East (Ashburn). Nell'esempio precedente, le unità di lettura e scrittura della tabella di replica nell'area Canada Southeast(Toronto) sarebbero 51.
Rilasciare una replica regionale
È possibile eliminare una replica regionale di una tabella attiva globale esistente.
mr_test esiste già e ha una replica nell'area Canada Southeast(Montreal) e Canada Southeast(Toronto). Per eliminare la replica dall'area Canada Southeast(Toronto), utilizzare il seguente file nosql.tf in cui è necessario commentare (o rimuovere) il codice relativo all'aggiunta della replica in Canada Southeast(Toronto).
Nota
La definizione della tabella (CREATE TABLE IF NOT EXISTS mr_test...) deve essere sempre inclusa nello script terraform anche se la tabella esiste già. Se si rimuove la definizione CREATE TABLE dallo script terraform, la tabella viene eliminata dall'area.
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.Una volta confermato, Terraform rilascerà la replica nell'area sud-orientale del Canada (Toronto).
Modificare i limiti TTL e tabella di una tabella attiva globale
È possibile modificare le unità di lettura, le unità di scrittura, la capacità di storage e il TTL della tabella per una tabella Global Active utilizzando Terraform.
In una tabella Attivo globale, la modifica del limite di capacità di lettura o scrittura si applica solo all'area in cui viene modificata. Tuttavia, la modifica della capacità di storage o il valore TTL a livello di tabella applica le modifiche alla tabella locale e a tutte le repliche regionali della tabella.
mr_test, utilizzare il file nosql.tf seguente.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) vengono impostate su 70. I limiti delle tabelle delle repliche nelle altre aree non vengono modificati. Tuttavia, il valore TTL viene modificato in 15 giorni sia nella tabella locale che in tutte le repliche.
Nota
Una tabella attiva globale ha una definizione di tabella simmetrica che include schema, indice, TTL e dimensione di memorizzazione in tutte le repliche regionali. Se si apporta una modifica a un indice, a un TTL o alla dimensione di storage in una replica regionale, questa viene applicata automaticamente a tutte le altre repliche regionali. Si consiglia pertanto di gestire queste definizioni di tabella da una sola area.Modificare i limiti di tabella di una replica regionale
Il provider OCI in Terraform è configurato per una singola area. Poiché gli aggiornamenti dei limiti di tabella sono specifici dell'area, è possibile gestire le unità di lettura e scrittura di una replica creata in ca-toronto-1 solo dall'area di Toronto. Allo stesso modo, se vuoi gestire i limiti delle tabelle delle diverse aree della tua tabella attiva globale, ti consigliamo di strutturare i tuoi moduli in terraform come mostrato di seguito. Qui, Regione 1, Regione 2 ecc. sono directory all'interno della directory Terraform. La directory Terraform è quella che viene creata quando si installa Terraform.
Nella directory Terraform, mantenere directory separate per ogni area e mantenere le configurazioni (rappresentate come nosql.tf nel diagramma precedente) con limiti di tabella specifici dell'area al loro interno. I file di stato terraform (terraform.tfstate) vengono inoltre creati e gestiti separatamente per ogni area.
Nel nostro caso, avremmo tre directory all'interno della directory Terraform corrispondenti alle tre aree, us-ashburn-1, ca-montreal-1 e ca-toronto-1. Chiamiamo le directory Ashburn, Montreal e Toronto.
ca-toronto-1:
- Passare alla directory
Toronto. Creare una configurazione Terraform (qui,nosql.tf) duplicando la definizione della risorsaoci_nosql_tabledalla configurazione utilizzata nell'area orientale degli Stati Uniti (Ashburn). - Aggiornare le unità di lettura e/o scrittura della tabella in base alle esigenze.
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 } } - Importare la tabella esistente nello stato Terraform. Come mostrato nel diagramma precedente, il file di stato è anche specifico dell'area e quindi l'importazione della tabella non crea alcun conflitto di stato. Puoi ottenere il
ociddella tabella di replica nell'area sudorientale del Canada (Toronto) dalla console OCI.terraform import oci_nosql_table.mr_test <ocid-of-replica-table-in-ca-toronto-1> - Applica le modifiche
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.Alla conferma, le unità di lettura e scrittura vengono modificate rispettivamente in 100 e 90 per la replica nell'area
ca-toronto-1.
