Как организовать БД для разработчиков?

Сейчас у каждого из разрабов своя копия проекта, но в качестве БД они работают с одним боевым слейвом. Это не гуд потому что кто-то по неосторожности может удалить данные или просто подвесить базу тяжёлым запросом.
Но база проекта + вспомогательная база на 200 гб + индексы сфинкса + отдельная база статистики. Есть мысль поднять это всё в 1 экземпляре для всех разработчиков, но при выкатывании какого-то изменения в master разрабовскую базу надо обновлять тоже, а это может затереть чью-то текущую работу. Сделать срез на 1/10 часть проекта например. Непонятно как разделить те же индексы или потестить баг клиента который не попал в эту базу разрабов и остался только в боевой.
  • Вопрос задан
  • 527 просмотров
Пригласить эксперта
Ответы на вопрос 1
@ralaton121
Решается благодаря свойствам файловых систем, типа Copy-on-Write. Например, ZFS.
Есть и аппаратные решения (по факту программно-аппаратные).
Есть и программные решения, работающие без ZFS, причем заточенные как раз на СУБД. На Хабре была статья про создание копий БД для целей разработки: www.habrahabr.net/thread/5851
Сейчас 7 команд используют 27 Тб — это база, сжатая при инициализации (до трети) и их диффы за год.


Идея проста.

1) Делаем клон или снепшот файловой системы. Это делается практически мгновенно.
2) Настраиваем на клонированную файловую систему свой экземпляр СУБД.
3) Имеем 2 версии данных, та часть данных, что одинаковая (до выполнения п.1) - не дублируется, места не занимает.
4) При необходимости освежить данные - убиваем клон/снепшот и создаем заново. Это происходит почти мгновенно.
5) Можно иметь несколько независимых клонов/снепшотов одоновременно.

Можно сделать такое же примерно ветвление как и в Git
Только слияния в отличие от Git - невозможны.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы