💾
PlanetScale から Fly.io の Postgres に移行した
その時のPR
要約
- アプリケーションのコードを書き換えた
-
pscale database dump
でデータexport -
flyctl proxy
でローカルからデータimport
なぜ?
PlanetScaleの無料枠が廃止されるとのことで、趣味で動かしているDiscord BOTが依存していたため別のDBを探すことに。Discord BOT自体がFly.ioで動いていたのでDBもそちらに載せることに。
手順メモ
後から記事書いているので途中うろ覚えかも、、、2hくらいで終わりました。
- アプリケーションのコード書き換え
@planetscale/databaseを使ってクエリ発行していたので、postgresに書き換え。コード量も多くないしMySQLに依存しているSQLがなかったので簡単に書き換え完了。 - Fly.ioにPostgresのインスタンスを作成
https://fly.io/docs/postgres/ を見ながら作業。漢のサーバー1台構成。 - テーブルを作成
atlasで管理していたので、atlas schema apply
でエラー直しつつ実行。- 直したエラー
- mediumint -> integer postgresではmediumintは使えない
- integer.unsignedを削除 postgresでは使えない
- schema.charset,collateを削除 postgresでは使えない。今のテーブル状況で気にする必要がなかったので代案は探していない。
- もともと
public
,repmgr
のスキーマがあるのでこれは残しておくように。またメインのテーブルはpublic
スキーマに作成するように。
- 直したエラー
- アプリケーションをメンテナンス中に
データ整合性を取るため。無停止にしなくていいのは楽ですね。 -
pscale database dump
でデータexport - exportされたデータをpostgresで使えるように修正
テーブル名・列名がバッククォートで、文字列値がダブルクォーテーションで囲われているのでそれぞれ空文字・シングルクォーテーションに置換 - 修正したデータをpostgresに流し込み
Discussion