😺

[Heroku ClearDB] max_questionsの制限を受けないプランへ移行したときの備忘録

2023/10/09に公開

1.はじめに

現在運営しているサイトで、ClearDBの共有データベース(punchプラン)を使用していたのですが、アクセスが増えたため、max_questionsの制限がない専用データベースプランへ切り替える必要がありました。

その時の備忘録が、ClearDBのプラン変更時の注意点や手順の一助となれば幸いです。

herokuのClearDBチュートリアルより

ClearDB共有MySQLサービスプランとは異なり、ClearDB G5専用インフラストラクチャでは、"max_questions"(または1時間あたりのクエリー数)の制限は適用されません。
ClearDB 専用インフラストラクチャは、最新の ClearDB Generation 5 (G5) プラットフォームを活用し、30 種類以上の高度なテレメトリへのアクセスを提供します。

2.移行前の状況

  • ClearDBのpunchプランを使用
  • 頻繁にmax_questionsの制限による1時間のクエリ数上限(18000)に到達
  • 結果、頻繁にサイトがダウン

max_questions: ClearDBで設定されている1時間あたりに実行可能なクエリ数を制限する設定

3.移行手順

1.プランの変更

punchからstandard25に変更。

heroku addons:upgrade cleardb:standard-25 --app [アプリ名]

必要であればメンテナンスモードにしておく。(接続情報が変わるのでアクセスできなくなる)
heroku maintenance:on --app [アプリ名]

ClearDBプランの詳細

2.新しいDBのセットアップ

(a).ClearDBのダッシュボードを開きます

heroku addons:open cleardb --app [アプリ名]

Dev & Production Editionタブからdatastoreのリンクをクリックしdatabasesタブへ移動して新しくデータベースを作成

(b).作成したデータベースのホストと環境の情報を取得

heroku config --app [アプリ名] | grep CLEARDB

※取得できない場合はアドオン名を確認して指定してください
heroku addons --app [アプリ名]

(c).herokuの環境変数にセット

heroku config:set DATABASE_URL='mysql://username:password@hostname/database_name?reconnect=true'

※Ruby on Railsとmysql2 gemを使用している場合は、DATABASE_URLのmysql://スキームをmysql2://に変更する必要があります。

3.アプリケーションの再起動

heroku restart --app [アプリ名]

4.接続確認

heroku config --app [アプリ名] | grep CLEARDBで確認した情報をもとにmysqlに接続

mysql -u username -p -h hostname -D database_name

私はrailsアプリだったのでコンソールを起動して確認

heroku run rails c --app [アプリ名]

4.まとめ

手順は基本的にherokuのClearDB MySQLのチュートリアルを参考にしました。

初め、アドオンのプランだけ変更すれば済むと思い管理画面からプラン変更だけしたのですが、共有dbから専用dbへの変更だったためdb接続情報が変わってしまいサイトにアクセスできなくなり焦りました。
単純なアップグレードですが、同じくアップグレードを考えている方は、事前にデータベースのバックアップを取り、メンテナンスモードを活用することを強く推奨します。

5.参考リンク

Discussion