имеется общий сервер для разработки.
у каждого девелопера свой локальный enviroment со своей бд.
хочется решить два момента
1. Хочеться иметь на девелоперских машинах актуальную бд с дев сервера.
При этом данные которые девелопер у себя локально в базу засовывает, в центральную дев базу попадать не должны
может ли решить эту задачу репликация БД? с дева на локал сендбокс.
2. Хочеться иметь нечто что дают скв для текстовых файлов (source code), но для базы.
При условия что размер базы большой. несколько Гб (в макс. зажатом виде структура+данные в sql файле 2,5 Гб).
Причем хотя бы версионность структуры.
Но решение ищется максимально автоматизированное.
Т.е. очевидно что с изменением структуры базы данных дамп ее тоже может быть под контролем обычной СКВ, но может есть иной подход?
Там в принципе только из мастера в слейв делается, обратно оно никак, оно так и называется мастер-слейв.
Ну они всегда будут в актуальном состоянии так как репликация все время будет идти, ну кроме тех случаев когда девелопер ломает бд и ему надо будет её полностью перезалить к себе из основной бд.
> а можно как-то сделать ТОЛЬКО из мастера в слейв а обратно запретить?
ээ, об этом я и пишу. slave не вносит изменения в мастер.
> а как вы поддерживаете локальные базы девелоперов в актуальном состоянии?
редко когда требуется прямо-таки актуальная версия БД. Обычно хватает дампов ~ месячной давности.
> и чем плохи в данном случае реплики?
всем хороши, разве что если будет много slave'ов, то нагрузка всё же будет идти, но это всё настраивается, причём довольно просто.
Все верно, но если девелопер делает свои инсерты/апдейты, то репликация может часто останавливаться или глючить. Ну грубо говоря, если девелопер заинсертит записть с первчиным индексом = 100, а потом с мастера тоже придет запись с таким же ID, то репликация остановится.
Другой пример. Если первичный индекс автоикрементный, и девелопер будет инсертить свои записи, то база вообще станет некорректной, когда придут данные с мастера. И соответственно в будущем опять же может возникнуть ERROR на каком-то запросе с мастера, и репликация опять остановится. В общем, будьте осторожны.
Но если девелоперы только селектят, то репликация — это лучшее решение для поддержания актуальности данных.