Убить Базу Билла

November 14, 2016

У нас каждую ночь в спец енвайроменте поднимаются все продакшены базы из бэкапов. Это приследует несколько целей: проверить, что в принципе из бэкапов можно восстановится, а так же аналитики делают некоторые ad hoc запросы без доступа на продакшен и привлечения программистов.

Для экономии места сохраняются две или три самых свежих базы, а остальные удаляются. Стандартный dropdb не удалит базу, если к ней остались коннекшены, в интернетах советуют рестартить постгрес целиком, но это немного овер даже для тестовой базы. Решение, которое мне больше всего нравится, выглядит так:

psql $db -c'SELECT pg_terminate_backend(pid) FROM pg_stat_activity
            WHERE pid <> pg_backend_pid();'
dropdb $db

Вроде работает хорошо.

comments powered by Disqus