Назад | Перейти на главную страницу

Как минимизировать пропускную способность в сценарии частого резервного копирования postgres?

Я хочу делать очень частое резервное копирование (каждый час) данных postgres на нескольких виртуальных машинах (скажем, 20-50) на один и тот же сервер архивации.

Если необходимо, вот дополнительные данные: В идеале система должна поддерживать нагрузку от 80 до 200 баз данных, расположенных на всех виртуальных машинах. Базы данных от малых (10–100 МБ) до средних (500–2 ГБ) состоят из сотых таблиц, небольшая часть этих таблиц может легко содержать от нескольких тысяч строк до примерно миллиона строк. Изменения в базе данных - это часто новые записи, некоторые обновления, а не столько удаление. Пропускная способность будет 100 Мбит / с.

Поскольку я уже делаю это со стандартной файловой системой, используя инкрементное резервное копирование (rsync), Мне интересно, можно ли добиться чего-то подобного с помощью резервных копий базы данных postgres.

У меня есть несколько возможных вариантов:

Я думал о:

и есть ли другой способ, кроме инкрементного резервного копирования, для достижения небольшой пропускной способности?

Так... как я мог уменьшить пропускную способность в моем сценарии резервного копирования postgres ?

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

Вам следует использовать возможности репликации PostgreSQL; видеть http://www.postgresql.org/docs/9.3/interactive/high-availability.html

Сделайте дамп в формате sql. Храните одну полную копию на локальной виртуальной машине, скажем, обновляемую каждый день. Затем сделайте дамп новой копии и сделайте различие от полной копии. Копируйте полную копию один раз в день и только в другое время. Для восстановления вам нужно будет пропатчить полную копию с помощью diff и выполнить sql файл.