こんにちは、犬井です。
それでは前回に引き続きまして、Railsアプリ公開までにHerokuとかなり格闘したので情報を公開していきたいと思います。
本日はDBでMySQLを使っている人のために、DBをローカルにバックアップする方法をご紹介いたします。
目次
開発環境
使用サーバ:Heroku
使用DB:MySQL
ローカル開発環境:Windows10 64bit
MySQL Workbenchのダウンロード
以下のURLからソフトウェアをダウンロードします。
https://dev.mysql.com/downloads/workbench/
2020年8月8日時点では、このような画面が表示されます。
![](https://i0.wp.com/inuisou.com/wp-content/uploads/2020/08/20200808-1.png?resize=453%2C378&ssl=1)
ローカル環境のOSを選択し、「Go to Download Page」をクリックします。
すると、「MySQL Community Downloads」のページに行きます。
![](https://i0.wp.com/inuisou.com/wp-content/uploads/2020/08/20200808-2.png?resize=457%2C249&ssl=1)
ここでWebインストーラと通常のインストーラの好きな方をダウンロードしてください。
ダウンロードが終わったら、インストーラを起動してローカルPCにMySQL Workbenchをインストールしてください。
私は通常のインストーラの方でインストールしました。
接続設定
まず、接続設定を確認します。
あらかじめHerokuコマンドを使用できるようにしておいてください。
コンソールで以下のコマンドを実行します。
heroku config
すると、結果に「CLEARDB_DATABASE_URL」というものが含まれているので、そちらを確認します。
例えば、以下のような結果が出たとします。
CLEARDB_DATABASE_URL: mysql2://AAAAAAAAAAAAA:BBBBBBBBB@us-cdbr-east-02.cleardb.com/heroku_CCCCCCCCCCC?reconnect=true
この場合、「AAAAAAAAAAAAA」がユーザ名、「BBBBBBBBB」がパスワード、「us-cdbr-east-02.cleardb.com」が接続先のホスト名、「heroku_CCCCCCCCCCC」がDB名となります。
次に、MySQL Workbenchに確認した情報をもとに接続設定をします。
MySQL Workbenchを起動すると以下のような画面が表示されます。
![](https://i0.wp.com/inuisou.com/wp-content/uploads/2020/08/20200808-3.png?resize=593%2C447&ssl=1)
「MySQL Connections」の右側にある+のマークをクリックしてください。
![](https://i0.wp.com/inuisou.com/wp-content/uploads/2020/08/image.png?resize=393%2C247&ssl=1)
接続設定の画面がこのように現れます。
Connection Nameには分かりやすい名前を入力しておいてください。
先ほど確認した情報をもとに、Hostnameに「us-cdbr-east-02.cleardb.com」、Usernameに「AAAAAAAAAAAAA」を入力します。
次にPasswordのところにある、「Store in Vault ...」のボタンを押します。
![](https://i0.wp.com/inuisou.com/wp-content/uploads/2020/08/image-1.png?resize=207%2C98&ssl=1)
するとこのような画面が現れるので、Passwordのところに「BBBBBBBBB」を入力して、OKを押します。
![](https://i0.wp.com/inuisou.com/wp-content/uploads/2020/08/20200808-4.png?resize=393%2C247&ssl=1)
念のため、「Test Connection」を押して、接続できることを確認してください。
確認ができたら、一番右下のOKボタンをクリックしてください。
![](https://i0.wp.com/inuisou.com/wp-content/uploads/2020/08/image-2.png?resize=593%2C447&ssl=1)
こちらの画面の「MySQL Connections」の下に設定した接続設定が表示されるので、接続設定をクリックしてください。
![](https://i0.wp.com/inuisou.com/wp-content/uploads/2020/08/image-3.png?resize=593%2C447&ssl=1)
このような画面が開いたら、接続ができています。
![](https://i0.wp.com/inuisou.com/wp-content/uploads/2020/08/image-4.png?resize=593%2C447&ssl=1)
「Navigator」の下にある「Schemas」タブを押してみると、「heroku_CCCCCCCCCCC」というDBに接続されていることが分かります。
DBのバックアップ
![](https://i0.wp.com/inuisou.com/wp-content/uploads/2020/08/image-5.png?resize=593%2C447&ssl=1)
DBのバックアップをするには、「Navigator」の「DataExport」をクリックして、上の画面を出します。
![](https://i0.wp.com/inuisou.com/wp-content/uploads/2020/08/image-7.png?resize=593%2C447&ssl=1)
今回はとりあえずDBのデータを保存したいので、DB名のところにあるチェックボックスにチェックを入れます。
そして、保存したいディレクトリとファイル名をラジオボタンを押してから入力します。
画像のExport Optionsのラジオボタンをチェックすると、その右のテキストボックスが入力できるようになります。
![](https://i0.wp.com/inuisou.com/wp-content/uploads/2020/08/image-8.png?resize=225%2C77&ssl=1)
右下にある「Start Export」ボタンを押します。
これの表示が隠れてしまっていることがあるので、見つからない場合は「OutPut」とメインの画面の境界線を押して下に引っ張ってみてください。
![](https://i0.wp.com/inuisou.com/wp-content/uploads/2020/08/image-9.png?resize=176%2C157&ssl=1)
この画面ではとりあえず「Continue Anyway」をクリックします。
![](https://i0.wp.com/inuisou.com/wp-content/uploads/2020/08/image-10.png?resize=359%2C35&ssl=1)
「Export Progress」の画面が現れてエクスポートが始まります。
ログもチェックしておいてください。
終わったら、指定したフォルダにデータベースのダンプファイルができています。
DBのインポート
![](https://i0.wp.com/inuisou.com/wp-content/uploads/2020/08/image-6.png?resize=593%2C447&ssl=1)
DBをインポートするには、こちらの画面で「Data Import/Restore」をクリックします。
![](https://i0.wp.com/inuisou.com/wp-content/uploads/2020/08/image-11.png?resize=359%2C81&ssl=1)
「Inport Options」でインポートしたいダンプファイルを選択します。
![](https://i0.wp.com/inuisou.com/wp-content/uploads/2020/08/image-12.png?resize=172%2C119&ssl=1)
メイン画面の右下にある「Start Import」をクリックします。
こちらのボタンも隠れていることがあるので、見つからない場合は「Output」との境界線をクリックして引き下げてみてください。
まとめ
今回の記事では、MySQL WorkbenchでのDBのバックアップ方法を紹介いたしました。
- ローカル環境にMySQL Workbenchをインストール
- コマンドラインからMySQLの接続情報を確認
- MySQL Workbenchに接続設定をする
- MySQL Workbenchを起動してDBをエクスポートすればバックアップ完了
- DBを戻したいときはMySQL Workbenchの「Data Import/Restore」から!
という形でバックアップを活用できます。
私はHeroku環境上でDBの容量がいっぱいになってしまい、再利用していい領域もメモリに確保されたまま解放できずに困っていたときに、この方法を利用してDBの容量を空けました。
皆さんも、困ったときに是非やってみてください。
それでは、また次の記事でお会いしましょう。