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

Резервное копирование ПО Gitflic


Внимание !

Для выполнения резервного копирования вам необходимы утилиты

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

  1. Установите необходимые утилиты

    sudo apt update && sudo apt install postgresql-common postgresql-client redis-tools rsync s3cmd -yq
    
  2. Остановите ПО GitFlic

  3. Выполните резервное копирование базы данных postgresql, с помощью утилиты pg_dump

    PGPASSWORD=<Пароль от базы данных> pg_dump -h <Адресс postgresql> -d <имя базы данных gitflic> -U <Роль для БД giflic> -b -v -f dump.sql
    
    PGPASSWORD=<Пароль от базы данных> pg_dump -h <Адресс postgresql> -d <имя базы данных gitflic> -U <Роль для БД giflic> -F c -b -v -f dump.restore
    
  4. Выполните резервное копирование базы данных redis, путем копирования файла бд dump.rdb

    redis-cli <Параметры подключения БД> save
    cp /var/lib/redis/dump.rdb ./dump.rdb
    
  5. Скопируйте статические данные сервера GitFlic. Директории img, repo, cicd, releases, registry по умолчанию

    for d in img repo cicd releases registry; do
        cp -r /var/gitflic/$d ./
    done
    
    for d in img repo cicd releases registry; do
        rsync /var/gitflic/$d -avxH --delete-during <имя пользователя>@<адресс сервера>:backup/$d
    done
    
    • В случае если у вас настроены бакеты s3, выполните резервное копирование бакетов.
    • Для работы утилиты s3cmd, её потребуется предварительно сконфигурировать с соотвествии с вашим провайдером s3 хранилища
    s3cmd sync "s3://<имя бакета>/" ./ 
    
  6. Скопируйте файлы сертификатов

    cp -r /opt/gitflic/cert ./
    

Восстановление данных

  1. Установите необходимые утилиты

    sudo apt update && sudo apt install postgresql-common postgresql-client redis-tools rsync s3cmd -yq
    
  2. Остановите ПО GitFlic.

  3. Воcстановите базу данных postgres

    3.1. Подключитесь с помощью утилиты psql к базе данных gitflic

    ``` shell
     PGPASSWORD=<Пароль от базы данных> psql -h <Адресс postgresql> -d <имя базы данных gitflic> -U <Роль для БД giflic>
    ```
    

    3.2. Удалите таблицы в базе данных

    ``` sql
    DO $$ 
    DECLARE 
        r RECORD; 
    BEGIN 
        FOR r IN (SELECT tablename FROM pg_tables WHERE schemaname = 'public') LOOP 
            EXECUTE 'DROP TABLE IF EXISTS ' || quote_ident(r.tablename) || ' CASCADE'; 
        END LOOP; 
    END $$; \q
    ```
    

    3.3. Восстановите таблицы из dump файла

    ``` shell
    PGPASSWORD=<Пароль от базы данных> psql -h <Адресс postgresql> -d <имя базы данных gitflic> -U <Роль для БД giflic> < dump.sql
    ```
    

    Вы полните команду на восстановление

    PGPASSWORD=<Пароль от базы данных> pg_restore -h <Адресс postgresql> -d <имя базы данных gitflic> -U <Роль для БД giflic> -c --if-exists dump.restore
    
  4. Восстановите базу данных redis/keydb

    1. Остановите базу данных

      systemctl stop redis-server
      
    2. Скопируйте файл с дампом базы в рабочую директорию

      cp dump.rdb /var/lib/redis/dump.rdb
      
    3. Запустите базу данных

      systemctl start redis-server
      
  5. Восстановите статические данные ПО гитфлик

    for d in img repo cicd releases registry; do
        cp -r $d /var/gitflic/
    done
    
    for d in img repo cicd releases registry; do
        rsync <имя пользователя>@<адресс сервера>:backup/$d -avxH --delete-during  /var/gitflic/$d 
    done
    
    • В случае если у вас настроены бакеты s3, выполните восстановление бакетов.
    • Для работы утилиты s3cmd, её потребуется предварительно сконфигурировать с соотвествии с вашим провайдером s3 хранилища
    s3cmd sync ./ "s3://<имя бакета>/"
    
    1. Восстановите файлы сертификатов
    cp -r ./cert /opt/gitflic/cert