Перенос односерверной системы на другой сервер
Описание задачи
Исходная точка:
Есть установленный экземпляр платформы на сервере (возможно виртуальном) с Debian.
Платформа установлена на локальный адрес виртуального сервера (допустим, 172.27.1.121).
Основная доменная СУБД postgresql установлена здесь же посредством инсталлятора платформы.
СУБД установлена в docker-контейнере.
Необходимо перенести платформу на другой сервер, у которого другой адрес (допустим 172.27.5.122).
Необходимо сохранить данные, в том числе лицензию, конфигурацию, настройки.
Подходы
1. Через экспорт/импорт.
Этот вариант применим, если установка стандартная, количество доменов небольшое, и исторические данные не важны.
2. Через резервную копию БД (pg_basebackup)
Производится установка новой системы, а затем вместо пустой доменной БД postgres производится подключение к ранее зарезервированной копии.
Это может быть произведено путем подмены каталога СУБД с конфигурацией и данными, либо путем настройки нового инстанса СУБД на базе резервной копии и последующей подмены строки подключения в конфигурации.
Из предыдущей системы в этом случае потребуется также скопировать:
-
Каталог syncroot с данными доменов (в т.ч. файлы сценариев).
-
Каталог recpath с записями разговоров, если запись не была настроена на внешние хранилища.
-
Лицензия.
-
Конфигурация (ее предстоит дополнительно адаптировать под новые адреса сервера).
Если система при этом подключалась к внешним СУБД и файловым хранилищам, то при наличии доступа к ним с теми же параметрами подключение произойдет автоматически.
Исключение составляют NFS и другие монтируемые файловые системы, которые следует предварительно подключить к серверу.
Если же внешние хранилища становятся доступны под другими адресами или учетными данными, то предстоит в доменах скорректировать настройки подключений к хранилищам.
3. Через скрипт БД (pg_dump)
В отличие от предыдущего пункта БД не резервировать и подключается, а с помощью утилиты pg_dump создается скрипт, который затем применяется к новой БД.
Скрипт создается отдельно для каждой БД в рамках СУБД, то есть 1-2 раза под каждый домен.
Этот способ следует использовать, если необходимо перенести данные под управление другой версии сервера СУБД, либо обогатить существующий инстанс postgres базами данных и данными платформы, оставив прочие имеющиеся объекты без изменений.
Что понадобится
1. Строка установки с параметрами
При установке основной системы была использована следующая строка запуска инсталлятора с параметрами:
bash install_ssh.sh \ -u era \ -p 22 \ --host=188.1.1.1 \ --ipaddress=172.27.1.121 \ --postfix=_myinstance \ --master=y \ --masterdomain=era.test \ --srvname=mysrv1 \ --dopginstall=y \ --usereplic=n \ --pgmode=d \ --pgport=5432 \ --pgpostgrespwd=MyPwd1234 \ --pskcookie=123456 \ --usedefaults
Если такой строки не использовалось, необходимо скомпоновать ее, восстановив все используемые значения, в том числе значения по умолчанию.
2. Активная конфигурация
Авторизовавшись в мастер домене, открыть на редактирование конфигурацию и скопировать ее содержимое.
Альтернативный путь - достать ее с диска, она размещена в файле cfgv3.json в рабочем каталоге ноды с ролью mic, например в контейнере это
/var/lib/era/_workdir/mic1@172.27.1.121/cfgv3.json
а в хосте по умолчанию
/opt/era_myinstance/lib/_workdir/mic1@172.27.1.121/cfgv3.json
3. Лицензия
Авторизовавшись в мастер домене, открыть в адресной строке браузера страницу /api/admin/v1/lic/download.
Альтернативный путь - достать ее с диска, она размещена в файле r.lic в рабочем каталоге ноды с ролью mdc, например в контейнере это:
/var/lib/era/_workdir/mdc1@172.27.1.121/lic/r.lic
а в хосте по умолчанию
/opt/era_myinstance/lib/_workdir/mdc1@172.27.1.121/lic/r.lic
Варианты установки платформы в режиме с подключением резервной БД.
Существуют два варианта действий:
1. Установка платформы с новой БД и последующая подмена БД.
1.1. Ставим новый экземпляр платформы на актуальный локальный адрес с теми же параметрами установки (преимущественно пароли к БД). Корректируем те параметры, что необходимо (например установки адрес, привязку к каталогам волюмов). Важно чтобы БД ставилась той же версии.
1.2. Готовим БД на источнике к бэкапу.
1.3. Подменяем БД. То есть производим бэкап БД, отключаем состояние резервирования, подменяем каталог целевой БД. Либо бэкапим прям в точку установки постгреса, предыдущую папку данных предварительно переименовав.
2. Установка платформы с подключением к новой заранее подготовленной БД.
2.1. Ставим вручную БД на новом сервере (только postgresql) той же версии, что и на сервере источника.
2.2. Производим бэкап БД с сервера источника в новую папку на сервере назначения /var/lib/postgresql/14/era.
2.3. Устанавливаем новый экземпляр платформы, в разделе про установку сервера БД выбирая пункт "подключиться к существующей БД", и введя адрес своего сервера БД и его порт. Если всё локально - вплоть до 127.0.0.1
Дальнейшие операции
*.4. Загружаем лицензию.
*.5. Авторизуемся в мастер домен под админом, открываем конфигурации, находим последнюю, корректируем ее при необходимости, изменяя адреса (и, маловероятно, пути).
*.6. Копируем с прошлого сервера каталог syncroot.
*.7. Копируем с прошлого сервера каталог era_recpath.
*.8. Устанавливаем продуктовый слой и кастомные пакеты.