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.

In questo esempio la tabella Global Active mr_test esiste già e dispone di una replica regionale nell'area Canada sudorientale (Montreal). Per aggiungere una replica regionale di questa tabella in un'altra area Canada sud-orientale (Toronto), utilizzare il seguente file nosql.tf per definire la replica regionale.

Nota

Le definizioni della tabella singleton (CREATE TABLE IF NOT EXISTS mr_test...) e delle repliche esistenti devono essere sempre incluse nello script terraform anche se la tabella di origine e le repliche esistono già. La rimozione della definizione CREATE TABLE dallo script terraform comporta l'eliminazione della tabella dall'area. Analogamente, 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]
}

Attenersi alla procedura descritta in Usa Terraform per creare una tabella attiva globale per aggiungere una replica regionale della tabella nella nuova area. Viene visualizzato un prompt da Terraform per l'aggiunta di una nuova risorsa replica. Dopo la conferma, Terraform aggiungerà la nuova replica regionale della tabella Global Active.

Rilasciare una replica regionale

È possibile eliminare una replica regionale di una tabella attiva globale esistente.

In questo esempio, la tabella Global Active 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 singleton (CREATE TABLE IF NOT EXISTS mr_test...) deve essere sempre inclusa nello script terraform anche se la tabella di origine esiste già. La rimozione della definizione CREATE TABLE dallo script terraform comporta l'eliminazione della tabella 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]
#}

Attenersi alla procedura descritta in Usa Terraform per creare una tabella attiva globale per eliminare una replica della tabella dall'area Canada sudorientale (Toronto). Viene visualizzato un prompt da Terraform che indica che la replica oci_nosql_table_replica.replica_toronto è in fase di eliminazione. Dopo la conferma, Terraform eliminerà la replica regionale della tabella Global Active.

Modificare la capacità della 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 Global Active, la modifica del limite di capacità di lettura o di scrittura si applica solo all'area locale in cui è stata modificata. Tuttavia, la modifica della capacità di storage o il valore TTL predefinito a livello di tabella applica le modifiche a tutte le repliche regionali della tabella.

Per modificare la capacità della tabella mr_test, utilizzare il seguente file nosql.tf per modificare le proprietà della tabella (TTL tabella predefinito) e i limiti della tabella.
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]
}
Attenersi alla procedura descritta in Usa Terraform per creare una tabella attiva globale con il file nosql.tf modificato come mostrato sopra.

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.

Modifica la capacità della tabella di una singola replica regionale

Terraform non consente di modificare direttamente la capacità di una replica della tabella regionale.

Ad esempio, non è possibile modificare direttamente l'unità di lettura e scrittura per la replica nell'area Canada sud-orientale (Toronto) utilizzando direttamente Terraform. In questo caso, è necessario importare prima la risorsa tabella e quindi modificare i limiti come mostrato nell'esempio riportato di seguito.

Nota

La definizione della tabella singleton (CREATE TABLE IF NOT EXISTS mr_test...) deve essere sempre inclusa nello script terraform anche se la tabella di origine esiste già. La rimozione della definizione CREATE TABLE dallo script terraform comporta l'eliminazione della tabella dall'area.
#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.