Restarting databases is never pleasant but sometimes there is no other option. When restarting the database clients are loosing their connection and need to reconnect. Rails in our case doesn’t do that automatically. If you happen to use PostgreSQL with PGBouncer like us1 there is a way to do that with as little interruption as possible.
Pause and Resume
I recently stumbled over PGBouncers
PAUSE will make PGBouncer to wait for every query to finish and then close its own connections to the database.
RESUME will reconnect to the database and run the queries issued while being paused. This is transparent for the client, they don’t need to reconnect. You can
PAUSE, restart, and
RESUME your database and nobody will notice!
This is just a little thing but it made my life better. Maybe it helps you too.
- Costs of a PostgreSQL connection
- PGBouncer: Usage