Help:Backup: Difference between revisions
(move backups info to the separate page) |
(update snapshots import/export permissions description) |
||
Line 109: | Line 109: | ||
Экспорт снимка включает все предупреждения, информацию о снимке, прикрепленные файлы, объект сборки, пользовательские атрибуты, разметку и комментарии. Подавленные предупреждения также включаются в экспортированную информацию и импортируются в статусе подавленных. | Экспорт снимка включает все предупреждения, информацию о снимке, прикрепленные файлы, объект сборки, пользовательские атрибуты, разметку и комментарии. Подавленные предупреждения также включаются в экспортированную информацию и импортируются в статусе подавленных. | ||
Экспорт и импорт снимков доступен пользователям с [[Help:UI_manual#Описание_ролевой_модели|соответствующими правами]] для выбранного проекта/ветки. | |||
=== Перенос из веб интерфейса === | === Перенос из веб интерфейса === | ||
Line 133: | Line 133: | ||
=== Перенос из командной строки === | === Перенос из командной строки === | ||
Экспорт и импорт снимков из командной строки доступен пользователям с | Экспорт и импорт снимков из командной строки доступен пользователям с [[Help:UI_manual#Описание_ролевой_модели|соответствующими правами]] для выбранного проекта/ветки. | ||
Экспорт снимков: | Экспорт снимков: |
Revision as of 18:20, 4 March 2024
Создание и восстановление резервной копии
Если PostgreSQL запущен в виде сервиса
Если PostgreSQL запущен в виде сервиса (т.е. не в докер-контейнере), то для создания резервной копии БД перейдите в пользователя postgres и запустите создание дампа:
sudo su -l postgres pg_dump --clean -T tmp_diff* svacer_db > svacer.sql
где svacer_db — имя БД.
В результате дамп БД будет создан в файле svacer.sql
Для восстановления БД из дампа также перейдите в пользователя postgres и запустите восстановление
sudo su -l postgres psql -f svacer.sql svacer_db
Если 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 — имя БД
Для восстановления БД используйте команду
cat svacer.sql | docker exec -i svacer_postgres psql -U postgres svacer_db
Бэкап object store через command line API
Этот способ хорошо подходит в случае, если object store достаточно большой (десятки гигабайт или больше) и не желательно останавливать сервер Svacer. Резервную копию object store можно создать, использовав следующую команду (доступна только пользователю с ролью admin)
svacer server backup --user admin --password <password> --file <filename>.kvbak
В результате 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 должна быть пустой.
Бэкап object store в сервере PostgreSQL
Резервную копию object store можно сохранить в сервере PostgreSQL, который используется сервером Svacer. Данный механизм использует функциональность large 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 бэкапов.
Бэкап object store вручную
Создать резервную копию object store возможно вручную. Для этого достаточно скопировать директорию, в которой object store находится. Перед этим желательно остановить сервер Svacer для обеспечения целостности данных. Этот способ хорошо подходит в случае, если object store достаточно большой (десятки гигабайт или больше) и возможно останавливать сервер Svacer. Для инкрементального бэкапа в данном случае можно использовать rsync.
Если директория, где хранить object store не была явно указана при запуске сервера, по умолчанию он будет создан в следующей директории:
- ~/.cache/svacer — в OC Linux
- %LocalAppData%\svacer — в ОС Windows
(например, С:\Users\myusername\AppData\Local\svacer)
При восстановлении из резервной копии следуют поместить файлы object store в директорию по умолчанию (см. выше), либо же в другую директорию и при запуске Svacer указать путь к ней одним из способов:
- Перед запуском Svacer установить переменную окружения SVACER_OBJECT_STORE, например:
- export SVACER_OBJECT_STORE=/home/user/data/object_store
- При запуске 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
Перенос снимков
Svacer предоставляет возможность по экспорту и импорту снимков посредством интерфейса командной строки и веб-интерфейса. Экспорт снимка включает все предупреждения, информацию о снимке, прикрепленные файлы, объект сборки, пользовательские атрибуты, разметку и комментарии. Подавленные предупреждения также включаются в экспортированную информацию и импортируются в статусе подавленных.
Экспорт и импорт снимков доступен пользователям с соответствующими правами для выбранного проекта/ветки.
Перенос из веб интерфейса
Для экспортирования снимка из пользовательского интерфейса пользователь может использовать кнопку экспорта на панели информации о снимке:
либо использовать соответствующую функциональность из панели настроек проектов (требует роль admin):
Импортирование снимка через пользовательский интерфейс допустимо только для пользователя с ролью «admin». Команда доступна в меню ветки
Задача по экспорту снимка может занимать значительное время (зависит от размера снимка) и выполняется асинхронным образом. Извещение о завершении задачи по экспорту появится в виде всплывающей зеленой панели
А так же будет доступно в панели нотификаций
Перенос из командной строки
Экспорт и импорт снимков из командной строки доступен пользователям с соответствующими правами для выбранного проекта/ветки.
Экспорт снимков:
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 создаст проект и ветку, если их не было на сервере.
Перенос Svacer с одного сервера на другой
- Создайте резервную копию БД и object store в соответствии с тем, как описано в разделе Создание и восстановление резервной копии.
- Перенесите созданные файлы резервных копий на нужный сервер
- Восстановите данные из резервной копии на новом сервере