Globale aktive Tabellen mit Terraform aktualisieren

Mit Terraform können Sie eine vorhandene globale aktive Tabelle ändern

Regionales Replikat hinzufügen

Sie können ein regionales Replikat einer vorhandenen globalen aktiven Tabelle hinzufügen.

In diesem Beispiel ist die Tabelle "Global Active" mr_test bereits vorhanden und hat ein regionales Replikat in der Region "Canada Southeast(Montreal)". Um ein regionales Replikat dieser Tabelle in einer anderen Region hinzuzufügen Canada Southeast(Toronto), verwenden Sie die folgende Datei nosql.tf.

Hinweis:

Die Definitionen der Tabelle (CREATE TABLE IF NOT EXISTS mr_test...) und der vorhandenen Replikate müssen immer im Terraform-Skript enthalten sein, auch wenn die Tabelle und die Replikate bereits vorhanden sind. Wenn Sie die CREATE TABLE-Definition aus dem terraform-Skript entfernen, wird die Tabelle aus der Region gelöscht. Wenn Sie die vorhandene Replikatdefinition aus dem Terraform-Skript entfernen, wird auch das regionale Tabellenreplikat gelöscht.
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]
}
Führen Sie den folgenden Befehl aus, um das terraform-Skript auszuführen:
terraform apply
Terraform zeigt den anzuwendenden Plan an und fordert zur Bestätigung auf, wie unten gezeigt:
Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve.

Nachdem Sie bestätigt haben, fügt Terraform das neue regionale Replikat der Tabelle "Global Active" in der Region Toronto hinzu. Da für das Replikat in dieser Region keine Lese- und Schreibeinheiten explizit angegeben sind, werden die Werte aus der Tabelle mr_test in der Region US East (Ashburn) übernommen. Im obigen Beispiel wären die Lese- und Schreibeinheiten der Replikattabelle in der Region Canada Southeast(Toronto) 51.

Regionales Replikat löschen

Sie können ein regionales Replikat einer vorhandenen globalen aktiven Tabelle löschen.

In diesem Beispiel ist die globale aktive Tabelle mr_test bereits vorhanden und verfügt über ein Replikat in der Region Canada Southeast(Montreal) und Canada Southeast(Toronto). Um das Replikat aus der Region Canada Southeast (Toronto) zu löschen, verwenden Sie die folgende Datei nosql.tf, in der Sie den Code zum Hinzufügen des Replikats in Canada Southeast (Toronto) kommentieren (oder entfernen) müssen.

Hinweis:

Die Definition der Tabelle (CREATE TABLE IF NOT EXISTS mr_test...) muss immer im Terraform-Skript enthalten sein, auch wenn die Tabelle bereits vorhanden ist. Wenn Sie die CREATE TABLE-Definition aus dem terraform-Skript entfernen, wird die Tabelle aus der Region gelöscht.
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]
#}
Führen Sie den folgenden Befehl aus, um das terraform-Skript aufzurufen:
terraform apply
Terraform zeigt den anzuwendenden Plan an und fordert zur Bestätigung auf, wie unten gezeigt:
Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve.

Sobald Sie bestätigen, wird Terraform das Replikat in der Region Canada Southeast (Toronto) ablegen.

TTL- und Tabellenlimits einer globalen aktiven Tabelle ändern

Sie können die Leseeinheiten, Schreibeinheiten, Speicherkapazität und Tabellen-TTL für eine globale aktive Tabelle mit Terraform ändern.

In einer Tabelle "Global Active" gilt das Ändern des Lesekapazitätslimits oder des Schreibkapazitätslimits nur für die Region, in der es geändert wird. Wenn Sie jedoch die Speicherkapazität ändern oder den TTL-Wert auf Tabellenebene ändern, werden die Änderungen auf die lokale Tabelle sowie auf alle regionalen Replikate der Tabelle angewendet.

Um die Tabellenkapazität der Tabelle mr_test zu ändern, verwenden Sie die folgende Datei nosql.tf.
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]
}
Führen Sie den folgenden Befehl aus, um das terraform-Skript aufzurufen:
terraform apply
Terraform zeigt den anzuwendenden Plan an und fordert zur Bestätigung auf, wie unten gezeigt:
Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve.
Nach der Bestätigung werden die Lese- und Schreibeinheiten der Tabelle in der lokalen Region (us-ashburn-1) in 70 geändert. Die Tabellenlimits der Replikate in den anderen Regionen werden nicht geändert. Der TTL-Wert wird jedoch sowohl in der lokalen Tabelle als auch in allen Replikaten in 15 Tage geändert.

Hinweis:

Eine globale aktive Tabelle hat eine symmetrische Tabellendefinition, einschließlich Schema, Index, TTL und Speichergröße in allen regionalen Replikaten. Wenn Sie einen Index, eine TTL- oder Speichergröße in einem regionalen Replikat ändern, wird er automatisch auf alle anderen regionalen Replikate angewendet. Es wird daher empfohlen, diese Tabellendefinitionen nur in einer Region zu verwalten.

Tabellenlimits eines regionalen Replikats bearbeiten

Der OCI-Provider in Terraform ist für eine einzelne Region konfiguriert. Da Aktualisierungen von Tabellenlimits regionsspezifisch sind, können Sie die Lese- und Schreibeinheiten eines in ca-toronto-1 erstellten Replikats nur aus der Region Toronto verwalten. Wenn Sie die Tabellenlimits der verschiedenen Regionen Ihrer globalen aktiven Tabelle verwalten möchten, empfehlen wir Ihnen, Ihre Module in Terraform zu strukturieren, wie unten gezeigt. Hier sind Region 1, Region 2 usw. Verzeichnisse in Ihrem Terraform-Verzeichnis. Das Verzeichnis Terraform wird erstellt, wenn Sie Terraform installieren.



Verwalten Sie im Verzeichnis Terraform separate Verzeichnisse für jede Region, und verwalten Sie die Konfigurationen (im obigen Diagramm als nosql.tf dargestellt) mit regionsspezifischen Tabellenlimits darin. Die Terraform-Statusdateien (terraform.tfstate) werden auch separat für jede Region erstellt und verwaltet.

In unserem Fall befinden sich drei Verzeichnisse im Verzeichnis Terraform, die den drei Regionen us-ashburn-1, ca-montreal-1 und ca-toronto-1 entsprechen. Rufen Sie die Verzeichnisse Ashburn, Montreal und Toronto auf.

Schritte zum Ändern der Lese-/Schreibeinheiten der Replikattabelle im Bereich ca-toronto-1:
  1. Navigieren Sie zum Verzeichnis Toronto. Erstellen Sie eine Terraform-Konfiguration (hier nosql.tf), indem Sie die Ressourcendefinition oci_nosql_table aus der Konfiguration duplizieren, die in der Region "US East (Ashburn)" verwendet wird.
  2. Aktualisieren Sie die Lese- und/oder Schreibeinheiten der Tabelle nach Bedarf.
    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. Importieren Sie die vorhandene Tabelle in Ihren Terraform-Status. Wie im obigen Diagramm dargestellt, ist die Statusdatei auch regionsspezifisch. Durch den Import der Tabelle entstehen keine Zustandskonflikte. Sie können die ocid der Replikattabelle in der Region "Canada Southeast(Toronto)" über die OCI-Konsole abrufen.
    terraform import oci_nosql_table.mr_test <ocid-of-replica-table-in-ca-toronto-1>
  4. Änderungen anwenden
    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.
    

    Bei der Bestätigung werden die Lese- und Schreibeinheiten für das Replikat in der Region ca-toronto-1 in 100 bzw. 90 geändert.