麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > MongoDB > 正文

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

2020-10-29 18:41:55
字體:
來源:轉載
供稿:網友

前言

前段時間,個人小程序 因服務器磁盤空間被占滿,導致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的自動登錄等。腳本的套路都和本文展示的結構基本類似。

總結

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黄色片网站在线看 | 精品一区二区久久久久久按摩 | 国产精品久久久久久久av | 欧美性激情视频 | 一级成人毛片 | 国产精品伦视频看免费三 | 免费永久看羞羞片网站入口 | 欧美精品色精品一区二区三区 | 成人毛片av在线 | 亚洲欧美日韩久久精品第一区 | 久久国产亚洲精品 | 久草视频福利在线观看 | 日本高清视频网站www | 一区二区三区精品国产 | 久草在线视频看看 | 久色亚洲 | 国产精品视频一区二区三区四区国 | 成人免费一区二区三区在线观看 | 色吧综合网 | xvideos korean | 亚州视频在线 | 天堂福利电影 | 精品一区二区久久久久久久网精 | 久久久电影电视剧免费看 | 久久久一区二区三区视频 | 成人一级黄色大片 | av成人免费 | 亚洲成人福利在线观看 | 久久蜜桃精品一区二区三区综合网 | 亚州精品天堂中文字幕 | 萌白酱福利视频在线网站 | 亚洲国产精品久久久久 | 黄色片免费在线播放 | 欧美精品日日鲁夜夜添 | 亚州视频在线 | 一级毛片电影网 | 国产成人精品区 | 亚洲午夜久久久久 | 国产一区毛片 | av免费在线观看av | 国产精品视频免费在线观看 |