master_slave_adapterプラグインを使用して、しばらくの間 MySQL マスター/スレーブ設定で実行されている Rails アプリケーションがあります。最近、長時間実行されるタスクのバックグラウンド処理が必要になりました。そこで、DelayedJobに落ち着きました。
DelayedJob のテーブル/モデルは、同じマスター/スレーブ アダプターを使用します。また、テーブルをポーリングすることにより、スレーブ接続を維持します。しかし、マスター接続は長時間アイドル状態のままで、一晩で終了し、次に誰かがジョブをアクティブ化すると、次のことが起こります。
Mysql::Error: MySQL server has gone away: UPDATE `delayed_jobs` SET locked_by = null, locked_at = null WHERE (locked_by = 'delayed_job host:[snip] pid:20481')
最初の接続の初期化のように、再接続後に接続文字セットを設定しないと言われているため、 でreconnect
オプションを使用することについて悪いことを聞いたことがあります。database.yml
これを機能させる適切な方法は何ですか?