Здесь описано резервное копирование платформы: где хранятся копии, как настроить хранение в S3-совместимом хранилище, ротацию, ручное создание копии и восстановление из неё.
Приложение самостоятельно создаёт резервную копию – дамп базы данныхПолная выгрузка содержимого базы данных в файл для резервной копии или восстановления и пользовательские файлы. Время создания выбирается случайно каждый день в промежутке с 03:00 до 07:00 по времени pod приложения. Резервная копия содержит данные, нужные для восстановления полного состояния приложения на момент её создания.
Хранение резервных копий и хранение пользовательских файлов приложения настраиваются отдельно.
Переменная BACKUP_DISC в base.yaml управляет только местом хранения архивов резервных копий:
BACKUP_DISC: "backup" – хранение в PV-дискеПостоянное место на диске сервера, которое не пропадает при перезапуске приложения приложенияBACKUP_DISC: "backup-s3" – хранение в S3-совместимом хранилищеВнешнее хранилище файлов (как облачный диск), которое можно подключить вместо диска сервераЕсли пользовательские файлы приложения тоже нужно хранить в S3-совместимом хранилище, понадобятся дополнительные настройки.
Резервная копия – zip-архив с паролем с именем вида hostname_*_date.zip. Пароль задаётся в секрете или в файле base.yaml, в зависимости от варианта развёртывания приложения.
В k3s-варианте развёртывания резервные копии можно найти на сервере по пути:
/var/lib/rancher/k3s/storage/pvc-name-backend-app-pvc/backup/%your_hostname%/%file%.zip
Здесь %file% – имя хоста и дата-время создания резервной копии.
При хранении резервных копий в S3-совместимом хранилище дополнительно укажите параметры хранилища в файле values.yaml или base.yaml, в разделе environment:
| Переменная | Что задаёт |
|---|---|
BACKUP_DISC |
backup-s3 – включает хранение резервных копий в S3 |
AWS_ACCESS_KEY_ID |
Ключ доступа к S3-хранилищу |
AWS_SECRET_ACCESS_KEY |
Секретный ключ доступа к S3-хранилищу |
AWS_DEFAULT_REGION |
Регион S3-хранилища |
AWS_BUCKET |
Имя бакета |
AWS_URL |
URL S3-хранилища |
AWS_ENDPOINT |
Endpoint S3-хранилища |
Приложение самостоятельно удаляет старые резервные копии по количеству копий и их общему размеру. Значения по умолчанию:
Чтобы изменить любое из значений, добавьте нужные переменные в файле values.yaml или base.yaml, в разделе environment:
| Переменная | Что задаёт |
|---|---|
BACKUP_KEEP_DAILY_BACKUPS_FOR_DAYS |
Количество ежедневных копий |
BACKUP_KEEP_WEEKLY_BACKUPS_FOR_WEEKS |
Количество еженедельных копий |
BACKUP_KEEP_MONTHLY_BACKUPS_FOR_MONTHS |
Количество ежемесячных копий |
BACKUP_KEEP_YEARLY_BACKUPS_FOR_YEARS |
Количество ежегодных копий |
BACKUP_DELETE_OLDEST_BACKUPS_WHEN_USING_MORE_MEGABYTES_THAN |
Максимальный общий размер хранимых копий в МБ |
Чтобы создать резервную копию в любой момент, выполните в контейнере приложения (pod приложения) команду:
php artisan backup:run
Готовая резервная копия попадёт в хранилище, указанное в настройках приложения.
Перед восстановлением:
Способ восстановления пользовательских файлов зависит от storage-режимаГде именно хранятся файлы сотрудников: на диске сервера или во внешнем хранилище приложения:
pv – файлы приложения находятся в PVC и доступны в backend pod по пути /var/www/html/storage.s3 – файлы приложения находятся в S3-совместимом хранилище, backend PVC для /var/www/html/storage не используется.Чтобы восстановить резервную копию:
public с файлами и файл базы данных postgresql-dreamteam_db.sql.public:
pv – скопируйте содержимое public в папку /var/www/html/storage/app/ приложения;s3 – загрузите содержимое public в S3-бакет, указанный в параметрах файлового хранилища приложения.app:chown -R 82:82 app/
PGPASSWORD=$DB_PASSWORD psql -h $DB_HOST -U $DB_USERNAME -d $DB_DATABASE -f %path/to/db_dump.sql%
После ключа -f укажите путь к файлу базы данных из backup.