はじめに
####前提
・Railsを使用してアプリケーションを開発
・Capistranoでの自動デプロイを実装している
・AWSのEC2にてサーバーを構築している
・RDSでMySQLを使用している
背景
私は開発環境では、rails db:migrate:resetにていつもデータベースを作り直していましたが、本番環境ではどのようにすればいいのかという疑問から実装しました。
本番環境のデータベースをリセットする
まずはターミナルを用いてEC2で自分のアプリケーションフォルダの階層まで進む。
Capistranoでの実装をしているのでミスをしないように基本的にはcurrentディレクトリで作業するようにする。
[ec2-user@ip-222-22-2-222 アプリ名]cd current
RAILS_ENV=production DISABLE_DATABASE_ENVIRONMENT_CHECK=1 bundle exec rails db:drop
これでデータベースが消去することができました。
###データベース再度作成する
今回はRDSにMySQLを導入している前提でお話していきます。
まず引き続きターミナルは同じディレクトリでmysqlに接続します。
mysql -u (マスタユーザ名) -p -h (エンドポイント)
「-u」はユーザ名、「-p」はパスワードの入力、「-h」は接続先の情報を表すオプションです。
なお、「エンドポイント」は、RDSメニューで確認し、入力してください。
「パスワード」は、「マスターパスワード情報」で設定したパスワードを入力します。
mysql -u root -p -h rds-mysql-server.xxx.ap-northeast-1.rds.amazonaws.com
このコマンドを打つとpasswordの入力が求められるので入力すると無事mysqlに接続が完了しました。
削除したアプリケーション名と同じ名前をつけデータベースを再度作成します。
mysql> create database アプリケーション名;
再度本番環境でmigrateを実行します。
bundle exec rails db:migrate RAILS_ENV=production
これでデータベースのリセットは終了です。
あとは本番環境でcapistranoのコマンドを叩いて終了です
bundle exec cap production deploy
お読みいただきありがとうございました