2

Хорошее резервное копирование базы данных является последовательным, поэтому весь дамп представляет состояние, когда дамп был запущен. Типичной стратегией для этого в MySQL является блокировка таблицы, поэтому никакие дополнительные данные не могут быть записаны во время резервного копирования. Но блокировка базы данных - плохой пользовательский опыт (медленные ответы или даже тайм-ауты, если дамп занимает много времени). Поэтому мне интересно, есть ли у Postgres метод создания последовательных резервных копий без блокировки таблиц.

(Моя текущая стратегия резервного копирования с MySQL состоит в том, чтобы иметь подчиненное устройство только для резервных копий, поэтому мастер может продолжать обслуживать запросы пользователей, в то время как я могу получить согласованный дамп. Но это вводит другие точки отказа, например, репликация может прерваться)

2 ответа2

1

блокировка и блокировка это две разные вещи. Некоторые блокировки не вызывают никаких проблем, и вы можете использовать базу данных как обычно (блокировка общего доступа), в то время как другие блокировки оказывают существенное влияние и останавливают ваш бизнес.

Самый простой способ сделать резервную копию базы данных PostgreSQL - это pg_dump. Ежедневно мы создаем резервные копии многотабайтной базы данных, обрабатывая в рабочие часы около 2500 т / с

Не сравнивайте PostgreSQL с MySQL, двумя очень разными базами данных. Многие трудно исправить проблемы в MySQL очень просты в PostgreSQL. Создание постоянных резервных копий - одна из таких вещей.

Вам не нужен раб, чтобы сделать резервную копию. Это удобно, но не нужно.

0

Запуск PostgreSQL через ZFS и создание мгновенного снимка должны решить эту проблему.

Конечно, у этого снимка будет грязный журнал транзакций, поэтому вам нужно будет перенести снимок в клон (записываемый снимок), затем запустить отдельный экземпляр PostgreSQL для очистки / воспроизведения журналов, а затем создать дамп из второго экземпляра. Наконец, вы должны закрыть 2-й экземпляр сервера базы данных и удалить клон.

Если у вас недостаточно оперативной памяти для запуска двух экземпляров PostgreSQL на рабочем сервере, вы можете перенести снимок базы данных на вторичный сервер (с помощью zfs send, zfs receive) и создать там дамп.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .