Как перестать беспокоиться и спать спокойно (events.yandex.ru) 20 ноября 2015
Видеозапись доклада Владимира Бородина о бэкапах в PostgreSQL.
- Проблема частичной записи страницы (partial page write): в результате какой-либо ошибки или падения системы на диск может быть сброшена только часть страницы с данными. В результате страница будет содержать смесь старых и новых данных. Для защиты от этого постгрес сохраняет в WAL каждую измененную страницу с данными полностью (хотя это и увеличивает размер лога). Настраивается через переменную
full_page_writes
(по умолчаниюon
). - Бэкапы могут быть поврежденными. Нужно постоянно проверять, что из бэкапа можно восстановиться. Для этого можно использовать
pg_dump
, он пройдет по всем строкам и свалится с ошибкой, если обнаружит повреждение. - Восстановление нужно заранее автоматизировать. Скрипт восстановления может пригодиться всего один раз, но это будет такая ситуация (ночь, нервы, спешка), что наличие скрипта окупит себя.
- Для бэкапов и восстановления в Яндексе используют barman.