Open edX 的備份與還原
Open edX 是開放原始碼的線上教學平台,
可以除了線上授課之外,
系統的備份與還原也是很重要的,
今天就來教大家:
Open edX 的備份與還原
Open edX 來自哈佛與麻省理工學院,
提供優質的線上學習平台,
雖說為開源專案,
官方有撰寫技術文件,
但許多細節與錯誤並沒有及時更正,
只能靠廣大使用者分享其解決方案。
在全站備份部分,
官方建議使用底下 script 檔:
#!/bin/bash
MYSQL_CONN="-uroot -p"
echo "Reading MySQL database names..."
mysql ${MYSQL_CONN} -ANe "SELECT schema_name FROM information_schema.schemata WHERE schema_name NOT IN ('mysql','information_schema','performance_schema', 'sys')" > /tmp/db.txt
DBS="--databases $(cat /tmp/db.txt)"
NOW="$(date +%Y%m%dT%H%M%S)"
SQL_FILE="mysql-data-${NOW}.sql"
echo "Dumping MySQL structures..."
mysqldump ${MYSQL_CONN} --add-drop-database --skip-add-drop-table --no-data ${DBS} > ${SQL_FILE}
echo "Dumping MySQL data..."
# If there is table data you don't need, add --ignore-table=tablename
mysqldump ${MYSQL_CONN} --no-create-info ${DBS} >> ${SQL_FILE}
for db in edxapp cs_comments_service; do
echo "Dumping Mongo db ${db}..."
mongodump -u admin -p -h localhost --authenticationDatabase admin -d ${db} --out mongo-dump-${NOW}
done
tar -czf openedx-data-${NOW}.tgz ${SQL_FILE} mongo-dump-${NOW}
執行後將 MySQL與 Mongo資料庫 都備份並壓縮到名為 openedx-data-[日期].tgz,
MySQL部分為 edxapp 與 edxapp_csmh 兩個資料庫,
在還原之前,
必須先停用所有服務,
sudo /edx/bin/supervisorctl stop all
解開壓縮檔後就能夠直接還原:
$ tar -xvf openedx-data-20200411T154750.tgz
$ mysql -uroot -p < mysql-data-20200411T154750.sql
$ mongorestore -u admin -h localhost –authenticationDatabase admin –drop -d edxapp mongo-dump-20200411T154750/edxapp
$ mongorestore -u admin -h localhost –authenticationDatabase admin –drop -d cs_comments_service mongo-dump-20200411T154750/cs_comments_service
資料庫密碼的話請依照伺服器設定修改,
參照安裝時保留的 my-passwords.yml ,
或者到 /edx/app/edxapp/lms.auth.json 中尋找,
如果是部分還原的話,
可透過資料庫 GUI 工具來執行會比較方便,
例如 mysql-workbench 此類工具。
Open edX 的版本經常更新,
更新的資料搬移,
操作的步驟與上述步驟雷同。
還原之後必須再執行migrate,
先進入虛擬環境,
. /edx/app/edx_ansible/venvs/edx_ansible/bin/activate
接著執行 migrate 即可。
$ /edx/app/edx_ansible/edx_ansible/util/install/native.sh --tags migrate
================================
分享與讚美,是我們繼續打拼的原動力.
若文章對您有幫助,望請不吝按讚或分享.
或者對影片有興趣可以訂閱頻道接收通知
================================
YouTube 頻道
FB 粉絲專頁
================================