Terraformを使用したグローバル・アクティブ表の更新
リージョナル・レプリカの追加
既存のグローバル・アクティブ表のリージョン・レプリカを追加できます。
mr_test
はすでに存在し、カナダ南東部(モントリオール)リージョンにリージョン・レプリカがあります。別のリージョンCanada Southeast(Toronto)にこの表のリージョン・レプリカを追加するには、次のnosql.tf
ファイルを使用してリージョン・レプリカを定義します。
ノート:
ソース表およびレプリカがすでに存在する場合でも、シングルトン表(CREATE TABLE IF NOT EXISTS mr_test...
)および既存のレプリカの定義は、常にterraformスクリプトに含まれている必要があります。terraformスクリプトからCREATE TABLE定義を削除すると、リージョンから表が削除されます。同様に、terraformスクリプトから既存のレプリカ定義を削除すると、リージョナル表のレプリカが削除されます。
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を使用したグローバル・アクティブ表の作成」の説明に従って、新しいリージョンに表のリージョナル・レプリカを追加します。Terraformから、新しいレプリカ・リソースが追加されているというプロンプトが表示されます。確認すると、Terraformによってグローバル・アクティブ表の新しいリージョナル・レプリカが追加されます。
リージョナル・レプリカの削除
既存のグローバル・アクティブ表のリージョン・レプリカを削除できます。
mr_test
はすでに存在し、カナダ南東部(モントリオール)およびカナダ南東部(トロント)のリージョンにレプリカがあります。カナダ南東部(トロント)リージョンからレプリカを削除するには、次のnosql.tf
ファイルを使用します。このファイルでは、カナダ南東部(トロント)でのレプリカの追加に関連するコードをコメント(または削除)する必要があります。
ノート:
ソース表がすでに存在する場合でも、シングルトン表(CREATE TABLE IF NOT EXISTS mr_test...
)の定義は常にterraformスクリプトに含まれている必要があります。terraformスクリプトからCREATE TABLE定義を削除すると、リージョンから表が削除されます。
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を使用したグローバル・アクティブ表の作成」で説明したのと同じステップに従います。Terraformから、レプリカoci_nosql_table_replica.replica_toronto
が破棄されているというプロンプトが表示されます。確認すると、Terraformによってグローバル・アクティブ表のリージョン・レプリカが削除されます。
グローバル・アクティブ表の表容量の変更
Terraformを使用して、グローバル・アクティブ表の読取りユニット、書込みユニット、ストレージ容量および表TTLを変更できます。
グローバル・アクティブ表では、読取り容量制限または書込み容量制限の変更は、変更されるローカル・リージョンにのみ適用されます。ただし、ストレージ容量を変更するか、デフォルトのテーブルレベルのTTL値を変更すると、その変更がテーブルのすべてのリージョナルレプリカに適用されます。
mr_test
表の表の容量を変更するには、次のnosql.tf
ファイルを使用して表のプロパティ(デフォルトの表TTL)を変更し、表の制限を変更します。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]
}
nosql.tf
ファイルを使用します。
ノート:
グローバル・アクティブ表には、スキーマ、索引、TTLおよびすべてのリージョン・レプリカ内のストレージ・サイズを含む対称表定義があります。1つのリージョナル・レプリカで索引、TTLまたはストレージ・サイズを変更すると、他のすべてのリージョナル・レプリカに自動的に適用されます。そのため、これらの表定義は1つのリージョンからのみ管理することをお薦めします。単一のリージョナルレプリカのテーブル容量を編集します
Terraformを使用して、リージョナル表レプリカの容量を直接編集することはできません。
ノート:
ソース表がすでに存在する場合でも、シングルトン表(CREATE TABLE IF NOT EXISTS mr_test...
)の定義は常にterraformスクリプトに含まれている必要があります。terraformスクリプトからCREATE TABLE定義を削除すると、リージョンから表が削除されます。
#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.