好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > MongoDB實現自動備份的全過程記錄

MongoDB實現自動備份的全過程記錄

熱門標簽:杭州人工電銷機器人價格 呼和浩特電銷外呼系統加盟 蘋果汽車租賃店地圖標注 廣州長安公司怎樣申請400電話 濟南電銷機器人加盟公司 電銷機器人是什么軟件 云南外呼系統 怎么投訴地圖標注 老虎洗衣店地圖標注

前言

前段時間,個人小程序 因服務器磁盤空間被占滿,導致MongoDB掛了。清理了一些無用的數據后,重啟MongoDB,竟然無法啟動,一番折騰(20分鐘)后,總算修復了。這讓我意識到:雖然是個人小項目,但也必須定期備份啊,否則數據丟了很尷尬的說。

碎碎念

我不是MongoDB高手,之所以選擇MongoDB,是因為需求不明確——MongoDB很適合不明確需求場景的開發。

個人對Elasticsearch更熟悉,Elasticsearch也很適合不定需求的業務開發;但個人服務器只有1G內存,用Elasticsearch得升級服務器,得花好多錢啊啊啊。

MongoDB備份比較簡單,只需用內置的 mongodump 即可,命令格式如下:

mongodump -h {mongodb主機名}:{端口} -u {賬號} -p {密碼} -d {數據庫名稱} -o {存儲路徑}

然而,筆者為MongoDB設置的密碼是帶有特殊字符的,例如 @#$\ 之類,直接以如上形式執行命令,會報錯!

所以筆者選擇不帶 -p 參數執行命令,即:

mongodump -h {mongodb主機名}:{端口} -u {賬號} -d {數據庫名稱} -o {存儲路徑}

然后,命令提示符會提示輸入密碼。例如

# mongodump -h 127.0.0.1 -u user -d itmuch -o /tmp/somepathEnter password: 

至此已實現MongoDB的備份。然而,手動備份還是挺麻煩的,怎么實現備份的自動化呢?

自動備份

正常來說,自動備份是比較簡單的——只需將手動備份的命令做成Shell腳本,并設置定時任務即可。然而,筆者的場景,命令是需要交互式輸入密碼的啊!

怎么才能自動輸入密碼呢?expect 登場了——一款提供自動交互的工具。

安裝expect

yum install -y expect 

編寫expect腳本

expect語法非常簡單,和Shell幾乎一樣。筆者的腳本編寫如下:

#!/bin/expect 
# spawn是expect的語句,執行命令前需添加該字眼 
set DATE [exec date "+%Y-%m-%d"] 
set DIR /xxxxx/dbbak-$DATE 
spawn rm -rf $DIR 
spawn echo 'removing...$DIR' 
spawn mongodump -h {host:port} -u {user} -d {dbname} -o $DIR 
# 交互獲取是否返回password:關鍵字 
expect "password:" 
# 將密碼發送過去,注意最后的換行不能少,否則得人工輸入回車。 
send "密碼\r" 
# 停留在遠程控制臺,沒有這行就會直接返回本地控制臺,而不等shell執行完 
interact 

注釋很全面了,聰明的你閱讀肯定沒有壓力。最終備份出來的文件會存放在 /xxxxx/dbbak-備份日期 目錄中。

自動備份

筆者利用Linux定時任務實現自動執行。

crontab -e 

在新窗口中添加如下內容:

0 0 1 * * ? /usr/bin/expect 上面expect shell的完整路徑 

原本以為這樣就可以定時執行了,然而卻無法正常執行。

百度后,將腳本修改為如下,終于可以正常執行了。

#!/bin/expect 
# spawn是expect的語句,執行命令前需添加該字眼 
set DATE [exec date "+%Y-%m-%d"] 
set DIR /xxxxx/dbbak-$DATE 
spawn rm -rf $DIR 
spawn echo 'removing...$DIR' 
spawn mongodump -h {host:port} -u {user} -d {dbname} -o $DIR 
# 交互獲取是否返回password:關鍵字 
expect "password:" 
# 將密碼發送過去,注意最后的換行不能少,否則得人工輸入回車。 
send "密碼\r" 
 
set timeout 120 
expect eof 
 
exit 

總結

本文沒什么難點,都是一些細節——

  • 因為密碼含有特殊字符,所以需要交互式輸入密碼;
  • 因為要交互式輸入密碼,所以使用了expect

寫出來主要是總結下踩到的坑,另外,expect是一款通用的提供自動交互的工具,用來實現ssh的自動登錄、sftp的自動登錄、mysql的自動登錄等。腳本的套路都和本文展示的結構基本類似。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。

您可能感興趣的文章:
  • Windows下自動備份MongoDB的批處理腳本
  • Linux下MongoDB數據庫實現自動備份詳解
  • Linux中MongoDB如何實現遠程自動備份詳解

標簽:廈門 雞西 泰安 興安盟 遼陽 無錫 玉林 自貢

巨人網絡通訊聲明:本文標題《MongoDB實現自動備份的全過程記錄》,本文關鍵詞  MongoDB,實現,自動,備份,的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MongoDB實現自動備份的全過程記錄》相關的同類信息!
  • 本頁收集關于MongoDB實現自動備份的全過程記錄的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 操女人电影| 27报女上男下动态图gif图| 日本全黄视频| 爱妻不对劲| 亚洲欧洲日产v特级毛片| 疯狂伦交1一6小说| 粗大挺进白丝尤物校花| 放荡的情欲在线观看免费版| 久久精品一区二区三区四区啪啪| 欧美性另类videossexo| 亚洲天堂在线观看| 日本极品人妻videossex| 抵在了她的柔软处磨蹭| 王宝强电影大全免费| 午夜精品久久久久久久久噜噜| 在线99视频免费观看| 色偷偷亚洲天堂| 性孽小说| 日本三级人妻三级欧美三级| 久久福利青草精品资源| 边摸边吃奶视频| 欧美AV无码国产精品色草莓| 欧美三日本三级少妇三级久久| 久久久久免费看黄a级试看| 夜夜夜精品视频免费| 性感美女叫床| 操欧美美女| 男男互吃互摸基基的网站| 美女扒开腿秘?免费看| 制服丝袜怡红院| 镇坪县| 三年片在线观看大全有哪些爱奇艺| 从斩妖司地牢杀成仙王| 国产肥臀一区二区福利视频 | 亚洲精品久久久久的网址| 色一色综合| c了语文老师嗷嗷叫一节课| 99久久国产视频| 爽?躁多水?快?深点小说越南 | 国产AV无码亚洲AV毛片菲菲| 亚色91|