|
|
(33 intermediate revisions by 3 users not shown) |
Line 1: |
Line 1: |
| 4 Миграция
| | [[Category:Help]] |
| 4.1 Миграция со старого сервера
| |
| В данном подразделе описана миграция со старого сервера, поставляющегося в комплекте со Svace. Это не относится к миграции между версиями Svacer. Миграция данных со старого сервера на Svacer состоит из двух этапов:
| |
| 1. Экспорт информации со старого сервера.
| |
| 2. Импорт данных в новый.
| |
| Для экспорта информации со старого Svace сервера используется утилита svace-migration.jar
| |
|
| |
|
| java -jar svace-migration.jar <user> <password> <path to svace> <path to server dir> <path to output dir>
| | {{Note|type=error|text=Это устаревшая функциональность, она не поддерживается и стабильная работа не гарантируется}} |
| Табл. 2 — Параметры, используемые при экспорте данных
| |
| Параметр
| |
| Описание
| |
| <user>
| |
| Имя пользователя на старом сервере
| |
| <password>
| |
| Пароль пользователя на старом сервере
| |
| <path to svace>
| |
| Путь к директории, где находится Svace
| |
| <path server dir>
| |
| Директория, из которой запущен старый сервер
| |
| <path to output dir>
| |
| Директория, в которую будут записаны экспортируемые данные
| |
|
| |
|
| Экспорт данных возможен при работающем старом сервере. Экспорт инкрементальный, поэтому ранее экспортированные результаты повторно не переносятся.
| | === Миграция со старого сервера === |
| При экспорте утилита svace-migration.jar извлекает:
| | В данном подразделе описана миграция со старого сервера, поставляющегося в комплекте со Svace. Это не относится к переходу между версиями Svacer. Миграция данных со старого сервера на Svacer состоит из двух этапов: |
| • все снимки в виде *.svres;
| | # Экспорт информации со старого сервера. |
| • информацию о размещении исходного кода;
| | # Импорт данных в новый. |
| • сопутствующую информацию в директории старого сервера.
| |
| ВНИМАНИЕ: Для работы утилиты требуется Java 17+, при запуске возможно потребуется добавить опции JVM:
| |
| --add-opens java.base/java.lang.reflect=ALL-UNNAMED
| |
| --add-opens java.base/java.lang=ALL-UNNAMED
| |
| --add-opens java.base/java.io=ALL-UNNAMED
| |
| --add-opens java.base/java.util=ALL-UNNAMED
| |
| --add-opens java.base/java.util.concurrent=ALL-UNNAMED
| |
| --add-opens java.base/java.text=ALL-UNNAMED
| |
| --add-opens java.desktop/java.awt.font=ALL-UNNAMED
| |
|
| |
|
| Для импорта экспортированных данных используется следующая команда: | | Для экспорта информации со старого Svace сервера используется утилита '''svace-migration.jar'''. Начиная с релиза 8.0.0 она не входит в дистрибутив Svacer, но вы можете взять ее из [https://svacer.ispras.ru/releases предыдущих релизов]. |
| svacer migrate [--skip-dxr-errors] --distr <path to svace distr> --temp <path to temp folder> --store <intermediate store> <path to exported data>
| |
| Табл. 3 — Параметры, используемые при импорте данных
| |
| Параметр
| |
| Описание
| |
| --skip-dxr-errors
| |
| Опциональный параметр для игнорирования ошибок в DXR-данных. Рекомендуется к использованию
| |
| --distr
| |
| Путь к дистрибутиву Svace
| |
| --temp
| |
| Директория для хранения временных файлов в ходе конверсии
| |
| --store
| |
| Путь к промежуточному хранилищу
| |
| <path to exported data>
| |
| Путь к директории, в которую были экспортированы результаты
| |
|
| |
|
| После конвертации данных в промежуточное хранилище результат можно загрузить на новый сервер с помощью команды upload:
| | java -jar svace-migration.jar <user> <password> <path to svace> <path to server dir> <path to output dir> |
| svacer upload --user <user> --password <pwd> --host <host> --port <rest port> --grpc <grpc port> <path to store>
| |
|
| |
|
| 4.2 Миграция между версиями Svacer
| | '''Параметры, используемые при экспорте данных''' |
| Миграция БД PostgreSQL и object store между версиями Svacer происходит автоматически при обновлении на новую версию. Рекомендуется делать резервные копии перед обновлением (см. раздел Создание и восстановление резервной копии).
| | {| class="wikitable" |
| | !Параметр!!Описание |
| | |- |
| | | <user> |
| | | Имя пользователя на старом сервере |
| | |- |
| | | <password> |
| | | Пароль пользователя на старом сервере |
| | |- |
| | | <path to svace> |
| | | Путь к директории, где находится Svace |
| | |- |
| | | <path server dir> |
| | | Директория, из которой запущен старый сервер |
| | |- |
| | | <path to output dir> |
| | | Директория, в которую будут записаны экспортируемые данные |
| | |} |
|
| |
|
| Ниже описаны существенные изменения при переходе на определенную версию с более старой
| | Экспорт данных возможен при работающем старом сервере. Экспорт инкрементальный, поэтому ранее экспортированные результаты повторно не переносятся. |
| • 4.0.1 и выше — миграция object store (badger) на новую версию. Может занимать существенное время при большом количестве проектов в Svacer. После перехода на версию 4.0.1 и выше object store становится несовместим с более ранними версиями
| | При экспорте утилита '''svace-migration.jar''' извлекает: |
| • 5.0.0 и выше — перенос DXR разметки из PostgreSQL в object store. Версии 5.0.0 и выше не совместимы с более ранними версиями.
| |
|
| |
|
| 4.3 Создание и восстановление резервной копии
| | * все снимки в виде '''*.svres'''; |
| 4.3.1 Если PostgreSQL запущен в виде сервиса
| | * информацию о размещении исходного кода; |
| Если PostgreSQL запущен в виде сервиса (т.е. не в докер-контейнере), то для создания резервной копии БД перейдите в пользователя postgres и запустите создание дампа:
| | * сопутствующую информацию в директории старого сервера. |
| sudo su -l postgres
| |
| pg_dump --clean -T tmp_diff* svacer_db > svacer.sql
| |
| где svacer_db — имя БД.
| |
| В результате дамп БД будет создан в файле svacer.sql
| |
|
| |
|
| Для восстановления БД из дампа также перейдите в пользователя postgres и запустите восстановление | | Для работы утилиты требуется Java 17+, при запуске возможно потребуется добавить опции JVM: |
| sudo su -l postgres
| | --add-opens java.base/java.lang.reflect=ALL-UNNAMED |
| psql -f svacer.sql svacer_db
| | --add-opens java.base/java.lang=ALL-UNNAMED |
| | --add-opens java.base/java.io=ALL-UNNAMED |
| | --add-opens java.base/java.util=ALL-UNNAMED |
| | --add-opens java.base/java.util.concurrent=ALL-UNNAMED |
| | --add-opens java.base/java.text=ALL-UNNAMED |
| | --add-opens java.desktop/java.awt.font=ALL-UNNAMED |
|
| |
|
| 4.3.2 Если PostgreSQL запущен в docker-контейнере
| | Для импорта экспортированных данных используется следующая команда: |
| Если PostgreSQL запущен в docker-контейнере, то для создания резервной копии БД выполните следующую команду
| |
| docker exec -t svacer_postgres pg_dump --clean -T tmp_diff* -U postgres svacer_db > svacer.sql
| |
| где:
| |
| • svacer_postgres — имя docker-контейнера
| |
| • postgres — имя пользователя, под учётной записью которого создана БД
| |
| • svacer_db — имя БД
| |
|
| |
|
| Для восстановления БД используйте команду
| | svacer migrate [--skip-dxr-errors] --distr <path to svace distr> --temp <path to temp folder> --store <intermediate store> <path to exported data> |
| cat svacer.sql | docker exec -i svacer_postgres psql -U postgres svacer_db
| |
|
| |
|
| 4.3.3 Создание резервной копии svacer object store через command line API
| | '''Параметры, используемые при импорте данных''' |
| Резервную копию object store можно создать, использовав следующую команду (доступна только пользователю с ролью admin)
| | {| class="wikitable" |
| | ! Параметр !! Описание |
| | |- |
| | | --skip-dxr-errors |
| | | Опциональный параметр для игнорирования ошибок в DXR-данных. Рекомендуется к использованию |
| | |- |
| | | --distr |
| | | Путь к дистрибутиву Svace |
| | |- |
| | | --temp |
| | | Директория для хранения временных файлов в ходе конверсии |
| | |- |
| | | --store |
| | | Путь к промежуточному хранилищу |
| | |- |
| | | <path to exported data> |
| | | Путь к директории, в которую были экспортированы результаты |
| | |} |
|
| |
|
| svacer server backup --user admin --password <password> --file <filename>.kvbak
| | После конвертации данных в промежуточное хранилище результат можно загрузить на новый сервер с помощью команды upload: |
| | |
| В результате object store будет сохранен в файл <filename>.kvbak
| |
| | |
| Для восстановления из резервной копии требуется при запуске сервера указать этот файл в опции --load-from-backup.
| |
| | |
| svacer server --pg <postgres_url> —store /home/svacer/new-store --load-from-backup <filename>.kvbak
| |
| | |
| Восстановление возможно только в пустой object store. То есть в данном примере директория /home/svacer/new-store должна быть пустой.
| |
| | |
| 4.3.4 Создание резервной копии svacer object store в сервере PostgreSQL
| |
| Резервную копию object store можно сохранить в сервере PostgreSQL, который используется сервером Svacer. Данный механизм использует функциональность large object store из PostgreSQL. Функциональность по бэкапу object store в PostgreSQL является рекомендуемой стратегией по бэкапу object store.
| |
| | |
| Следующие команды подразумевают, что сервер развернут с портами по умолчанию на localhost. При необходимости, порты и адрес сервера могут быть указаны как дополнительные опции.
| |
| | |
| Создание бэкапа:
| |
| | |
| svacer server backup --user admin --password <password> --pg
| |
| | |
| Бэкап создается в фоновом процессе, пользователь может продолжать работать с сервером. Результат работы команды состоит из ID бэкапа и времени создания. Эти данные печатаются в stdout
| |
| | |
| ID = 23 CREATE_TS = 2022-10-06T06:04:33Z
| |
| | |
| Для печати списка существующих бэкапов используется команда:
| |
| | |
| svacer server backup --user admin --password <password> --list-pg
| |
| | |
| Результат печатается в stdout и включает ID и время создания бэкапа
| |
| | |
| 2022-10-06T09:04:36.929+0300 info Quering server configuration from http://localhost:8080/api/public/server/info
| |
| 2022-10-06T09:04:36.930+0300 info Server configuration grpc = 3002, rest = 8080
| |
| 2022-10-06T09:04:36.939+0300 info Logged by user admin
| |
| 2022-10-06T09:04:36.941+0300 info Backups:
| |
| ID = 23 CREATE_TS = 2022-10-06T06:04:33Z
| |
| Восстановление object store из бэкапа допустимо только при старте сервера. Для этого следует очистить текущий object store (или указать путь на новую директорию) и использовать следующий флаг при старте:
| |
| | |
| svacer server --load-from-pg-backup=<id>
| |
| | |
| где <id> — ID бэкапа или 0, для использования последнего доступного бэкапа.
| |
| | |
| Для очистки старых бэкапов используется следующая команда:
| |
| | |
| svacer server backup --user admin --password <password> --drop-pg=<lower>:<upper>
| |
| | |
| где <lower> и <upper> нижняя и верхняя граница ID бэкапов.
| |
| | |
| Настоятельно рекомендуется настроить задачу на хосте, где работает Svacer на периодический запуск бэкапа object store в PostgreSQL.
| |
| | |
| 4.3.5 Создание резервной копии svacer object store вручную
| |
| Создать резервную копию object store также возможно вручную. Для этого достаточно скопировать директорию, в которой object store находится. Перед тем как это делать желательно остановить сервер Svacer в целях обеспечения целостности данных.
| |
| | |
| Если директория, где хранить object store не была явно указана при запуске сервера, по умолчанию он будет создан в следующей директории:
| |
| • ~/.cache/svacer — в OC Linux
| |
| • %LocalAppData%\svacer — в ОС Windows
| |
| (например, С:\Users\myusername\AppData\Local\svacer)
| |
| | |
| При восстановлении из резервной копии следуют поместить файлы object store в директорию по умолчанию (см. выше), либо же в другую директорию и при запуске Svacer указать путь к ней одним из способов:
| |
| 1. Перед запуском Svacer установить переменную окружения SVACER_OBJECT_STORE, например:
| |
| export SVACER_OBJECT_STORE=/home/user/data/object_store
| |
| 2. При запуске Svacer передать путь к object store в параметре --store, например:
| |
| svacer --store /home/user/data/object_store
| |
| | |
| При запуске Svacer в docker-контейнере требуется смонтировать директорию с object store в контейнер как volume и указать путь к ней в переменной STORE в файле docker-compose.yml. Допустим, директория с object store была скопирована в /home/user/data/object_store. В таком случае параметры нужно указать следующим образом
| |
| | |
| volumes:
| |
| - /home/user/data:/data
| |
| environment:
| |
| - STORE=/data/object_store
| |
| | |
| 4.4 Перенос снимков
| |
| Svacer предоставляет возможность по экспорту и импорту снимков посредством интерфейса командной строки и веб-интерфейса.
| |
| Экспорт снимка включает все предупреждения, информацию о снимке, прикрепленные файлы, объект сборки, пользовательские атрибуты, разметку и комментарии. Подавленные предупреждения также включаются в экспортированную информацию и импортируются в статусе подавленных.
| |
| Внимание: в текущей версии экспорт снимка из веб-интерфейса доступен всем пользователям с ролью READ для выбранного проекта/ветки. Импорт снимка из веб-интерфейса доступен только пользователям с ролью admin (обычный пользователь не видит секцию с проектами). Экспорт и импорт снимков из интерфейса командной строки доступен пользователям с ролями READ и WRITE для выбранной ветки.
| |
| | |
| 4.4.1 Перенос из веб интерфейса
| |
| Для экспортирования снимка из пользовательского интерфейса пользователь может использовать кнопку экспорта на панели информации о снимке:
| |
| | |
| | |
| | |
| либо использовать соответствующую функциональность из панели настроек проектов (требует роль admin):
| |
| | |
| | |
| Импортирование снимка через пользовательский интерфейс допустимо только для пользователя с ролью «admin». Команда доступна в меню ветки
| |
| | |
| | |
| | |
| Задача по экспорту снимка может занимать значительное время (зависит от размера снимка) и выполняется асинхронным образом. Извещение о завершении задачи по экспорту появится в виде всплывающей зеленой панели а так же будет доступно в панели нотификаций:
| |
| | |
| | |
| | |
| | |
| 4.4.2 Перенос из командной строки
| |
| Экспорт и импорт снимков из командной строки доступен пользователям с ролями READ и WRITE на проекте или ветке.
| |
| | |
| Экспорт снимков:
| |
| svacer server export
| |
| --user <user>
| |
| --password <pwd>
| |
| --host <host>
| |
| --port <port>
| |
| --grpc <grpc port>
| |
| --project <project name or id>
| |
| --branch <branch name or id>
| |
| --snapshot <snapshot name or id>
| |
| <output file name>
| |
| | |
| Импорт снимков:
| |
| svacer server import
| |
| --user <user>
| |
| --password <pwd>
| |
| --host <host>
| |
| --port <port>
| |
| --grpc <grpc port>
| |
| --project <project name or id>
| |
| --branch <branch name or id>
| |
| --name <new name for snapshot>
| |
| [--force]
| |
| <input file name>
| |
| | |
| Опция --force создаст проект и ветку, если их не было на сервере.
| |
|
| |
|
| 4.5 Перенос Svacer с одного сервера на другой
| | svacer upload --user <user> --password <pwd> --host <host> --port <rest port> --grpc <grpc port> <path to store> |
| 1. Создайте резервную копию БД и object store в соответствии с тем, как описано в разделе Создание и восстановление резервной копии. | |
| 2. Перенесите созданные файлы резервных копий на нужный сервер
| |
| 3. Восстановите данные из резервной копии на новом сервере
| |
Это устаревшая функциональность, она не поддерживается и стабильная работа не гарантируется
Миграция со старого сервера
В данном подразделе описана миграция со старого сервера, поставляющегося в комплекте со Svace. Это не относится к переходу между версиями Svacer. Миграция данных со старого сервера на Svacer состоит из двух этапов:
- Экспорт информации со старого сервера.
- Импорт данных в новый.
Для экспорта информации со старого Svace сервера используется утилита svace-migration.jar. Начиная с релиза 8.0.0 она не входит в дистрибутив Svacer, но вы можете взять ее из предыдущих релизов.
java -jar svace-migration.jar <user> <password> <path to svace> <path to server dir> <path to output dir>
Параметры, используемые при экспорте данных
Параметр |
Описание
|
<user>
|
Имя пользователя на старом сервере
|
<password>
|
Пароль пользователя на старом сервере
|
<path to svace>
|
Путь к директории, где находится Svace
|
<path server dir>
|
Директория, из которой запущен старый сервер
|
<path to output dir>
|
Директория, в которую будут записаны экспортируемые данные
|
Экспорт данных возможен при работающем старом сервере. Экспорт инкрементальный, поэтому ранее экспортированные результаты повторно не переносятся.
При экспорте утилита svace-migration.jar извлекает:
- все снимки в виде *.svres;
- информацию о размещении исходного кода;
- сопутствующую информацию в директории старого сервера.
Для работы утилиты требуется Java 17+, при запуске возможно потребуется добавить опции JVM:
--add-opens java.base/java.lang.reflect=ALL-UNNAMED
--add-opens java.base/java.lang=ALL-UNNAMED
--add-opens java.base/java.io=ALL-UNNAMED
--add-opens java.base/java.util=ALL-UNNAMED
--add-opens java.base/java.util.concurrent=ALL-UNNAMED
--add-opens java.base/java.text=ALL-UNNAMED
--add-opens java.desktop/java.awt.font=ALL-UNNAMED
Для импорта экспортированных данных используется следующая команда:
svacer migrate [--skip-dxr-errors] --distr <path to svace distr> --temp <path to temp folder> --store <intermediate store> <path to exported data>
Параметры, используемые при импорте данных
Параметр |
Описание
|
--skip-dxr-errors
|
Опциональный параметр для игнорирования ошибок в DXR-данных. Рекомендуется к использованию
|
--distr
|
Путь к дистрибутиву Svace
|
--temp
|
Директория для хранения временных файлов в ходе конверсии
|
--store
|
Путь к промежуточному хранилищу
|
<path to exported data>
|
Путь к директории, в которую были экспортированы результаты
|
После конвертации данных в промежуточное хранилище результат можно загрузить на новый сервер с помощью команды upload:
svacer upload --user <user> --password <pwd> --host <host> --port <rest port> --grpc <grpc port> <path to store>