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은 Global Active 테이블의 새 지역 복제본을 추가합니다.
지역 복제본 삭제
기존 전역 활성 테이블의 지역 복제본을 삭제할 수 있습니다.
이 예에서 Global Active 테이블
mr_test
은 이미 존재하며 Canada Southeast(Montreal) 및 Canada Southeast(Toronto) 영역에 복제본이 있습니다. Canada Southeast(Toronto) 영역에서 복제본을 삭제하려면 Canada Southeast(Toronto)에서 복제본을 추가하는 것과 관련된 코드를 주석 처리(또는 제거)해야 하는 다음 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은 Global Active 테이블의 지역 복제본을 삭제합니다.
전역 활성 테이블의 테이블 용량 변경
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]
}
Terraform을 사용하여 전역 활성 테이블 생성에 설명된 것과 동일한 단계를 위에 표시된 대로 수정된
nosql.tf
파일로 수행합니다.
주:
Global Active 테이블에는 모든 지역 복제본의 스키마, 인덱스, TTL 및 저장 영역 크기를 포함하는 대칭 테이블 정의가 있습니다. 한 지역 복제본에서 인덱스, TTL 또는 스토리지 크기를 변경하면 다른 모든 지역 복제본에 자동으로 적용됩니다. 따라서 이러한 테이블 정의는 한 영역에서만 관리하는 것이 좋습니다.단일 지역별 복제본의 테이블 용량 편집
Terraform을 사용하면 지역별 테이블 복제본의 용량을 직접 편집할 수 없습니다.
예를 들어, 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.