わたねこコーリング

野良プログラマ発、日々のアウトプット

RDS で MySQL の EVENT 機能を使う

AWS 上で稼働している某サービスで、MySQL データベースを EC2 インスタンス上での稼働から RDS に移行することになったんですが、その作業の過程で EVENT 機能なるものが MySQL 5.1 以降で用意されていることを知りました。こんな便利なモノがあるのを知らずにもう何年も定期処理を cron で回してたのか… と恥じ入りつつ、早速使ってみることに。ところが、RDS 版 MySQL (現在、ver.5.5)はデフォルト設定で、EVENT 用のスケジューラプロセスが稼働してない模様。これを有効にするには以下の手順で行います。

  1. AWS コンソールの RDS ページを開いて、左サイドメニューから「DB Parameter Groups」をクリック。
  2. デフォルト状態では「default.mysql5.5」ってのがひとつあるだけですが、これに直接手を入れるのもアレなのでカスタマイズ用の設定を新規追加してみます。リストの上のボタン「Create DB Parameter Group」をクリックして適宜名前を付けて保存します。その際、「DB Parameter Group Family:」で「mysql5.5」を選べばデフォルト設定と同一内容の設定となります。
  3. 新規追加したパラメタグループを選択 → リストの上のボタン「Edit Parameters」をクリック → パラメタ一覧画面に移動。
  4. パラメタ一覧表から「event_scheduler」という項目を見つけて値が空欄になっているのを確認したら、一覧表上部のボタン「Edit Parameters」をクリックして、編集画面に移動。
  5. 「event_scheduler」の値を「ON」にして、ボタン「Save Changes」をポチッと。

あとは、上記で編集したパラメタグループを当該のインスタンスに適用するだけ。新規インスタンスなら生成ダイアログの「Additional Configuration」のところで「Parameter Group:」で選択してやります。既存インスタンスなら、Modify でこれを選択しなおしてインスタンス再起動。

パラメータグループの編集→保存は、インスタンスの再起動とかなしに反映されるみたいです。即時って程でもないみたいですが、遅い場合でも数分で稼働中インスタンスに反映されました。