最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MongoDB實(shí)現(xiàn)自動(dòng)備份的全過(guò)程記錄

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

前言

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

碎碎念

我不是MongoDB高手,之所以選擇MongoDB,是因?yàn)樾枨蟛幻鞔_——MongoDB很適合不明確需求場(chǎng)景的開(kāi)發(fā)。

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

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

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

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

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

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

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

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

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

自動(dòng)備份

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

怎么才能自動(dòng)輸入密碼呢?expect 登場(chǎng)了——一款提供自動(dòng)交互的工具。

安裝expect

yum install -y expect 

編寫(xiě)expect腳本

expect語(yǔ)法非常簡(jiǎn)單,和Shell幾乎一樣。筆者的腳本編寫(xiě)如下:

#!/bin/expect 
# spawn是expect的語(yǔ)句,執(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ā)送過(guò)去,注意最后的換行不能少,否則得人工輸入回車(chē)。 
send "密碼\r" 
# 停留在遠(yuǎn)程控制臺(tái),沒(méi)有這行就會(huì)直接返回本地控制臺(tái),而不等shell執(zhí)行完 
interact 

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

自動(dòng)備份

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

crontab -e 

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

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

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

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

#!/bin/expect 
# spawn是expect的語(yǔ)句,執(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ā)送過(guò)去,注意最后的換行不能少,否則得人工輸入回車(chē)。 
send "密碼\r" 
 
set timeout 120 
expect eof 
 
exit 

總結(jié)

本文沒(méi)什么難點(diǎn),都是一些細(xì)節(jié)——

  • 因?yàn)槊艽a含有特殊字符,所以需要交互式輸入密碼;
  • 因?yàn)橐换ナ捷斎朊艽a,所以使用了expect

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

總結(jié)

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

相關(guān)文章

  • 利用golang驅(qū)動(dòng)操作MongoDB數(shù)據(jù)庫(kù)的步驟

    利用golang驅(qū)動(dòng)操作MongoDB數(shù)據(jù)庫(kù)的步驟

    這篇文章主要給大家介紹了關(guān)于如何利用golang驅(qū)動(dòng)操作MongoDB數(shù)據(jù)庫(kù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • MongoDB入門(mén)教程之常用的運(yùn)維技術(shù)介紹

    MongoDB入門(mén)教程之常用的運(yùn)維技術(shù)介紹

    這篇文章主要介紹了MongoDB入門(mén)教程之常用的運(yùn)維技術(shù)介紹,講解了安裝部署、狀態(tài)監(jiān)控、安全認(rèn)證、備份和恢復(fù)等內(nèi)容,需要的朋友可以參考下
    2014-08-08
  • MongoDB中的主從同步配置和mongod相關(guān)啟動(dòng)命令講解

    MongoDB中的主從同步配置和mongod相關(guān)啟動(dòng)命令講解

    這篇文章主要介紹了MongoDB中的主從同步配置和mongod相關(guān)啟動(dòng)命令講解,文中也羅列了很多其他常用的mongod命令參數(shù),需要的朋友可以參考下
    2016-03-03
  • 在 Fedora 上安裝 MongoDB 服務(wù)器的方法教程

    在 Fedora 上安裝 MongoDB 服務(wù)器的方法教程

    Mongo是一個(gè)高性能、開(kāi)源、無(wú)模式的、面向文檔的數(shù)據(jù)庫(kù),它是最受歡迎的 NoSQL 數(shù)據(jù)庫(kù)之一。這篇文章主要介紹了在 Fedora 上安裝 MongoDB 服務(wù)器的方法,需要的朋友可以參考下
    2020-03-03
  • MongoDB CRUD操作中的插入實(shí)例教程

    MongoDB CRUD操作中的插入實(shí)例教程

    這篇文章主要給大家介紹了關(guān)于MongoDB CRUD操作中的插入的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MongoDB具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • MongoDB 用戶管理

    MongoDB 用戶管理

    這篇文章主要介紹了MongoDB 如何對(duì)用戶管理,幫助大家更好的理解和使用MongoDB數(shù)據(jù)庫(kù),感興趣的朋友可以了解下
    2020-09-09
  • mongoDB 4.0事務(wù)回滾的辛酸歷程探究

    mongoDB 4.0事務(wù)回滾的辛酸歷程探究

    這篇文章主要給大家介紹了關(guān)于mongoDB 4.0事務(wù)回滾的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MongoDB具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • Mongodb常見(jiàn)操作符和運(yùn)算符總結(jié)

    Mongodb常見(jiàn)操作符和運(yùn)算符總結(jié)

    MongoDB 提供了豐富的操作符(Operators)和運(yùn)算符(Expressions)用于在查詢和更新文檔時(shí)指定條件和操作數(shù)據(jù),本文將通過(guò)代碼示例給大家詳細(xì)的總結(jié)一下Mongodb常見(jiàn)操作符和運(yùn)算符,需要的朋友可以參考下
    2024-01-01
  • MongoDB中的MapReduce簡(jiǎn)介

    MongoDB中的MapReduce簡(jiǎn)介

    這篇文章主要介紹了MongoDB中的MapReduce簡(jiǎn)介,MapReduce是一種計(jì)算模型,簡(jiǎn)單的說(shuō)就是將大批量的工作(數(shù)據(jù))分解(MAP)執(zhí)行,然后再將結(jié)果合并成最終結(jié)果(REDUCE),需要的朋友可以參考下
    2015-05-05
  • MongoDB?Server?用戶名和密碼登錄的操作步驟

    MongoDB?Server?用戶名和密碼登錄的操作步驟

    MongoDB Server默認(rèn)不進(jìn)行安全認(rèn)證,即任何MongoDB Client都可以連接并擁有操作權(quán)限,這篇文章主要介紹了MongoDB?Server?用戶名和密碼登錄的步驟,需要的朋友可以參考下
    2024-03-03

最新評(píng)論

克什克腾旗| 靖边县| 东辽县| 敦化市| 东阳市| 荆门市| 施甸县| 宁国市| 昭平县| 郓城县| 岱山县| 若羌县| 历史| 深泽县| 库尔勒市| 若羌县| 邢台县| 江安县| 高雄市| 凌源市| 绥江县| 陆川县| 南澳县| 南安市| 平邑县| 天柱县| 准格尔旗| 保定市| 建德市| 仙桃市| 瑞昌市| 唐河县| 博白县| 兴隆县| 正安县| 南江县| 雷州市| 盘锦市| 宜兰县| 昌图县| 武平县|