У меня есть сервер EC2, на котором работает Sendy (массовая рассылка), и я хотел сделать резервные копии базы данных SQL. В настоящее время я могу загрузить файл backup.sql вручную через Virtualmin, но я хотел автоматизировать это.
Я смотрел на Glacier, так как он дешев, и мне не нужно регулярно получать резервную копию; это только в экстренных случаях. Я много смотрел в Интернете, и у меня возникают разные идеи о том, как это сделать. Некоторые говорят, что резервное копирование возможно только с S3 на Glacier. В моем случае это означает EC2 -> S3 -> Glacier, но мне действительно не нужен S3, и я считаю, что за него не нужно платить.
Можно ли автоматизировать отправку файла backup.sql из EC2 в Glacier без S3?
Или, если вы думаете, что есть лучший способ справиться с этим, тогда я открыт для идей.
Здесь есть два связанных сервиса AWS: - Amazon Glacier, недавно получивший название Amazon S3 Glacier, предназначен для долгосрочного корпоративного архивирования. Вам не следует использовать его, если вы полностью не разбираетесь в сервисе, хранилищах, архивах и т. Д. - Amazon S3 - гораздо более гибкий сервис, основанный на файлах / объектах. Он имеет несколько классов хранения, включая стандартный, нечастый доступ (IA), Glacier и глубокий архив. Это услуга, которую вам следует использовать.
Используя AWS S3, вы можете просто загрузить файл резервной копии. Вы можете использовать разные имена файлов в зависимости от даты или можете перезаписать старый файл и включить управление версиями.
Вы можете использовать инструмент инкрементного резервного копирования, например Restic, что снизит требования к хранилищу и может привести к устареванию резервных копий (например, дед, отец, сын схема). Если вы используете Restic, вы должны быть уверены, что не поместили файлы, такие как index, в класс ледника из-за времени отзыва - лучше всего хранить их в классе IA или аналогичном. Вы можете технически переместить файлы данных в класс типа ледника, но минимальное время хранения может свести на нет экономию. Простое сохранение файлов в классе глубокого архива S3 может быть проще и дешевле.
В любом случае добиться этого просто. У вас есть задание cron, которое выполняет экспорт базы данных, а затем использует S3 API для загрузки файла в S3. Вот как я это делаю для mysql с restic
mysqldump --skip-dump-date -h localhost db_name > /var/backups/database/database-name.sql
restic -q --repo s3:s3.amazonaws.com/bucketname/foldername backup /var/backups/database --exclude="*.tmp" --exclude="thumbnails" --cleanup-cache
В качестве альтернативы, если вы хотите выполнить базовую загрузку S3, в Windows я использую следующую командную строку - Linux аналогичен
aws s3 sync c:\backupfolder s3://bucket-name/ --profile AWS-cli-profile-name --storage-class DEEP_ARCHIVE --exclude *.txt
В обоих случаях я включаю ведение версий, но это особенно важно, если вы просто загружаете файлы без инкрементной резервной копии, такой как Restic. В этом случае вы, вероятно, захотите удалить старые версии, иначе со временем затраты могут значительно возрасти.