この記事は、ニフクラブログで2021-08-30に公開された記事を移転したものです。
こんにちは、ニフクラエンジニアの b:id:nifcloud-developers です。
今回は、Terraform NIFCLOUD Providerを利用してニフクラRDBのDBサーバーを作成する手順を説明します。
Terraform NIFCLOUD Providerの基本的な利用方法などは以前の記事で詳しく紹介しているので、併せてご参照ください。
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を活用したシステム構築の自動化にお役立てください。