У меня есть база данных 3 ГБ, которая постоянно изменяется, и мне нужно делать резервные копии без остановки сервера (Postgres 8.3).
Мой pg_dump работает в течение 5 минут. Что если данные будут изменены во время процесса? Получу ли я постоянные резервные копии? Я не хочу узнавать, когда случится беда.
В документации Postgres http://www.postgresql.org/docs/8.3/static/app-pgdump.html об этом ничего не говорится.
postgresql
Римский
источник
источник
Ответы:
Из руководства :
Так что да, вы можете доверять резервной копии. Конечно, это PostgreSQL, вы можете доверять своим данным в PostgreSQL.
источник
pg_dump запускает транзакцию, аналогично тому, как будет работать любой другой длительный запрос. Гарантии согласованности исходят от реализации MVCC . Дамп всегда будет самосогласованным в рамках этих правил.
Все нечеткие части MVCC связаны с такими вещами, как то, как транзакции UPDATE порядка становятся видимыми для других клиентов, и как получаются блокировки. pg_dump строго следит за порядком и получает блокировку чтения для всей базы данных, чтобы сбросить ее. Для большинства людей это то, что они ожидают, и используемый механизм никогда не вызывает никаких проблем. Основной риск параллелизма заключается в том, что клиенты, пытающиеся изменить структуру базы данных, будут заблокированы во время работы дампа. Это не влияет на качество свалки, хотя.
источник
Дамп начинается с настройки
TRANSACTION ISOLATION LEVEL SERIALIZABLE
.Пожалуйста, прочитайте руководство по изоляции транзакций и, например, обсуждение списка пользователей об этом .
Quote:
В основном все, что установлено после
pg_dump
установки уровня изоляции транзакции, не является частью этого дампа.Операции чтения / записи в это время не блокируются.
источник
Сначала извините за ответ на этой старой теме. Но из моего опыта я не могу подтвердить утверждение, что вы можете доверять pg_dump /
Несколько месяцев назад я переключился на проект на postgres. И, конечно, я сделал все резервные копии с помощью pg_dump из действующей системы, как было предложено. Но после первой проверки бекапа я выяснил, что все дампы имеют разные размеры. Восстановив некоторые из них случайным образом, я обнаружил, что некоторые таблицы отсутствуют. Поэтому я начал анализировать, почему это происходит, и выяснил, что если наложенное приложение, например серверы приложений, блокировка некоторых таблиц и pg_dump, не ожидает их освобождения. Мне нужно было каждый раз останавливать сервер на время резервного копирования, что не является хорошим решением.
Поэтому я все еще ищу исправление, но, как я уже сказал, я совершенно не согласен с утверждением, что вы можете доверять pg_dump.
источник