Linux下mongodb數據備份以及crontab定時備份
手動備份
1.無密碼備份
##如果配置了mongodb的bin文件,即可在任意位置使用mongodump命令,否則需要指定mongodump的路徑
>mongodump -h [dbhost] -d [databasename] -o [dumppath]
>例子:mongodump -h 127.0.0.1:27017 -d test -o /usr/local/dump
執行完後,會在/usr/local/dump文件夾下生成一個以數據庫名的文件夾,裏面就是備份的數據
2.密碼驗證備份
>mongodump -d [databasename] -u [username] -p [password] --authenticationDatabase=[authDatabase] -o [dumppath]
>例子:mongodump -d test -u root -p root --authenticationDatabase=admin -o /usr/local/dump
注:-u:爲數據庫登錄名
-p:爲數據庫登錄密碼
--authenticationDatabase:爲用戶認證的所屬數據庫,即創建數據庫用戶角色時,在哪個數據庫下創建的,例子中是在admin數據庫下創建了一個root用戶角色
注:具體mongodump的參數可以使用mongodump --help命令查看
3.恢復數據
>mongorestore -h <hostname><:port> -d dbname <path>/--dir=
>例子:mongorestore -h 127.0.0.1:27017 -d test /usr/local/dump/test 無認證
>例子:mongorestore -d test -u root -p root --authenticationDatabase=admin /usr/local/dump/test 帶認證
注:path和dir不能同時存在。
具體mongorestore的參數可以使用mongorestore --help命令查看
crontab定時備份
1.編寫執行備份mongodb數據的sh執行文件
## /usr/local/project
mkdir mongodb-dump
touch mongodb_back.sh
chmod 755 mongodb_back.sh
vim mongodb_back.sh
在mongodb_back.sh文件裏添加:
#!/bin/sh
/usr/local/mongodb/bin/mongodump -d test -u root -p root --authenticationDatabase=admin -o /usr/local/dump/test
注:如果crontab自動執行改mongodb_back腳本,就必須保證裏面執行的命令爲絕對路徑,否則會執行失敗。例如mongodump命令在手動執行時成功,但是如果crontab執行時使用相對路徑,就無法找到mongodump命令。
2.添加到crontab任務中
>crontab -e (編輯工作表)
編輯插入>0 23 * * * /usr/local/project/mongodb_back.sh
注:意思是每天23點執行mongodb_back.sh文件
>crontab -l (列出工作表裏的命令)
3.查看crontab定時任務日誌
日誌目錄在/var/log/cron
可直接用tail -f /var/log/cron查看內容