PlanetScale入門
PlanetScaleとは
公式サイトにはこう書かれています
PlanetScale is the world’s most advanced serverless MySQL platform
Google翻訳:
PlanetScale は、世界で最も先進的なサーバーレス MySQL プラットフォームです
いきなりですが 使ってみての感想
私は PlanetScale を使ってみてこのような体験をすることができました
- 開発ブランチから本番ブランチへのスキーマ変更が簡単(デプロイが簡単)
- デプロイの差分が GitHub と同じような見え方で直感的でわかりやすい
- Amazon RDS と比較してWebコンソールの使いやすい
- 手動バックアップやスケジュールバックアップの設定が簡単
- DBへの接続方法が言語やツールごとに説明されている点や、Webコンソールからも接続でき親切さを感じた
特徴
- サーバーレスである
- 水平スケーリングできる
- Vites が基盤であり MySQL 互換である
- スキーマをブランチ管理できる
- スキーマの差分がひと目で分かる など...
公式で Amazon RDS との比較 の記事もありました
料金プラン
料金プランは Hobby
Scaler
Team
の3つあります
今回利用した Hobby
は下記のようになっています
ストレージ: 5GB
読み込み/月: 10億回
書き込み/月: 1,000万回
本番ブランチ: 1つ
開発ブランチ: 1つ
同時接続数: 1,000接続
Query insights: 24時間
自動バックアップ: 毎日
Scaler
や Team
などの有料プランにすると各制限の上限が増えるほか シングルサインオン
や 監査ログ
の機能が利用できるようです
アカウントの作成
https://auth.planetscale.com/sign-up から SignUp できます
GitHub でも作成できるようですが、今回は Email で作成しました
PlanetScaleの特徴
メールアドレス認証を完了してログインすると PlanetScale の特徴が紹介されます。
Serverless databases
Google翻訳:
MySQL の信頼性とオープン ソースの Vitess のスケールを備えたフル マネージド データベースをわずか 10 秒でデプロイします。 組み込みの接続プールにより、データベースの接続制限に達することはありません。
PlanetScale’s proprietary Data Branching™ feature
Google翻訳:
データベースをコードのように扱います。 本番データベースを即座に分岐して、スキーマの変更をテストするためのステージング環境を作成します。
Non-blocking schema changes
Google翻訳:
PlanetScale のノンブロッキング スキーマ変更機能により、スキーマ変更を本番環境に安全にデプロイできます。 CI/CD プロセスの一部としてスキーマ管理を簡単に自動化できます。
Deploy requests
Google翻訳:
デプロイ リクエストを使用すると、スキーマの変更を提案し、チームからフィードバックを得ることができます。 行ごとのスキーマ差分により、変更を簡単に確認できます。
デプロイ リクエストと GitHub プル リクエストを組み合わせて、コードとスキーマの変更を並行して確認します。
Deploying a schema change
Google翻訳:
スキーマの変更が承認されると、デプロイ キューに追加されます。 PlanetScale は展開のタイムラインを提供し、キューに入れられたスキーマの変更が競合しないようにします。
Insights and monitoring
Google翻訳:
データベースの読み取りと書き込みを追跡するグラフを使用して、本番トラフィックを把握します。 クエリ インサイト機能を使用して、スロー クエリを特定して最適化します。
データベースを作成し、PlanetScale ワークフローを開始します。
DBの作成
Create your first database
をクリック
DB名
と リージョン
を設定して Create database
をクリック
今回は sample_database という名前で Tokyoリージョン に作成してみました
DBに接続
接続情報の確認
まずは接続情報を確認します
DB 作成が完了すると DB の Overview
タブ に遷移します
Connect
をクリックして接続情報を確認します
パスワードは初回のみしか表示されません
パスワードを忘れてしまった場合は New password
から新しく発行することができます
接続方法は丁寧にいろいろな方法が紹介されています
今回は TablePlus というGUIツール(Windowsの場合はMySQL Workbenchなど)を利用して接続してみたいと思います
接続方法で General
を選択して下記の接続情報を確認できます
ここでは password は表示されません、先程の初回表示か New password
で確認できます
- database
- username
- host
- password
TablePlusで接続
TablePlus を開いて Cerate a new connection...
をクリック
MySQL
を選択して Create
をクリック
下記を設定して Connect
をクリック
- Name
- Host
- User
- Password
- Database
テーブル作成
試しに下記のようなテーブルを作成してみます
CREATE TABLE `users` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(255),
`email` varchar(255),
PRIMARY KEY (`id`)
) ENGINE InnoDB,
CHARSET utf8mb4,
COLLATE utf8mb4_0900_ai_ci;
PlanetScale のWebコンソールからもテーブルの数やスキーマを確認することができます
Overview
タブで確認できます
Branches
> ブランチを選択
> Console
タブの CLI で確認できます
Branches
> ブランチを選択
> Schema
タブで確認できます
ブランチ
ブランチの作成
PlanetScale の特徴であるブランチの作成をしてみたいと思います
Overview
タブから New branch
をクリック
ブランチ名
、ベースブランチ
、リージョン
を設定して Create branch
をクリック
ブランチが作成されると、作成したブランチの Overview
画面が表示されます
ブランチは矢印の場所で表示切り替えできます
Connection
から作成したブランチの接続情報を確認して TablePlus で接続してみるとブランチを作成した時点の Base branch
のスキーマが反映されていることが確認できました
Branches
タブでは mainブランチ
から先ほど作成した productionブランチ
が作成されていることがわかります
本番ブランチの設定
先ほど作成せた production
ブランチを本番用のブランチに設定したいと思います
Branches
> ブランチを選択
> Promote a branch to production
をクリック
本番ブランチに設定することで下記のようなメリットがあります
Google翻訳:
- スキーマの直接変更から保護
- 高可用性
- 自動スケジュール バックアップ
デプロイ
開発用ブランチ(main)
で行ったスキーマなどの変更を 本番ブランチ(production)
にデプロイしてみたいと思います
開発ブランチにカラムを追加してみる
まずは開発ブランチの DB でスキーマを変更したいと思います
ここではmainブランチを開発ブランチとしています
TablePlus などで開発ブランチのDBに接続して age
カラムを追加します
Schema
タブでも age
カラムが追加されていることが確認できました
デプロイリクエスト作成
開発ブランチ(main)
を 本番ブランチ(production)
へデプロイするためのデプロイリクエストを作成してみます
Overview
> Deploy to
で 本番ブランチ(production)
を選択 > Create deploy request
をクリック
デプロイリクエストの作成が完了するとサマリーを確認できる画面に遷移されます
ここでは変更のSQLなどを確認することができます
ageカラム
を追加していることが確認できます
デプロイ実行
Deploy request
タブ > 先程のデプロイリクエスト
を選択 > Deploy changes
をクリックしてデプロイが開始されます
デプロイが成功するとステータスが Deployed
になります
実際に 本番ブランチ(production)
のスキーマを確認してみると ageカラム
が追加されていることが確認できます
スキーマの差分を確認
スキーマの差分を確認することもできます
Deploy request
タブ > 先程のデプロイリクエスト
を選択 > Schema chenges
タブをクリック
ageカラム
を追加したことがひと目で確認できます
GitHub と同じように見れるのでとてもわかりやすいです
モニタリング
Insights
タブでは Query latency や Queries を24時間分確認できます
料金プランをアップグレードすることでより多くの履歴を表示することができます
バックアップ
バックアップには 即時バックアップが取れる 手動バックアップ
と、スケジュールでバックアップを取得する スケジュールバックアップ
があります
手動バックアップ
Backups
タブ > 対象のブランチ(Production branches)
タブを選択 > Create new backup
をクリック
対象のブランチ
と バックアップ名
と 保存期間
を設定できます
バックアップが作成されるとバックアップ一覧で確認することができます
バックアップの詳細ページでは リストア
や 削除
ができます
スケジュールバックアップ
ブランチを作成した時点でデフォルトで毎日のバックアップが設定されていますが、試しに毎週のスケジュールを作成してみたいと思います
Backups
タブ > 対象のブランチ(Production branches)
タブを選択 > Add new schedule
をクリック
hours
day
weeks
months
が選択できます
weeks
を選択すると曜日を選択する項目が表示されるので適当な曜日を設定して時刻を設定します
ここでは保存期間を1週間にしてみました
各項目を設定したら Save schedul
をクリック
スケジュールが作成されてことが確認できます
参考
Discussion