RDS for PostgreSQLを作成する過程で気になったことや今後気を付けておくべきことなどを調べてまとめました。誰かの参考になれば幸いです。
※Auroraじゃないよー
◆はじめに作成したDBの名前
作成画面でDB名を入力すると思いますが、この名前は作成以降、コンソール上にずっと表記されます(設定タブで確認)。新しくDB作成したり名前変更したりしても、コンソール上の表記は変わりませんのでご注意を。
※いずれAWSがこの辺、改善してくれるでしょう。
◆パラメータグループは作成しよう
パラメータグループはデフォルトのままだと変更後、問題が起きた時にデフォルト値を見直せなくなるので、各RDSインスタンス用に作成しておきましょう。
ちなみによく変更するパラメータは以下のものがあるかと思います。
rds.log_retention_period ログの保持期間
log_statement ログの種類
client_encoding エンコーディング
lc_messages ロケール
lc_monetary ロケール
lc_numeric ロケール
lc_time ロケール
timezone タイムゾーン
なお、autovacuumはデフォルトで有効となっています。
通常のPostgreSQLは20%(autovacuum_analyze_scale_factor)ですが、RDSは5%で設定されていました。PostgreSQL11で確認済みです。
ちなみにAWSのブログ記事でautovacuumについて書いてあるものがあるので、あまり理解できていない場合は、こちらを参考にするのが良いと思います。
https://aws.amazon.com/jp/blogs/news/a-case-study-of-tuning-autovacuum-in-amazon-rds-for-postgresql/
パラメータグループの適用タイプ
static 再起動後、変更される
dynamic 再起動せずに変更が可能
この違い、理解しましょう。
RDSの証明書について
RDSの証明書である「rds-ca-20XX」はデフォルトでついてきます。必要ない場合でもこれは削除したりはできないので、これは基本放置プレイです。なお、更新を促されても、SSL/TLSを利用しない場合は更新の必要はありません(下記引用がエビデンス)。
SSL/TLS を使用していません。CA 証明書をローテーションする必要はありますか?
SSL/TLSを使用してないことが100%確実である場合は、2020年3月5日の期限までにCA証明書を更新する必要はありません。(引用元:Amazon RDS のお客様: 2020 年 3 月 5 日までに SSL/TLS 証明書を更新してください)
ちなみにRDSの 証明書は5 年で有効期限が切れます。
データをロードする際のダウンタイム
ベストプラクティスでは「PostgreSQL DB インスタンスにデータをロードする」際に、様々な設定の変更を行います。その際、「DB インスタンスのバックアップを無効にする」のみダウンタイムが発生します。
その点、考慮してデータをロードしてください。
ダウンタイムとパラメータの推奨値については以下のドキュメントから確認できます。
【参考】
パラメータの推奨値
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/PostgreSQL.Procedural.Importing.html
※ドキュメントには「checkpoint_segments」を変更するようにと記載ありますが、PostgreSQL9.5以降、このパラメータは存在しないので設定不要
ログのエクスポート
RDSのログをCloudWatch Logsにエクスポートできるので、CloudWatchアラームなどを使って監視を行いたい場合は、有効にしておきましょう。
ログを長期に保存したい場合は、Kinesis Firehoseを利用してS3に保管しましょう。この際、CloudWatch Logsサブスクリプションを使って登録を行うので、コンソールではなくAWS CLIで設定を行います(ちょっとめんどう)。
そしてS3に保存する場合、CloudWatch Logsのロググループの保存期間は、必要に応じて短くしましょう。1週間ぐらいでいいと思います。
ざっくりな理解には動画がいい
AWS Summitの動画とか、RDSの理解にとても役に立つので、使い慣れていない人はこういうのを見て、先に概要つかむのがおすすめです。
以上、参考にしてみてください!