The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:
У меня есть несколько ресурсов данных, которые существуют только в одном месте, и которые я действительно не хочу потерять. Например, у меня есть хостинговый PHP-сайт и база данных MySQL, размещенная в том же месте. У меня также есть база данных NoSQL в Amazon DynamoDB, база данных PostgreSQL в Heroku и так далее… Ну, их действительно много. Как их резервировать - всегда был для меня вопрос.
Самый простой способ - арендовать дешевый сервер за 15 долларов в месяц (или использовать уже существующий) и настроить Cron для запуска пользовательского bash-скрипта, который будет извлекать данные из базы данных MySQL, упаковывать их и загружать в некоторое безопасное место, такое как хранилище Amazon S3. Затем мне потребуется еще один скрипт для базы данных PostgreSQL и еще один для FTP-архива файлов и так далее.
На самом деле, именно так я делал это много лет. Недостатки этого решения всегда были одинаковыми:
Мне нужно было убедиться, что сервер всегда работает и доступен (Linux далеко не надежна).
Я также должен был сделать резервную копию своих скриптов.
Мне приходилось каждый раз подключаться к серверу по SSH, когда я хотел изменить скрипт, помнить, где они находятся, как они запускаются и т.д.
Самая большая проблема заключается в том, что каждый владелец источника данных сталкивается с одним и теми же проблемами. “Почему я не могу создать хостинговое решение для этих скриптов, чтобы помочь всем сохранить свои данные?” - я спрашивал себя много лет. “Ну, я могу,” - был ответ всего несколько недель назад, и я создал ThreeCopies.
Это очень простой хостинговый исполнитель bash-скриптов, которые вы редактируете через веб-интерфейс. Затем один из наших серверов запускает контейнер Docker (yegor256/threecopies - изображение, вот Dockerfile
). и выполняет ваш скрипт внутри.
Скрипт запускается каждый час, каждый день и каждую неделю. Вот почему он называется “три копии”. Хорошей практикой для резервного копирования данных является создание отдельных копий с разной регулярностью. Кроме того, возможно, вы захотите поместить разные данные в разные копии. Чтобы помочь вашему скрипту понять, какая копия работает в данный момент, мы передаем в него переменную окружения $period
со значением hour
, day
или week
.
Как ваш скрипт извлекает данные, упаковывает и архивирует их, зависит от данных. Я создал краткое пособие для наиболее распространенных сценариев. Вот как, например, я резервирую базу данных MySQL для thePMP:
Выходные данные сценария доступны через веб-интерфейс, и это еще одно преимущество данного решения. Легко отслеживать, если что-то пошло не так, и перезапустить сценарий. Все журналы доступны через браузер. Нет SSH, нет терминалов.
Я бы сказал, что это легкая версия AWS Data Pipeline. ThreeCopies делает точно то же самое, но его легче настроить и он дешевле. Я беру $0.01 за каждый час выполнения сценария. И я фактически беру оплату за секунды, в то время как AWS всегда берет плату за полный час. За $5.00 вы получаете 500 часов. Например, сценарий, который вы видите выше, занимает около 5 минут для завершения (база данных не очень большая). Если вы пропустите ежечасные выполнения, как я сделал выше, вы будете использовать 170 минут серверного времени каждый месяц, что обойдется вам примерно в $0.34 в год! Это намного дешевле, чем сервер с его мониторингом, на мой взгляд.
Еще одна вещь, прежде чем вы уйдете. ThreeCopies написан на Java 8 и является открытым исходным кодом. Найдите его на GitHub. Смело изучайте код, находите ошибки и вносите исправления или улучшения.
Translated by ChatGPT gpt-3.5-turbo/42 on 2023-12-17 at 15:26