Резервні копії
Кожну ніч Kept робить один знімок restic: зашифрований паролем, який ви обираєте, дедуплікований (ніч без нових даних додає майже нічого) і відправлений у місце, яке не є власним диском сервера.
Що містить знімок
Section titled “Що містить знімок”- База даних, вивантажена з одного узгодженого моменту, з маніфестом кількості рядків кожної таблиці та дайджестом її даних, щоб відновлення могло довести, що повернулося рівно те, що було.
- Файли (фото, квитанції, документи), коли вони зберігаються на диску сервера. За зберігання файлів у S3 їх там немає: див. нижче.
- Читабельна копія кожної локації: вебсторінки, електронні таблиці, мініатюри та квитанції, які відкриваються у браузері лише за допомогою restic. Див. прочитайте свій інвентар лише за допомогою restic.
Ключі не в резервній копії. Зберігайте набір для відновлення в іншому місці.
Куди її можна відправити
Section titled “Куди її можна відправити”| Ціль | Задається | Репозиторій restic |
|---|---|---|
| Каталог: інший диск або мережевий ресурс NAS, змонтований на сервері | KEPT_BACKUP_DIR (абсолютний, поза KEPT_DATA_DIR) |
<directory>/restic |
| Бакет, сумісний із S3: AWS або S3-кінцева точка іншого постачальника | KEPT_BACKUP_S3_BUCKET та інші KEPT_BACKUP_S3_* |
restic/ під KEPT_BACKUP_S3_PREFIX |
| Сервер SFTP | KEPT_BACKUP_SFTP (синтаксис sftp: restic), KEPT_BACKUP_SFTP_KEY_FILE, KEPT_BACKUP_SFTP_KNOWN_HOSTS |
розташування, яке ви задаєте |
Задайте одну ціль. Краще інший комп’ютер або інший фізичний майданчик: каталог на тому самому диску, що й дані Kept, відхиляється, а сторінка статусу попереджає, коли ціль ділить диск із ними. Кінцеві точки S3 Backblaze B2 і Cloudflare R2 мають працювати, але їх не перевіряли. SFTP фіксує ключ хоста сервера з файлу known-hosts і з’єднується лише тоді, коли він збігається.
Увімкнення
Section titled “Увімкнення”Адміністратори сервера задають ціль і пароль у Адміністрування → Резервні копії, через HTTPS, після підтвердження набору для відновлення. «Тест» перевіряє, чи Kept може відкрити (або створити) репозиторій; «Запустити зараз» одразу запускає її. Змінна середовища має пріоритет над екраном і показується там як заблокована, тож оператор може закріпити ціль у розгортанні.
Пароль має щонайменше 12 символів (KEPT_BACKUP_PASSWORD або задається на екрані).
Без пароля резервної копії не буде: Kept ніколи не записує незашифровану резервну копію. Якщо втратити
пароль, резервна копія буде нечитабельною, тому він є в наборі для відновлення.
Резервне копіювання виконується у воркері від імені власника бази даних, тож воркеру також потрібен KEPT_OWNER_DATABASE_URL.
З Compose, compose.yaml уже передає кожну змінну KEPT_BACKUP_* з .env
до Kept і до migrate (який робить знімок перед оновленням); розташований поруч compose.override.yaml
додає логін власника, а для цілі-каталогу — монтування на обох:
services: kept: environment: KEPT_OWNER_DATABASE_URL: postgres://kept_owner:${KEPT_DB_OWNER_PASSWORD:-}@db:5432/kept KEPT_DB_OWNER_PASSWORD_FILE: /owner/kept_owner volumes: - kept-owner:/owner:ro - /mnt/backup/kept:/backups migrate: volumes: - /mnt/backup/kept:/backupsПароль власника береться з тому kept-owner, де його зберігає початкове налаштування (інсталяція
до 1.13.0 з KEPT_DB_OWNER_PASSWORD у .env використовує його замість цього, а рядок файлу
нічого не робить).
Потім або задайте ціль і пароль на екрані, або заблокуйте їх у .env
(KEPT_BACKUP_DIR=/backups, KEPT_BACKUP_PASSWORD=…).
Каталог має належати користувачу Kept:
sudo mkdir -p /mnt/backup/keptsudo chown 10001:10001 /mnt/backup/keptsudo chmod 700 /mnt/backup/keptКоли і як довго
Section titled “Коли і як довго”- Коли: щоночі в час, заданий в Адміністрування → Резервні копії,
HH:MMу UTC (типово02:30). Новий час діє з наступної ночі, без перезапуску;KEPT_BACKUP_TIMEзамість цього фіксує його. - Запустити зараз одразу запускає одне копіювання; повторне натискання, поки воно чекає або виконується, відхиляється («Резервна копія вже виконується») замість того, щоб поставити в чергу вдруге. Резервна копія, перервана перезапуском або нестачею пам’яті, цього не блокує; наступний запуск позначає її перерваною.
- На маленькій машині (менше ніж 4 ГБ або ліміт контейнера менше ніж 4 ГБ) restic запускається
щонайбільше на двох ядрах з м’яким лімітом пам’яті;
GOMAXPROCSіGOMEMLIMITу середовищі Kept (з Compose,compose.override.yaml) перевизначають обидва. - Як довго їх зберігають: найновіший знімок з кожного з останніх 7 днів, 4 тижнів і 6
місяців (
KEPT_BACKUP_KEEP_DAILY,_WEEKLY,_MONTHLY).KEPT_BACKUP_KEEPальфа-версії читається як щоденна кількість для одного випуску. Зі знімків, зроблених перед оновленням, зберігаються останні 3. - Підозріло мала резервна копія (дамп менше ніж половина розміру останньої доброї, або значно менше речей, місць чи файлів) усе одно роблять, але тієї ночі нічого старого не видаляють і попереджають адміністраторів, тож погана ніч ніколи не витіснить добрі знімки.
Спостереження
Section titled “Спостереження”Адміністрування → Статус показує останню резервну копію та її вік, кількість знімків, розмір репозиторію, останнє тренування відновлення і диски. Адміністраторів попереджають поштою та push-сповіщеннями, коли:
| Сповіщення | Коли |
|---|---|
| Резервне копіювання не вдалося | запуск завершується невдало |
| Резервна копія застаріла | немає доброї резервної копії 36 годин за заданої цілі |
| Підозрілий розмір | запуск був значно меншим за останню добру |
| Мало місця на диску | диск даних або ціль-каталог заповнено на 85 % |
| Версіонування бакета вимкнено | файли в S3, а бакет не зберігає старих версій |
| Час для тренування відновлення | немає тренування відновлення 30 днів |
/metrics (з KEPT_METRICS_TOKEN) додає час останньої доброї резервної копії та використання дисків. Див.
моніторинг.
Коли файли зберігаються в S3
Section titled “Коли файли зберігаються в S3”restic робить резервні копії файлів на диску, а не об’єктів у бакеті. З KEPT_STORAGE=s3 знімок містить
базу даних, маніфест і читабельну копію, а бакет сам зберігає файли в безпеці:
увімкніть версіонування бакета (і, якщо ваш постачальник її має, реплікацію в інший регіон). Kept
перевіряє версіонування на кожному запуску і попереджає, поки воно вимкнене. Щотижнева перевірка і тренування відновлення
порівнюють хеш кожного файлу в маніфесті з бакетом.
Резервні копії альфа-версії
Section titled “Резервні копії альфа-версії”Резервні копії, зроблені до restic альфа-версією (runs/ і blobs/ поруч із новим каталогом restic/), більше
не записуються і залишаються відновлюваними через kept admin restore --legacy <id> ще один випуск. Видаліть
їх, щойно знімок restic пройде тренування відновлення.