>[danger] **棄用提醒:**
> *由于看云對于免費用戶的限制愈發嚴苛,本文檔已經遷移至語雀。本文檔將不做維護。*
> **語雀地址**:[https://www.yuque.com/a632079/nodebb](https://www.yuque.com/a632079/nodebb)
*****
# 數據庫備份
對于一個論壇來說,最重要的資源就是數據庫,數據丟失會給論壇帶來毀滅性打擊,所以保證數據安全是站長的**第一要務**。本文將重點介紹數據庫的備份與恢復,最后將給出一個定時自動備份數據庫的腳本。
## MongoDB 備份與恢復
*注意:此處以`MongoDB 3.2`為例進行講解*
`MongoDB`作為`NoSQL`數據庫的著名代表,其官方文檔有這么幾個特點:準確、詳盡、及時、易讀、完善,所以如果出現了本教程沒有涵蓋到的問題,請參閱[官方文檔](https://docs.mongodb.com/manual/ "The MongoDB 3.2 Manual")。
### 備份
**備份命令如下所示:**
```
$ mongodump -u nodebb -p yourpassword --authenticationDatabase=nodebb -d nodebb
```
**命令解釋:**
* -u:用戶名,如果按照官方教程來做,則用戶名為`nodebb`
* -p:密碼
* --authenticationDatabase:等待進行驗證的數據庫,一般寫你的數據庫名
* -d:你的數據庫名,如果按照官方教程來做,則數據庫名為`nodebb`
以上命令會在當前目錄下生成`dump`目錄,在里面有一個叫`nodebb`的目錄,其內即為數據文件。
### 恢復
**恢復命令如下所示:**
```
$ mongorestore -u nodebb -p yourpassword --authenticationDatabase=nodebb -d nodebb --drop dump/nodebb
```
**命令解釋:**
* -u:用戶名,如果按照官方教程來做,則用戶名為`nodebb`
* -p:密碼
* --authenticationDatabase:等待進行驗證的數據庫,一般寫你的數據庫名
* -d:你的數據庫名,如果按照官方教程來做,則數據庫名為`nodebb`
* --drop dump/nodebb:如果不加`--drop`這個參數,那么數據庫內原有的數據不會被清除,導入時會遇到**數據重復!**會出現大量警告提示。加了這個參數就是先清掉數據庫原有的內容,再將備份導入。后面的`dump/nodebb`是你當時導出數據的目錄,這里用的相對路徑
### 自動備份
手動備份很麻煩,很不智能,還容易出錯,作為一個Geek是不允許這種事情發生的。于是有了下面的自動備份腳本,該腳本將在每天凌晨3點30分自動對數據庫進行備份,然后對備份后的數據文件進行壓縮打包,之后刪除三天前的歷史備份檔案,只保留最近三天的備份。你最終看到的就是備份目錄內只有最近三天的備份文件壓縮包。
```
backup_date=$(date +"%F") #獲取日期
cd /root/ #切換到當前用戶家目錄,你可以換成你的用戶目錄
/usr/bin/mongodump -u nodebb -p yourpassword --authenticationDatabase=nodebb -d nodebb #導出數據庫備份
tar -zcvf dump/${backup_date}.tar.gz dump/nodebb --remove-files #將導出的備份壓縮打包,并以日期命名壓縮包
find dump/ -mtime +3 | xargs rm -f #檢索三天前的備份壓縮包,將之刪除
echo $(date +"%F %H:%M:%S") Backup successfully ! >> log.backup #寫入日志
```
* 將上述腳本保存到`/root/script/`目錄下,并命名為`backup.sh`
* 使用命令`chmod u+x /root/script/backup.sh`為腳本添加可執行權限
* 運行命令`crontab -e`打開`crontab`的任務添加界面,加入下面這一行:
```
30 3 * * * /root/script/backup.sh
```
使用`crontab -l`就可以看到剛才添加的定時任務了。
*crontab的其他使用方法在此不多做解釋,如有其他問題請自行搜索解決。*
## Redis 備份與恢復
1、進入redis目錄
```
$ redis-cli
```
2.數據備份
```
> save
```
Redis 中,所有的數據庫數據都在` .rdb `文件中。在通常安裝的 Redis 上,主數據庫在 `/var/lib/redis/dump.rdb`。
把文件保存到安全的地方。
>[info] 編寫: [hao-lee](https://github.com/hao-lee)
維護: PA Team
審核: PA Team & NodeBB China
最后更新: 2017.08.08
- 序
- 贊助
- 導言
- 安裝
- 通過操作系統
- Windows + Mongodb/Redis
- Ubuntu/Debian + Redis/Mongodb
- CentOS + Redis
- CentOS + Mongodb
- FreeBSD/OpenBSD + Redis
- Arch Linux + Redis
- OSX + Redis
- 通過云服務
- 通過主機面板安裝
- AppNode
- CPanel
- 寶塔
- 使用
- FAQ
- 高級
- 運行 NodeBB
- 配置 Config.json
- 配置 Nginx
- 配置 MongoDB
- 更新 NodeBB
- 設置 Widgets
- 安裝 Yarn
- 更新 MongoDB
- 數據庫備份與恢復
- 重置管理員密碼
- 讓 NodeBB 支持搜索
- 優化
- 優化配置,提升NodeBB處理能力
- Google字體庫 -> 360公共前端庫
- Google字體庫 -> 中科大鏡像
- 海外VPS提升NodeBB訪問速度
- 通過 NodeBB API 自動發帖
- 開發
- 準備
- 常用方法 & 變量
- 插件制作
- 使用工具包編寫一個插件
- 主題制作
- 使用工具包編寫一個主題
- 部件制作
- 國際化
- 鉤子(hook)使用說明