Руководство по резервному копированию и снапшотам VPS
Сервер может выйти из строя из-за неудачного обновления, ошибки, вредоносного ПО или аппаратной проблемы. Хороший план сочетает снапшоты, резервные копии и проверенное восстановление. На ONIE Cloud Servers в Хошимине поддерживают снапшоты и резервное копирование, а для данных можно добавить дополнительный Block Storage.
Снапшот или бэкап
| Снапшот | Бэкап | |
|---|---|---|
| Что это | Сохранённое состояние диска на один момент | Отдельная копия сервера или его данных |
| Лучше всего подходит для | Быстрого отката перед обновлением или изменением конфигурации | Восстановления после потери, повреждения или удаления |
| Где хранится | Рядом с исходным сервером | На отдельном носителе |
| Скорость | Быстро создаётся и восстанавливается | Медленнее, зависит от объёма |
Используйте оба варианта: снапшот перед рискованными изменениями и плановые бэкапы для всего остального.
Правило 3-2-1
Храните 3 копии важных данных на 2 разных типах носителей, и 1 копию в другом месте. Снапшот на том же сервере сам по себе недостаточен.
Резервное копирование файлов
rsync копирует только изменившиеся данные:
rsync -aH --delete /var/www/ backup@backup-host:/srv/backups/www/restic создаёт зашифрованные резервные копии с дедупликацией для множества хранилищ:
sudo apt install -y restic
restic -r sftp:backup@backup-host:/srv/restic init
restic -r sftp:backup@backup-host:/srv/restic backup /var/www /etc
restic -r sftp:backup@backup-host:/srv/restic forget --keep-daily 7 --keep-weekly 4 --pruneРезервное копирование базы данных
Копируйте базу данных через дамп, а не через файлы работающих данных:
mysqldump --single-transaction --routines -u root wordpress | gzip > /var/backups/wordpress-$(date +%F).sql.gzДля PostgreSQL используйте pg_dump.
Автоматизация
Запускайте бэкапы из cron или таймера systemd и задайте политику хранения, чтобы старые копии удалялись:
sudo crontab -e
# every day at 02:30
30 2 * * * /usr/local/bin/backup.shПроверка восстановления
Бэкап, который никогда не восстанавливали, — это только предположение. Раз в месяц восстанавливайте данные на запасном сервере и проверяйте, что сайт и данные работают. Запишите шаги, чтобы любой член команды мог выполнить восстановление.
Перед крупными изменениями
Создайте снапшот, внесите изменение, протестируйте его и удалите снапшот, когда будете уверены. Это хорошо сочетается с безопасной настройкой SSH, а такая же привычка полезна при обновлении сайта на WordPress.
Часто задаваемые вопросы
How often should I back up?
Daily is common for sites and databases that change often. Back up more often if losing a day of data would hurt.
Are snapshots billed?
Snapshots and backups are billed by the space they use. See the current rates on the pricing page of the service.
Where should I store backups?
Not only on the same server. Use another location or provider so one failure cannot remove every copy.