GUIを使ってHeroku PostgresのデータをPlanetScale(MySQL)に移行する
Herokuの無料枠が近々なくなってしまうということで、個人開発のDBとして使用していたHeroku PostgresのデータをPlanetScale(MySQL)に移行しました。筆者にとって初めてのDB移行だったので、その手順を備忘録として記していこうと思います。
おそらくかなり雑なやり方かと思いますが、これは個人開発であるという前提でよろしくお願いいたします。
ちなみになぜPostgresではないPlanetScaleかというと、タダかつ無料枠が大きいからです。(よいサービスにはお金を払うべきだとは思いつつも、せっかくだしDB移行してみたいという思いが勝ちました)
環境
Mac OS
使用ツール
- pgAdmin 4(PostgresQLクライアント)
- Sequal Ace(MySQLクライアント)
まずはこれらをダウンロードしましょう。
pdAdminでHeroku Postgresにアクセス
-
Heroku上でPostgresサーバーは動いているアプリケーションを選択し、Resourcesをクリックして、そこからAdd-ons下のHeroku Postgresをクリック
-
Settingsをクリックして、View Credentialsをクリック
-
この情報を使ってpgAdminからアクセスします
-
pdAdminを開いてRegisterからServerをクリック
-
Connectionタブから必要な情報を入力
この時、3での情報を以下のように入力
- Host name/address → Host
- Port → Port
- Maintainance Database → Database
- Username → User
- Password → Password
6.AdvancedタブのDB restrictionにデータベース名(3の「Database」)を入力し、Saveをクリック。するとHeroku Postgresにアクセスできる。
pdAdminからHeroku Postgresのデータをエクスポート
- エクスポートしたいTableを右クリックし、Import/Export Dataをクリック
- csvとしてエクスポートする
この作業をテーブルの数だけ繰り返し、全てのテーブルをcsvとしてエクスポートする。
Sequal AceでPlanetScaleにアクセス
PlanetScaleにマイグレーションは済んでいることが前提です
- PlanetScaleのダッシュボードからConnectをクリック
- この情報を使ってSequal Aceからアクセスします(パスワードはNew Passwordから生成)
- Sequal Aceを開き、必要な情報を入力し、接続
この時、2での情報を以下のように入力
- Host → host
- Username → username
- Password → password
- Database → database
PlanetScaleにデータをインポート
- 挿入先テーブルを選択した状態でFile→Importをクリック
- そのテーブルに挿入したいデータを含むcsvファイルを選択
- この時csvのデータがターゲットフィールドに正しくマッピングされていることを確認し、importをクリック
1~3をテーブルの数分繰り返えせば、無事データ移行完了🎉
以上になります。
もし他にいい方法があれば、コメントで教えていただきたいです!
Discussion