LINUX.ORG.RU

Создать много копий базы данных postgres и сэконоить дисковое пространство

 


0

1

Добрый день!

Есть prod-база Postgres размером в 1.3 ТБ. Необходимо создать около пяти тестовых сред (несколько для аналитиков, несколько для разработчиков, одну для тестировщиков и т.д.) с этой базой данных, чтобы они периодически обновлялись с прода.

Можно развернуть пять разных виртуалок с отдельными базами, но тогда уйдёт много дискового пространства и уйдёт много времени на разворот одной и той же базы данных.

Можно ли как-то сэкономить дисковое пространство? Я знаю, что можно это реализовать через btrfs + subvolumes, но есть ли другие варианты?

Спасибо!

★★★
Ответ на: комментарий от Anoxemian

Базы должны быть в режиме rw, разработчики\аналитики\тестировщики\новые сотрудники должны иметь возможность менять данные на существующих базах.

Под шардингом вы подразумеваете репликацию? Она не совсем подходит, т.к.:

  1. Базы должны быть в rw
  2. На проде каждый день меняются тысячи строк, на проде сервер очень мощный, боюсь, что реплицировать данные на менее слабые виртуалки не очень удастся, т.к. иначе они будут всегда сильно нагружены.
iljuase ★★★
() автор топика
Ответ на: комментарий от pfg

Я правильно понимаю, что процесс создания базы такой? Допустим, у нас пять баз данных

  1. Дропнуть все существующие базы на тесте (на всех пяти серверах)
  2. Остановить все базы данных, кроме самой первой
  3. Восстановить базу на первой базе данных (допустим у неё директория,/var/lib/postgresql/11/main_1)
  4. Далее скопировать папку с помощью cp:
cp --reflink=always -r /var/lib/postgresql/11/main_1 /var/lib/postgresql/11/main_2
cp --reflink=always -r /var/lib/postgresql/11/main_1 /var/lib/postgresql/11/main_3
cp --reflink=always -r /var/lib/postgresql/11/main_1 /var/lib/postgresql/11/main_4
cp --reflink=always -r /var/lib/postgresql/11/main_1 /var/lib/postgresql/11/main_5
cp --reflink=always -r /var/lib/postgresql/11/main_1 /var/lib/postgresql/11/main_6
  1. Запустить остальные базы данных.
iljuase ★★★
() автор топика
Последнее исправление: iljuase (всего исправлений: 3)

несколько для разработчиков, одну для тестировщиков и т.д.

Почему для них нельзя сделать базу-муляж?

torvn77 ★★★★★
()
Ответ на: комментарий от iljuase

Для zfs

  • поднимаешь стендбай
  • делаешь снапшот(ы)
  • с любого снапшота делаешь клон с монтированием в требуемый каталог -открываешь БД Можешь ещё сжатие включить на ФС
anonymous
()

Есть prod-база Postgres размером в 1.3 ТБ. Необходимо создать около пяти тестовых сред (несколько для аналитиков, несколько для разработчиков, одну для тестировщиков и т.д.) с этой базой данных, чтобы они периодически обновлялись с прода

Тебе на тестовой среде нужна прям один-в-один копия БД с прода? Сомневаюсь. Используй для тестов более легкую БД, которую получай с помощью обработки продовской БД скриптами, которые удаляют лишние записи.

theNamelessOne ★★★★★
()
Ответ на: комментарий от theNamelessOne

Да, им вся база нужна, уже поднимал вопрос такой. Ну максимум можно будет убрать 20-30 ГБ, не более.

iljuase ★★★
() автор топика

Накатывай только партицию за последний месяц/два.

ya-betmen ★★★★★
()
Ответ на: комментарий от zolden

У нас прод – физический сервер с SSD и находится в одном дата-центре, а тесты находятся в другом дата-центре и они вирутальные (VmWare).

iljuase ★★★
() автор топика
Ответ на: комментарий от anonymous

Да. В апстриме, кажется, начиная с 4.16. Рефлинки, снапшоты и т.д.

i586 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.