Обновить

Бэкап был, восстановить было нечего: как pg_dump молча собирал битые дампы из‑за row‑level security

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели5.5K
Всего голосов 1: ↑1 и ↓0+1
Комментарии6

Комментарии 6

Удивительное дело, вот уже лет 15 ситуация с бэкапами у "стандарнтного" PG не меняется ни капли, как их не было, так и нет. При том что продукт невероятно успешный и распространенный. pg_dump - не бэкап, это средство переноса баз на другой инстанс ровно той же версии ровно с теми же настройками. Бэкап для СУБД - это когда необязательно монопольно, не только вся база, можно только накопленные изменения, возможность поднять в любом инстансе не старее источника, на любую точку времени. И без необходимости проверять каждый раз, поднимется оно вообще, или нет, сработало оно вообще, или сеанс пользователя подвис.

Неужели это так сложно? Вроде же понятно, как такое сделать, и очень нужно.

Backup у PG - не монопольно, можно только накопленные изменения (WALs), можно поднять в любом instance не старее источника на любую точку времени. Нет только одного - backup отдельной базы. pg_dump + pg_restore - это не backup.

Это сторонний софт, в котором нужно разбираться, который совместим с некоторыми версиями, некоторыми бранчами, для некоторых платформ, под какими-то лицензиями, иногда бесплатными.

Я хочу встроенную в базовый дистрибутив родную систему бэкапов. Надежную и доверенную не меньше, чем весь остальной движок. Не может быть СУБД без бэкапов, это как докупать двигатель к машине у другой конторы через дорогу.

Это - базовая функциональность PG, встроенная, надёжная, etc.

Согласен по терминологии: pg_dump это логическая выгрузка, а не бэкап в смысле базовой копии с архивом WAL, откуда базу можно поднять на любую точку времени. Статья про более узкую вещь: ночной дамп падал на row-level security и оставлял недописанный файл, который выглядел как бэкап. Физическая копия от этой ловушки как раз не страдает, тут вы правы.

Для небольших баз с суточной точкой восстановления дампа часто хватает, для остальных нужен base backup плюс WAL (pgBackRest, Barman). Но и там поднимать копию на отдельном инстансе стоит регулярно: дыра в архиве WAL или битая базовая копия находятся только так. @alexeyparshin, про отдельную базу согласен, из физической копии её не достать, нужен временный инстанс.

Я бы еще добавил, что каждая команда в скрипте возвращает заветный нолик, или код ошибки. Есть при этом файл в output directory или нет - неважно.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации