欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MongoDB實現(xiàn)自動備份的全過程記錄

 更新時間:2019年05月15日 08:33:14   作者:itmuch  
這篇文章主要給大家介紹了關(guān)于MongoDB實現(xiàn)自動備份的全過程,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用MongoDB具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

前言

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

碎碎念

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

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

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

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

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

所以筆者選擇不帶 -p 參數(shù)執(zhí)行命令,即:

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

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

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

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

自動備份

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

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

安裝expect

yum install -y expect 

編寫expect腳本

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

#!/bin/expect 
# spawn是expect的語句,執(zhí)行命令前需添加該字眼 
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:關(guān)鍵字 
expect "password:" 
# 將密碼發(fā)送過去,注意最后的換行不能少,否則得人工輸入回車。 
send "密碼\r" 
# 停留在遠程控制臺,沒有這行就會直接返回本地控制臺,而不等shell執(zhí)行完 
interact 

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

自動備份

筆者利用Linux定時任務(wù)實現(xiàn)自動執(zhí)行。

crontab -e 

在新窗口中添加如下內(nèi)容:

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

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

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

#!/bin/expect 
# spawn是expect的語句,執(zhí)行命令前需添加該字眼 
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:關(guān)鍵字 
expect "password:" 
# 將密碼發(fā)送過去,注意最后的換行不能少,否則得人工輸入回車。 
send "密碼\r" 
 
set timeout 120 
expect eof 
 
exit 

總結(jié)

本文沒什么難點,都是一些細節(jié)——

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

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

總結(jié)

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

相關(guān)文章

  • mongodb replica set 添加刪除節(jié)點的2種方法

    mongodb replica set 添加刪除節(jié)點的2種方法

    replica set多服務(wù)器主從,添加,刪除節(jié)點,肯定會經(jīng)常遇到的。下面詳細說明一下,添加,刪除節(jié)點的2種方法。
    2014-07-07
  • mongodb數(shù)據(jù)庫實驗之增刪查改

    mongodb數(shù)據(jù)庫實驗之增刪查改

    這篇文章主要介紹了mongodb數(shù)據(jù)庫實驗之增刪查改的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • SpringBoot?整合mongoDB并自定義連接池的示例代碼

    SpringBoot?整合mongoDB并自定義連接池的示例代碼

    這篇文章主要介紹了SpringBoot?整合mongoDB并自定義連接池?,整合mongoDB的目的就是想用它給我們提供的mongoTemplate,它可以很容易的操作mongoDB數(shù)據(jù)庫,對整合過程及實例代碼感興趣的朋友跟隨小編一起看看吧
    2022-02-02
  • Mongodb通配符文本索引的用法詳解

    Mongodb通配符文本索引的用法詳解

    通配符索引為Mongodb靈活的數(shù)據(jù)結(jié)構(gòu),提供了高效查詢的解決方案,本文繼續(xù)研究官方文檔,來歸納總結(jié)通配符文本索引的介紹和用法,感興趣的朋友跟隨小編一起看看吧
    2024-07-07
  • Mongodb解決不能連接到服務(wù)器的錯誤問題

    Mongodb解決不能連接到服務(wù)器的錯誤問題

    這篇文章主要介紹了Mongodb解決不能連接到服務(wù)器的錯誤問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • CentOS系統(tǒng)下MongoDB安裝及配置教程

    CentOS系統(tǒng)下MongoDB安裝及配置教程

    這篇文章主要介紹了CentOS系統(tǒng)下MongoDB安裝及配置教程,本文先是講解了一些準備工作,然后講解了安裝MongoDB的服務(wù)器端和客戶端工具的步驟,需要的朋友可以參考下
    2015-01-01
  • 利用MongoDB中oplog機制實現(xiàn)準實時數(shù)據(jù)的操作監(jiān)控

    利用MongoDB中oplog機制實現(xiàn)準實時數(shù)據(jù)的操作監(jiān)控

    MongoDB 的Replication是通過一個日志來存儲寫操作的,這個日志就叫做oplog,而下面這篇文章主要給大家介紹了利用MongoDB中oplog機制實現(xiàn)準實時數(shù)據(jù)的操作監(jiān)控的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-05-05
  • MongoDB快速入門筆記(一)之windows下安裝MongoDB方法

    MongoDB快速入門筆記(一)之windows下安裝MongoDB方法

    MongoDB 是一個基于分布式文件存儲的數(shù)據(jù)庫。由 C++ 語言編寫。本文重點給大家介紹MongoDB快速入門筆記(一)之windows下安裝MongoDB方法,非常不錯具有參考借鑒價值,感興趣的朋友一起看下吧
    2016-06-06
  • MongoDB教程之數(shù)據(jù)操作實例

    MongoDB教程之數(shù)據(jù)操作實例

    這篇文章主要介紹了MongoDB教程之數(shù)據(jù)操作實例,本文講解了批量插入、數(shù)據(jù)庫清除、數(shù)據(jù)更新、修改器、數(shù)組修改器、upsert等內(nèi)容,需要的朋友可以參考下
    2015-05-05
  • MongoDB數(shù)據(jù)庫安裝配置、基本操作實例詳解

    MongoDB數(shù)據(jù)庫安裝配置、基本操作實例詳解

    這篇文章主要介紹了MongoDB數(shù)據(jù)庫安裝配置、基本操作,結(jié)合實例形式詳細分析了MongoDB數(shù)據(jù)庫安裝配置具體步驟、相關(guān)命令與基本操作實現(xiàn)技巧,需要的朋友可以參考下
    2020-01-01

最新評論