Резервное копирование и восстановление данных является чрезвычайно важной частью запуска серверов. Это виртуальная сеть безопасности против большинства плохих вещей, которые могут произойти. Сделали плохое изменение конфигурации? Восстановите резервную копию. Испортил обновление? Восстановите резервную копию. Поврежденные диски? Восстановите резервную копию.
Мало того, резервные копии также могут пригодиться при переносе данных в другие системы, например, переносить сервер разработки в производственную среду или наоборот 🔁
Чтобы сделать весь этот процесс максимально простым, мы написали это простое и удобное руководство, чтобы объяснить все, что вам нужно знать о резервном копировании и восстановлении экземпляра Appwrite.
Appwrite разбит на несколько разделов, а большая часть Appwrite не имеет состояния. Это означает, что Appwrite на самом деле имеет только две основные вещи, которые вам нужны для резервного копирования: одна — база данных Appwrite (MariaDB), а другая — тома Docker, которые хранят функции и загрузки. Остальное — Appwrite может автоматически обрабатывать и регенерировать.
Обратите внимание, что все эти команды должны выполняться в том же каталоге, что и Appwrite’s Docker-Compose.yml
С учетом всего сказанного, давайте начнем! 😊
💾 Резервное копирование базы данных MariaDB
В связи с тем, что Appwrite использует изображение Docker Mariadb, чрезвычайно легко сбросить всю базу данных только одной командой, а также для восстановления дампа.
Создание резервного копирования базы данных — это всего лишь одна команда:
docker-compose exec mariadb sh -c 'exec mysqldump --all-databases --add-drop-database -u"$MYSQL_USER" -p"$MYSQL_ROOT_PASSWORD"' > ./dump.sql
Вдаваясь в глубину, эта команда делает пару вещей:
- Docker-Compose запускает временную оболочку на контейнер MariaDB, чтобы начать работу
- Он работает
mysqldump
На сервере с двумя конкретными параметрами-все-датабазы
и-ДАД-ДОП-ДАТАБАЗА
Они важны, поскольку они гарантируют, что когда резервное копирование восстанавливается старые данные не перекрываются с помощью новых данных. - Вывод
mysqldump
переворачивается вDilm.sql
файл. Это твоя резервная копия ✅
✍ Восстановление базы данных MariaDB
Восстановление базы данных так же простое, а также требуется только одна команда:
docker-compose exec -T mariadb sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < dump.sql
Эта команда очень проста, как только вы ее сломаете:
- Docker-Compose запускает временную оболочку на контейнер MariaDB, чтобы начать работу
- Используя
mysql
Команда мы восстанавливаем свалку через трубу
💿 Резервное копирование томов Docker
Appwrite хранит различные вещи в томах Docker. Это включает в себя загрузки ваших файлов и данные облачных функций и объемы Docker позволяет нам легко координировать данные между центральным контейнером Appwrite и нашими различными работниками Appwrite. Загрузки особенно важны для резервного копирования, поскольку они включают в себя все загрузки файлов вашего приложения, эти команды могут занять некоторое время, чтобы запустить в зависимости от того, сколько данных вам нужно для резервного копирования.
Перед запуском этих команд настоятельно рекомендуется Выберите экземпляр Appwrite Чтобы убедиться, что вы получите полную резервную копию.
Для резервного копирования громкости функций команда:
mkdir -p backup && docker run --rm --volumes-from "$(docker-compose ps -q appwrite)" -v $PWD/backup:/backup ubuntu bash -c "cd /storage/functions && tar cvf /backup/functions.tar ."
и для резервного копирования громкость загрузки команда:
mkdir -p backup && docker run --rm --volumes-from "$(docker-compose ps -q appwrite)" -v $PWD/backup:/backup ubuntu bash -c "cd /storage/uploads && tar cvf /backup/uploads.tar ."
Обе эти команды делают подобные вещи, и когда вы их разбиваете, они довольно просты.
- Начните новый контейнер Docker. Этот контейнер Docker имеет несколько специальных вариантов
--rm
Удалит контейнер, как только он будет выполнен. Причина, по которой мы хотим, заключается в том, что этот контейнер используется только для упаковки нашего резервного копирования и передачи его хост -машине.
-Volume-From
Этот флаг особенный, так как он установит все объемы контейнера, который мы даем. Чтобы получить идентификатор контейнера, который мы хотим, мы используем $ (Docker -Compose PS -Q Appwrite)
Чтобы получить идентификатор в команде
-v
Этот флаг используется для установки громкости на наш новый контейнер, который даст нам доступ к резервной папке, которую мы создали, используя mkdir
командовать в начале
Ubuntu
это изображение, на котором мы основываем наш новый контейнер на
- Наконец, с помощью этой команды мы меняем каталоги в обычную точку Mount Appwrite для загрузки и создаем тарбол, который будет создан в каталоге резервного копирования, где мы сможем получить к нему доступ.
Как только эти команды запускаются, вы должны найти новый резервная копия
Папка, которая содержит uploads.tar
и functions.tar
Это ваши резервные копии. Держите их в безопасности.
📝 Восстановление томов Docker
Восстановление объемов вашего Appwrite также довольно просто. Переместите папку резервного копирования, которую вы только что создали на машину назначения рядом с Docker-compose.yml
файл и просто запустите следующие команды, чтобы восстановить резервную копию.
Обратите внимание, что экземпляр Appwrite должен быть выключен во время выполнения этих команд.
Восстановление функций Том:
docker run --rm --volumes-from "$(docker-compose ps -q appwrite)" -v $PWD/backup:/restore ubuntu bash -c "cd /storage/functions && tar xvf /restore/functions.tar --strip 1"
Восстановление громкости загрузки:
docker run --rm --volumes-from "$(docker-compose ps -q appwrite)" -v $PWD/backup:/restore ubuntu bash -c "cd /storage/uploads && tar xvf /restore/uploads.tar --strip 1"
Эта команда создает новый временный контейнер Docker, такой как команда резервного копирования, но вместо этого извлекает смолу обратно в функции и загружает конечную точку, которая восстановит резервную копию.
⭐ В заключение
Чтобы создать полную резервную копию Appwrite, вы захотите сделать резервную копию MariaDB и два тома, указанных здесь. После того, как вы это сделаете, убедитесь, что сохранить его в безопасности, лучшее резервное копирование будет хранить резервную копию в нескольких местах, включая локальные и в нескольких облаках. Как и в любом облачном нативном приложении, убедитесь, что вы регулярно выполняете резервное копирование экземпляра Appwrite, чтобы убедиться, что вы никогда не находитесь в ситуации, когда вам нужно потерять данные из -за сбоя сервера.
Весь этот процесс можно легко сделать, чтобы легко помочь перенести установку Appwrite, просто копировав файлы резервного копирования на другой сервер и выполнив шаги восстановления.
Мы надеемся, что вам понравилась эта статья! Мы любим вклад и призываем вас взглянуть на наш открытые вопросы и Продолжающиеся RFCS Анкет
Если вы застряли где -нибудь, не стесняйтесь обратиться к нам на нашем Дружественные каналы поддержки управлять людьми 👩 💻
Вот несколько удобных ссылок для получения дополнительной информации:
Спасибо Тейлор Вик Для изображения сервера.
Оригинал: «https://dev.to/appwrite/appwrite-in-production-backups-and-restores-4beg»