Open edX е проект с отворен код за онлайн обучение, разработен от екипа на MIT и Харвард. Това е уеб базирано приложение с много компоненти, като насочване към студентите, създаване на курсове, предаване на курсове и управление на съдържанието.
Open edX е изграден в Python и използва Django като уеб рамка. Той използва MongoDB като бекенд на база данни. Когато изграждате и настройвате Open edX среда, трябва да се мисли за времето на работа на услугата, тъй като платформата се използва широко от студентите и обучаемите като отворена платформа.
Високата наличност е задължителна за базите данни на MongoDB, освен сървъра на приложения. За възстановяване след бедствие стратегията за стабилно архивиране е ключова, за да знаете, че можете да възстановите данните, ако нещо наистина се обърка.
В този блог ще прегледаме как да архивирате вашата база данни Open edX MongoDB.
Подготовка на хранилището за архивиране
Първото нещо, което трябва да направим, е да подготвим хранилището за архивирането на MongoDB. Можете да организирате архивирането на същата инфраструктура като услугите Open edX и след това да ги архивирате извън сайта. Можете да използвате Storage Area Network (SAN) или Network Attached Storage, където е монтиран към един от сървърите на MongoDB. AWS предоставя проста услуга за съхранение, наречена S3, за да архивирате вашите архиви, докато Google Cloud Platform има Cloud Storage.
Това е услуга при поискване и моделът на ценообразуване се основава на размера на GiB на резервното ви копие. За безопасност можете поне да поставите резервното си копие на базата данни Open edX в 2 различни области; който е във вашата предпоставка и в облака.
Ръчно архивиране за MongoDB
Обикновено архивирането за базите данни на MongoDB е с помощта на помощна програма mongodump, която се включва, когато инсталирате MongoDB сървър. Можете да направите резервно копие на един от сървърите на MongoDB, просто стартирайте mongodump, както е показано по-долу:
$ mongodump --db edxapp --out /backups/open-edx/`date +"%m-%d-%y"`
2021-01-11T11:23:42.541-0500 writing edxapp.module to /backups/open-edx/01-11-21/edxapp/module.bson
2021-01-11T11:23:42.878-0500 writing edxapp.module metadata to /backups/open-edx/01-11-21/newdb/module.metadata.json
2021-01-11T11:23:42.923-0500 done dumping edxapp.module (25359 documents)
2021-01-11T11:23:42.945-0500 writing newdb.system.indexes to /backups/open-edx/01-11-21/edxapp/system.indexes.bson
……
Той ще създаде резервно копие на хоста MongoDB, можете да имате скрипт за преместване на архивните файлове в друго хранилище.
Архивиране на MongoDB за Open edX с помощта на ClusterControl
ClusterControl поддържа архивиране на MongoDB за вашата Open edX платформа. Той поддържа mongodump и току-що добавихме поддръжка за нов метод за архивиране, наречен PBM (Percona Backup for MongoDB), който би бил по-подходящ за разчленени MongoDB клъстери. Правенето на архивиране с помощта на mongodump в ClusterControl е много лесно с помощта на GUI-базиран съветник. Изберете раздела Архивиране и след това Създаване на архив. Има две опции, които можете да изберете, можете незабавно да създадете резервно копие или да планирате архивирането.
И след това просто щракнете върху Продължи:
Изберете mongodump като резервен метод и след това запишете директорията за местоположение, където искате да поставите резервното копие. В тази стъпка можете да използвате мрежа за съхранение или мрежово прикачено хранилище, което е монтирано към вашия MongoDB сървър.
ClusterControl също поддържа архивиране в облака, в момента поддържаме Amazon Web Services (AWS), Google Cloud Platform и Microsoft Azure.
Можете също да активирате криптиране за вашето архивиране, това е особено важно, ако се архивират в облака. След това просто натиснете Създаване на архив, това ще задейства нова задача за архивирането, както е показано по-долу:
Можете също да използвате Percona Backup за MongoDB за последователно архивиране на вашия MongoDB Replicaset и разчленен клъстер.. Просто изберете percona-backup-mongodb като метод за архивиране, той изисква от вас да инсталирате агент на всеки възел и споделено хранилище, което да се монтира на всеки възел на MongoDB.