Globale aktive Tabelle mit Terraform aktualisieren
Mit Terraform können Sie eine vorhandene globale aktive Tabelle ändern
Dieser Artikel enthält die folgenden Themen:
- Regionales Replikat hinzufügen
- Regionales Replikat löschen
- TTL- und Tabellenlimits einer globalen aktiven Tabelle ändern
- Tabellenlimits eines regionalen Replikats bearbeiten
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 weist ein regionales Replikat in der Region "Canada Southeast(Montreal)" auf. Um ein regionales Replikat dieser Tabelle in einer anderen Region hinzuzufügen, 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 dem Bereich 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.
Sobald Sie bestätigen, 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 weist ein Replikat in der Region Canada Southeast(Montreal) und Canada Southeast(Toronto) auf. Um das Replikat aus der Region Canada Southeast (Toronto) zu löschen, verwenden Sie die folgende nosql.tf-Datei, in der Sie den Code zum Hinzufügen der Replikation 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 dem Bereich 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
Mit Terraform können Sie die Leseeinheiten, Schreibeinheiten, Speicherkapazität und Tabellen-TTL für eine Tabelle "Global Active" ä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.
Nachdem Sie bestätigt haben, 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 verfügt über eine symmetrische Tabellendefinition, einschließlich Schema, Index, TTL und Speichergröße in allen regionalen Replikaten. Wenn Sie eine Änderung an einem Index, einer TTL oder einer Speichergröße in einem regionalen Replikat vornehmen, wird diese automatisch auf alle anderen regionalen Replikate angewendet. Daher wird empfohlen, diese Tabellendefinitionen nur aus 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.

Beschreibung der Abbildung terraform.png
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:
-
Navigieren Sie zum Verzeichnis
Toronto. Erstellen Sie eine Terraform-Konfiguration (hiernosql.tf), indem Sie die Ressourcendefinitionoci_nosql_tableaus der Konfiguration duplizieren, die in der Region "US East (Ashburn)" verwendet wird. -
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 } } -
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
ocidder 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> -
Ä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-1in 100 bzw. 90 geändert.