INODEVLOGスマートフォン用の表示で見るINODEVLOGWEBアプリ開発・事業開発・ビジネスモデル・読書の情報などをお届けしています。プログラミングBookmarkShareTweetPocket今日は先日遭遇してしまった「Herokuで過去のマイグレーションファイルを誤って反映されとる...orz」という状況での修正反映&データ復旧の手順をまとめてみます。ま、普通に開発してればあまりないシチュエーションですが...(・_・)技術的に難しくはないもののHeroku独自の仕様もあったりしますので、もしもやらかしちゃった方がいたら参考にしてみて下さい。dyno)の再起動バックアップからリストアするHerokuのメンテナンスモード機能をOFFにする動作確認まとめそもそもやりたいこと通常マイグレーションファイルを追加して対応するが、どうしても反映済のバグってる過去のマイグレーションファイルの内容を変更したい。そこで今回は現在のDBのデータを退避させて、修正後に戻す作業を行う。task等でデータを整形してから対応するか、マイグレーションファイルにデフォルト値を記載する等の対応が必要になるでしょう...。※下記手順をローカル開発環境、またはStaging(テスト環境)で実施してからProduction(本番環境)で行ったほうが良いでしょう。Herokuのメンテナンスモード機能をONにするユーザ操作によるDB更新を抑止します。DBの矛盾が発生しないようにHerokuの機能でメンテナンスモードでユーザーのアクセスを制限しましょう。sushiで出来るようです。Centerバックアップを作成する無料でも手動バックアップの作成&リストアは可能です。『利用している』DBのアドオンの詳細ページに行きましょう。[アプリ名]で出来ます。Centerなお、実施前に取得したバックアップからの復元方法などを公式で軽く見ておくと良いでしょう。不安な方や既に運用しているサービスに関しては復旧テストもしておいても良いでしょう。タブのページで、それぞれDB名(DATABASE_URL)・アプリ名・Backupバージョン名が確認できるので控えておきましょう。DBを削除するDBの権限の問題からHerokuではRailsからのDROP操作が出来ません。そこで、pgのアドオン用の命令で直接DBを削除してしまいます。sushiマイグレーションの状態確認でDBとスキーマが空であることを確認しましょう。すれば、マイグレーションファイルを全部実行してスキーマファイルを作成しなおせます。修正したマイグレーションファイルをデプロイするローカルからHerokuへデプロイするという運用の方はpushしてデプロイしましょう。前の誤った情報を含むマイグレーションファイルの構成で反映される可能性があります。dyno)の再起動DB構成が変わっているので、念の為アプリを再起動しておいたほうが良いと思われる。sushiバックアップからリストアするメンテナンスモードにしてから取得したバックアップデータをリストアしましょう。CenterHerokuのメンテナンスモード機能をOFFにするこれを忘れてたらずっとメンテナンスモードなので使えるように戻しましょう。対象のアプリのDBでリストアされて以前と同様に使えることを確認しましょう。リストアしたデータにアクセス出来ていればOKです!以上!まとめ普通に開発していればあまりないと思いますが、誤ったmigrationファイルをコミットしちゃった!とか、あろうことかHerokuにデプロイまでしちゃった!という時の復旧方法でした。はてなブログPro小さい会社の代表をしているコードも書いてるWebエンジニアっぽい人。RubyやVueを書いてることが多いです。最近はElixirに興味津々。Railsなどの技術ネタ・事業アイディア・ビジネスモデルなどの話が主食です。日々の業務などでお役立ちできそうな地味な情報をお届け致します。Bootstrap検索スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。