データの削除失敗等、トラブルが発生してしまって、RDSのスナップショットから復元しないといけなくなった!時のLaravelの動きについて記載します。
結論から言うと、RDSのエンドポイントが変わってしまったなら、 .env
のデータベースホストを変更するだけです
.env
のDB_HOST
を新しいRDSのエンドポイントに変更する。php artisan cache:clear
とphp artisan config:cache
を実行する。
Laravelが動いているWebサーバーの再起動は不要です。
RDSのエンドポイントを変えたくないなー!と思った場合は、スナップショットから復元するときに一工夫します
エンドポイントはDB識別子が同じなら、次のエンドポイントも同じになります
その特性を利用します
- 既存のRDSの「DB識別子」を変える
- スナップショットを復元する設定のときのDB識別子を、もともとのDB識別子を登録する
これで、 .env
を変更する必要がなくなります。
ただ、本当に接続先が切り替わってるの?ってなって、確認しずらいときもあると思いますので、チームと相談してどちらの方法で対応するのがいいか決めてから、作業するのがいいかなと思いました。私の個人的な意見としましては、 .env
ファイルの書き換え対象になるWebサーバーの数が少ないようでしたら、エンドポイントが変わったほうが切り替えがしっかり確認できて、再稼働が安全かなと思います。
スナップショットから復元したときはRDSは新しいインスタンスができますので、 .env
を切り替えてデータベースの向き先を切り替えるだけで済むので、リストア作業が非常に安全で安心感がありますね(^^)/
万が一リストアに失敗しても、もとのインスタンスに戻せるのも素晴らしいです!