🐘

GUIを使ってHeroku PostgresのデータをPlanetScale(MySQL)に移行する

2022/09/27に公開

Herokuの無料枠が近々なくなってしまうということで、個人開発のDBとして使用していたHeroku PostgresのデータをPlanetScale(MySQL)に移行しました。筆者にとって初めてのDB移行だったので、その手順を備忘録として記していこうと思います。
おそらくかなり雑なやり方かと思いますが、これは個人開発であるという前提でよろしくお願いいたします。
ちなみになぜPostgresではないPlanetScaleかというと、タダかつ無料枠が大きいからです。(よいサービスにはお金を払うべきだとは思いつつも、せっかくだしDB移行してみたいという思いが勝ちました)

環境

Mac OS

使用ツール

まずはこれらをダウンロードしましょう。

pdAdminでHeroku Postgresにアクセス

  1. Heroku上でPostgresサーバーは動いているアプリケーションを選択し、Resourcesをクリックして、そこからAdd-ons下のHeroku Postgresをクリック

  2. Settingsをクリックして、View Credentialsをクリック

  3. この情報を使ってpgAdminからアクセスします

  4. pdAdminを開いてRegisterからServerをクリック

  5. 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のデータをエクスポート

  1. エクスポートしたいTableを右クリックし、Import/Export Dataをクリック
  2. csvとしてエクスポートする

この作業をテーブルの数だけ繰り返し、全てのテーブルをcsvとしてエクスポートする。

Sequal AceでPlanetScaleにアクセス

PlanetScaleにマイグレーションは済んでいることが前提です

  1. PlanetScaleのダッシュボードからConnectをクリック
  2. この情報を使ってSequal Aceからアクセスします(パスワードはNew Passwordから生成)
  3. Sequal Aceを開き、必要な情報を入力し、接続

この時、2での情報を以下のように入力

  • Host → host
  • Username → username
  • Password → password
  • Database → database

PlanetScaleにデータをインポート

  1. 挿入先テーブルを選択した状態でFile→Importをクリック
  2. そのテーブルに挿入したいデータを含むcsvファイルを選択
  3. この時csvのデータがターゲットフィールドに正しくマッピングされていることを確認し、importをクリック

1~3をテーブルの数分繰り返えせば、無事データ移行完了🎉

以上になります。
もし他にいい方法があれば、コメントで教えていただきたいです!

Discussion