Перейти к содержанию

Резервное копирование

Данный раздел описывает процедуру сохранения данных кластера TeamStorm на случай системных сбоев, отказа оборудования и непредвиденных ситуаций.

ВНИМАНИЕ

Для создания архива остановка кластера необязательна, но выполнение команд резервного копирования может негативно отразиться на работе пользователей.

Резервное копирование данных состоит из двух шагов.

  1. Создание дампов баз данных PostgreSQL.

  2. Создание файлового архива необходимых разделов docker-контейнеров.

Создание дампа баз данных PostgreSQL

Данная процедура описывает создание дампов баз данных PostgreSQL. Процедура автоматизирована и для запуска нужно выполнить следующие действия:

  1. Перейдите в директорию scripts, которая находится внутри директории с артефактами TeamStorm.

    user@server: ~/teamstorm $ cd scripts
        user@server: ~/teamstorm/scripts $ ls -lha
        total 28
        drwxrwxr-x 3 user user 4096 Feb 02 13:24 ./
        drwxrwxr-x 4 user user 4096 Feb 02 13:23 ../
        -rwxrwx--- 1 user user 1275 Feb 02 11:22 db_backup.sh*
        -rwxrwx--- 1 user user 1652 Feb 02 11:22 db_restore.sh*
        ...
    
  2. Создайте директорию там, где будет сохранен архив, например:

    user@server: ~/teamstorm/scripts $ mkdir dumps
    user@server: ~/teamstorm/scripts $ ls -lha
    total 28
    drwxrwxr-x 3 user user 4096 Feb 02 13:24 ./
    drwxrwxr-x 4 user user 4096 Feb 02 13:23 ../
    -rwxrwx--- 1 user user 1275 Feb 02 11:22 db_backup.sh*
    -rwxrwx--- 1 user user 1652 Feb 02 11:22 db_restore.sh*
    drwxr-xr-x 2 user user 4096 Feb 02 13:26 dumps/
    ...
    
  3. Запустите скрипт db_backup.sh, указав целевую директорию, например:

    user@server: ~/teamstorm/scripts $ ./db_backup.sh ./dumps
    Creating backup: teamstorm_migrations_db_ 2025-02-02_04-00-00.bak container: database_service database: teamstorm_migrations_db
    Successfully copied 2.56kB to /home/tester/deploy/teamstorm/scripts/dumps/teamstorm_migrations_db_ 2025-02-02_04-00-00.bak
    Creating backup: teamstorm_attachment_db_ 2025-02-02_04-00-00.bak container: database_service database: teamstorm_attachment_db
    Successfully copied 9.22kB to /home/tester/deploy/teamstorm/scripts/dumps/teamstorm_attachment_db_ 2025-02-02_04-00-00.bak
    Creating backup: teamstorm_comment_db_ 2025-02-02_04-00-00.bak container: database_service database: teamstorm_comment_db
    Successfully copied 44kB to /home/tester/deploy/teamstorm/scripts/dumps/teamstorm_comment_db_ 2025-02-02_04-00-00.bak
    Creating backup: teamstormdb_ 2025-02-02_04-00-00.bak container: database_service database: teamstormdb
    Successfully copied 486kB to /home/tester/deploy/teamstorm/scripts/dumps/teamstormdb_ 2025-02-02_04-00-00.bak
    

В процессе выполнения вы увидите сообщения о создании архивов для каждой базы данных. По окончании будет создан конечный архив, сжатый с использованием aрхиватора gzip:

./dumps/teamstorm_wiki_db_ 2025-02-02_04-00-00.bak
./dumps/teamstorm_workspace_db_ 2025-02-02_04-00-00.bak
./dumps/teamstormdb_ 2025-02-02_04-00-00.bak
./dumps/teamstorm_ 2025-02-02_04-00-00_backup.tgz

Процесс по созданию архива для кластера TeamStorm успешно завершен.

Создание файлового архива необходимых разделов docker-контейнеров

Для создания копий разделов контейнеров кластера нужно иметь привилегии пользователя root , так как по-умолчанию только root имеет доступ к этим разделам файловой структуры.

  1. Перейдите в директорию, где хранятся разделы docker-контейнеров. По умолчанию это /var/lib/docker/volumes/

    admin@server: ~/testit/scripts $ sudo -s
    root@server: ~/testit/scripts $ cd /var/lib/docker/volumes/
    root@server: /var/lib/docker/volumes/ $ ls -lha | grep teamstorm
    drwx-----x 3 root root     19 Feb 02 16:50 teamstorm_database-service-volume
    drwx-----x 3 root root     19 Feb 02 16:50 teamstorm_minio
    drwx-----x 3 root root     19 Feb 02 16:50 teamstorm_minio-export
    drwx-----x 3 root root     19 Feb 02 16:50 teamstorm_minio-tls
    drwx-----x 3 root root     19 Feb 02 16:50 teamstorm_rabbitmq-certificates-volume
    drwx-----x 3 root root     19 Feb 02 16:50 teamstorm_rabbit-volume
    drwx-----x 3 root root     19 Feb 02 16:50 teamstorm_redis
    drwx-----x 3 root root     19 Feb 02 16:50 teamstorm_redis-tls
    drwx-----x 3 root root     19 Feb 02 16:54 teamstorm_ssl-volume
    drwx-----x 3 root root     19 Feb 02 16:50 teamstorm_trusted-certificates-volume
    
  2. Заархивируйте необходимые директории с помощью tar, учитывая, что архивация вложений может занять существенное время и зависит от размера директории teamstorm_minio например:

    root@server: /var/lib/docker/volumes/ $ tar -czvf volumes_backup.tgz
                                                            ./teamstorm_ssl-volume \
                                                            ./teamstorm_trusted-certificates-volume \
                                                            ./teamstorm_minio
    

ВНИМАНИЕ

В данном примере указаны разделы, содержащие все данные, которые находятся в хранилище S3 minio, а также сертификаты SSL, которые вы, возможно, использовали для настройки HTTPS соединения.

Укажите другие разделы, если вы также их используете.

Финальным шагом должно быть сохранение трех файлов архива в ваше хранилище резервных копий. При необходимости, процедуру можно автоматизировать с помощью crontab.