Closed4

PlanetScaleからTiDB Serverlessへ乗り換えてみる

esakaesaka

NextJSのチュートリアルをやっており、その中でPlanetScaleを使っていた。
が、周知の通り2023 4/8からPlanetScale有料化となるので、とりあえずDB移行をばと

ザっと調べた感じ + 前から興味あったTiDBがServerlessで従量課金休めの提供してるっぽいので試してみようかと思った

その作業ログ

esakaesaka

料金とか

https://pingcap.co.jp/tidb-cloud-pricing/

https://pingcap.co.jp/tidb-cloud-serverless-pricing-details/

TiDB Severlessは5クラスターまで無料で作成可能

無料のクォータ
各組織で作成された5つのクラスタを無料で使用することができます。6つ目のクラスタを作成する場合は、クレジットカードを追加し、使用限度額を設定する必要があります。6つ目のクラスタを作成する前に、既に作成したクラスタをいくつか削除した場合、新しいクラスタは無料枠のクラスタとカウントされ無料となります。
上記の条件を満たしたTiDB Serverlessのクラスタに対して、毎月フリークォータが発行されます。無料枠を利用することで、お客様は1ヶ月間、行ベースのデータ5GiBと列ベースのデータ5GiBを同時に保存し、5,000万RUを消費することができます。これらのクォータを自由に割り当てて、同等の運用を実現することも可能です。

クラスタ毎に5GiBストレージと5000万RU = 合計1アカウントあたり25GiBストレージと25,000万RU無料で使えるってことでよいのかな?

クラスタが使用限度額を設定していない場合、デフォルトでは、このクラスタの読み込みおよび書き込み操作は100RU/秒にスロットルされます。行ベースのストレージが5GiBに達するか、列ベースのストレージが5GiBに達するか、またはクラスタの無料クォータが月内に使い果たされるかのいずれかで、クラスタは自動的に10RU/秒にスロットルされます。この制限は、お客様が0を超える使用限度額を設定するか、翌月まで維持されます。

RU超えたりしても、完全に使えなくなるわけではなく低速では使えそう


個人開発アプリ規模だと難しいかもだけど、チュートリアルアプリとかだと十分かも?

esakaesaka

PrismaとNextJSでアクセスする

前提として、既にprisma initしてプロジェクトセットアップしており、別のDBに登録用のschemaとかあるとするよ


TiDB Cloudでアクセス用のコネクションストリング確認する

Cluserを選択して

右上のConnectを選択

Connect WithでPrismaを選んで、Generate Passwordを実行(↑の画像はそれ実行済み)
生成されたConnection String = mysql://...をコピーしておく

NextJSの環境変数変更

自分のプロジェクトでは、.envDATABASE_URLという環境変数で設定している
こちらを前ステップでコピーしたConnection Stringに置き換える

schema情報などをpush

マイグレーションするほど、まだDBを作りこんでなかったのでシンプルにdb pushする

$ npx prisma db push

確認

$ npx prisma studio

で問題なくテーブルとかできてるか確認


これで、その後アプリでつなげても問題なく動いた

このスクラップは1ヶ月前にクローズされました