-
-
Save popovnv/025bf958ad3bd21c5013339c22b21d1d to your computer and use it in GitHub Desktop.
postgres-clone-db-on-zfs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Как максимально быстро и с минимальным расходом дискового пространства получать копии баз для разработки. | |
| Предположим, есть сервер баз данных под управлением postgres, назовем его srv-db | |
| И есть сервер разработки, на котором тоже есть postgres, назовем его srv-dev. | |
| Требуется по мере надобности создавать в онлайне за несколько минут получать копии для тестирования и разработки. | |
| Для этого проводим подготовительные работы: | |
| 1. Размещаем кластер postgres на zfs | |
| 2. Настраиваем потоковую асинхронную репликацию srv-db -> srv-dev | |
| Делаем копиии: | |
| 3. Делаем снимок zfs, затем клон на основе снимка | |
| 4. Создаем пустую базу 1С, если не создавали ранее | |
| 5. Заменяем каталог базы на симлинк к базе с клонированного диска | |
| Время создания копии вручную - 3-5 минут, скриптом - 10 секунд. | |
| По месту: изначально клон не занимает место, по мере работы пишутся изменения. | |
| Операцию можно выплнять как для всех разработчиков с любой необходимой периодичностью, так и индивидуально по требованию. | |
| === | |
| Пример: создание копии базы trade-dev-ivanov из базы trade-dev-base | |
| - Установить нужное ПО, если не установлено: choco install putty pgadmin -y | |
| - Подключиться из windows через putty: username@computername | |
| - Создать новую пустую базу 1С, посмотреть OID trade-dev-base и trade-dev-ivanov: предположим, что это 16384 и 725498 | |
| (OID можно посмотреть в свойствах базы в pgadmin, либо c помощью /opt/pgpro/1c-11/bin/oid2name) | |
| - Сделать снимок (назвать его 20190215) и клон на основе снимка: | |
| sudo zfs snapshot zpool0/db@20190215 | |
| sudo zfs clone zpool0/db@20190215 zpool0/db/ivanov | |
| - Сделать владельцем пользователя postgres: | |
| sudo chown postgres:postgres /zpool0/db/iavnov | |
| - Остановить кластер postgres для подмены базы: | |
| sudo systemctl stop postgrespro-1c-11 | |
| - Удалить каталог новой базы и заменить на симлинк от базы | |
| rm -rf /var/lib/pgpro/1c-11/data/base/725498 | |
| ln -s /zpool0/rubtsov/pgpro/1c-11/data/base/16384 /var/lib/pgpro/1c-11/data/base/725498 | |
| - Запустить postgres: | |
| sudo systemctl start postgrespro-1c-11 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment