FJcloud実践
TerraformでFJcloud-V RDBのDBサーバーを作成する4つの方法とは
この記事は、ニフクラブログで2021-08-30に公開された記事を移転したものです。
今回は、Terraform NIFCLOUD Providerを利用してニフクラRDBのDBサーバーを作成する手順を説明します。
Terraformを利用してニフクラRDBのDBサーバーを作成する
ニフクラRDBのDBサーバーを作成するためにはnifcloud_db_instanceリソースを利用します。
nifcloud_db_instanceリソースは、指定する引数によって DBサーバー作成 、リードレプリカ作成 、ポイントインタイムリカバリー 、DBスナップショットからDBサーバーを作成 の4通りの方法でDBサーバーを作成することができます。
それぞれの作成方法について詳細に説明していきます。
DBサーバー作成
まずはシンプルにDBサーバーを作成する方法です。
設定ファイルは以下のようになります。
resource "nifcloud_db_instance" "example" {
identifier = "example"
instance_class = "db.large8"
db_name = "baz"
username = "for"
password = "bar"
engine = "MySQL"
engine_version = "5.7.15"
allocated_storage = 100
port = 3306
}
上記リソースをapplyすることでシングル構成のMySQL5.7.15のDBサーバーを一台作成できます。
リードレプリカ作成
リードレプリカを作成したい場合、Terraformでは以下のようにファイルを記述します。
resource "nifcloud_db_instance" "example-read" {
identifier = "example-read"
replicate_source_db = nifcloud_db_instance.example.id
instance_class = "db.large8"
}
resource "nifcloud_db_instance" "example" {
identifier = "example"
instance_class = "db.large8"
db_name = "baz"
username = "for"
password = "bar"
engine = "MySQL"
engine_version = "5.7.15"
allocated_storage = 100
port = 3306
backup_retention_period = 1
apply_immediately = true
}
identifier にリードレプリカの名前を、replicate_source_dbにリードレプリカ元のDBサーバーの名前を指定します。
ニフクラRDBではリードレプリカを作成する場合、元のDBサーバーは自動バックアップが有効である必要があるため、 backup_retention_periodを指定して有効化させています。
DBサーバーの設定を変更する場合、項目によってはmaintenance_windowで指定した時刻まで設定が反映されません。すぐに反映させたい場合にはapply_immediatelyにtrueを設定します。
また、リードレプリカ関連の引数でread_replica_identifierという引数もありますが、これは冗長化タイプ性能優先のDBサーバーを作成する時に待機系となるリードレプリカの名前を指定する引数になります、通常のリードレプリカ作成時はidentifierがリードレプリカの名前になるので注意してください。
ポイントインタイムリカバリー
万が一誤ってデータを消してしまった場合でも、DBサーバーの復元がTerraformから可能です。
復元にポイントインタイムリカバリーを使う場合、以下のようなファイルを記述します。
resource "nifcloud_db_instance" "example-restore" {
identifier = "example-restore"
instance_class = "db.large8"
port = 3306
restore_to_point_in_time {
source_db_instance_identifier = nifcloud_db_instance.example.id
use_latest_restorable_time = true
}
}
resource "nifcloud_db_instance" "example" {
identifier = "example"
instance_class = "db.large8"
db_name = "baz"
username = "for"
password = "bar"
engine = "MySQL"
engine_version = "5.7.15"
allocated_storage = 100
port = 3306
backup_retention_period = 1
apply_immediately = true
}
ポイントインタイムリカバリーで復元すると新規DBサーバーとして作成されます。
identifierには復元後のDBサーバーの名前を、restore_to_point_in_timeのsource_db_instance_identifierに元のDBサーバーの名前を指定します。
リストアに使用する時間はrestore_time にUTCで指定、または最新のリストアを利用する場合use_latest_restorable_timeをtrueにすることも可能です。
DBスナップショットからDBサーバーを作成
DBサーバーを復元する方法は、ポイントインタイムリカバリーの他にDBスナップショットから作成することも可能です。
Terraformでは以下のように記述します。
resource "nifcloud_db_instance" "example-restore-snapshot" {
identifier = "example-restore-snapshot"
snapshot_identifier = "rdb:example-2021-08-09-00-00"
instance_class = "db.large8"
port = 3306
}
自動バックアップで作成されたDBスナップショットの名前をsnapshot_identifier に指定することでDBスナップショットからDBサーバーを作成できます。
また、現在はTerraformからDBスナップショットを作成することはできませんがコントロールパネル(ニフクラの管理画面)やAPIにて手動で作成したDBスナップショットも同じように指定することができます。
まとめ
今回はTerraform NIFCLOUD Providerを利用してニフクラRDBを作成する方法を紹介しました。
DBサーバーを新規作成するだけでなく、リードレプリカの作成やリストアもTerraformで管理できるようになります。
是非ニフクラRDBを活用したシステム構築の自動化にお役立てください。