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.
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]
}
terraform applyDo 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.
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]
#}
terraform applyDo 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.
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]
}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) 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.
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.
