西西軟件下載最安全的下載網(wǎng)站、值得信賴的軟件下載站!

首頁(yè)西西教程數(shù)據(jù)庫(kù)教程 → mongodb數(shù)據(jù)管理:數(shù)據(jù)的導(dǎo)出導(dǎo)入和數(shù)據(jù)備份恢復(fù)

mongodb數(shù)據(jù)管理:數(shù)據(jù)的導(dǎo)出導(dǎo)入和數(shù)據(jù)備份恢復(fù)

相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來(lái)源:西西整理時(shí)間:2013/2/23 2:59:16字體大。A-A+

作者:西西點(diǎn)擊:0次評(píng)論:0次標(biāo)簽: mongodb

  • 類型:編程控件大。191KB語(yǔ)言:中文 評(píng)分:6.6
  • 標(biāo)簽:
立即下載

mongodb數(shù)據(jù)管理

數(shù)據(jù)的導(dǎo)出、數(shù)據(jù)導(dǎo)入
數(shù)據(jù)導(dǎo)出 mongoexport [使用mongoexport -h查看參數(shù)]
數(shù)據(jù)導(dǎo)入 mongoimport [使用mongoimport -h查看參數(shù)]

導(dǎo)入導(dǎo)出json數(shù)據(jù)實(shí)例

mongoexport -d mydb -c user -o d:/mongdbback/user.dat--mydb是要導(dǎo)出的表所屬的數(shù)據(jù)庫(kù)--user是要導(dǎo)出的集合名c表示collection--user.dat是導(dǎo)出后的文件名mongoimport -d mydb -c user d:/mongdbback/user.dat--mydb 數(shù)據(jù)導(dǎo)入的目標(biāo)數(shù)據(jù)庫(kù)--user 數(shù)據(jù)導(dǎo)入的目標(biāo)集合--d:/mongdbback/user.dat 待導(dǎo)入的數(shù)據(jù)文件存放路徑

導(dǎo)入導(dǎo)出csv數(shù)據(jù)

CSV格式良好,主流數(shù)據(jù)庫(kù)都支持導(dǎo)出為csv的格式,所以這種格式非常利于異構(gòu)數(shù)據(jù)遷移.

mongoexport -d mydb -c user --csv -f  id,name,age  -o d:/mongodbback/user_csv.data--導(dǎo)出csv格式--f 指定要導(dǎo)出的列的名字mongoimport -d mydb -c user --type csv --headerline --file d:/mongodbback/user_csv.data;--mydb 數(shù)據(jù)導(dǎo)入的目標(biāo)數(shù)據(jù)庫(kù)--user 數(shù)據(jù)導(dǎo)入的目標(biāo)集合--type表示導(dǎo)入的文件格式--headerline 表明不導(dǎo)入第一行,因?yàn)榈谝恍惺橇忻?-d:/mongodbback/user_cvs.data 待導(dǎo)入的數(shù)據(jù)文件存放路徑

數(shù)據(jù)備份、數(shù)據(jù)恢復(fù)
數(shù)據(jù)備份mongodump
數(shù)據(jù)恢復(fù)mongorestore

備份實(shí)例mongodump -d mydb    //備份mydb數(shù)據(jù)庫(kù)此時(shí)會(huì)在當(dāng)前目錄下默認(rèn)創(chuàng)建一個(gè)dump目錄,用于存放備份出來(lái)的文件,也可以指定備份存放的目錄使用-omongodump -d mydb -o d:/databack/恢復(fù)實(shí)例mongorestore -d mydb d:/databack/mydb/數(shù)據(jù)備份是為了發(fā)生災(zāi)難事件后可以恢復(fù)數(shù)據(jù),但是不幸總是存在的,即沒(méi)有數(shù)據(jù)備份,好在MongoDB內(nèi)建了修復(fù)功能.可以嘗試修復(fù)受損文件,如果Mongdb不正常關(guān)閉,啟動(dòng)服務(wù)時(shí)會(huì)看到一堆警告信息.修復(fù)所有數(shù)據(jù)最簡(jiǎn)單的方法就是在mongod啟動(dòng)時(shí)加上--repaire參數(shù).修復(fù)單個(gè)數(shù)據(jù)庫(kù)可以再mongodb的shell里邊執(zhí)行repaireDatabase命令,如>use testswitched to db test>db.repaireDatabase();{“ok” : 1}

克隆collection

克隆collection是將一組數(shù)據(jù)從一個(gè)數(shù)據(jù)源拷貝到多個(gè)數(shù)據(jù)源的技術(shù),是將一份數(shù)據(jù)發(fā)布到多個(gè)存儲(chǔ)站點(diǎn)上的有效方式.

遠(yuǎn)程克隆例如,將192.168.1.32上test下的user集合克隆到本地db.runCommand({cloneCollection:”test.user”, from:”192.168.1.32:27017”});本地克隆由于mongoDB沒(méi)有提供本地克隆collection的命令或方法,所以需要寫一個(gè)循環(huán)插入的方案來(lái)完成這項(xiàng)工作.例如,將user集合中的數(shù)據(jù)克隆一份到taruser中.> db.user.find().forEach( function(x){ db.taruser.insert(x); } );> db.taruser.find();

復(fù)制數(shù)據(jù)庫(kù)

使用copyDatabase(fromdb,todb,fromhost)命令來(lái)實(shí)現(xiàn)復(fù)制數(shù)據(jù)庫(kù)

遠(yuǎn)程復(fù)制數(shù)據(jù)庫(kù)> db.copyDatabase("from_db1","to_db2","192.163.1.167");本地復(fù)制數(shù)據(jù)庫(kù)> db.copyDatabase("to_db1","to_db2","localhost");

刷新磁盤

在mongoDB中使用”db.runCommand({fsync:1})”命令將內(nèi)存中尚未寫入磁盤的信息寫入磁盤,并鎖住對(duì)數(shù)據(jù)庫(kù)更新的操作,但讀擦做可以繼續(xù).

數(shù)據(jù)壓縮

repairDatabase命令是MongoDB內(nèi)置的一個(gè)方法,調(diào)用這個(gè)方法MongoDB會(huì)掃描數(shù)據(jù)庫(kù)中的所有數(shù)據(jù),并將通過(guò)導(dǎo)入/導(dǎo)出來(lái)重新整理數(shù)據(jù),整理磁盤碎片

mongoDB中可以使用db.collection.storageSize()和db.collection.totalSize()命令來(lái)搜集壓縮命令執(zhí)行前后集合所占用磁盤空間情況

> db.user.storageSize();8192> db.user.totalSize();16384> db.repairDatabase();{ "ok" : 1 }> db.user.storageSize();8035> db.user.totalSize();9384

捕獲異常

MongoDB的寫是異步的,返回給客戶端成功但寫不一定成功,db.getLastError命令有2個(gè)功能,即當(dāng)MongoDB在寫操作時(shí),默認(rèn)不會(huì)等數(shù)據(jù)寫完后才返回,這是可以通過(guò)這個(gè)命令來(lái)保證寫入是否是成功的.

查看活動(dòng)進(jìn)程

> db.currentOp();字段說(shuō)明:opid:操作進(jìn)程號(hào),可以使用db.killop(opid)op:操作類型(查詢、更新等)ns:命名空間,指操作的是哪個(gè)對(duì)象query:如果操作類型是查詢的話,將顯示具體的查詢內(nèi)容inLock:指名鎖定的類型.-1代表讀鎖,0代表無(wú)鎖.1代表寫鎖.

用戶安全和認(rèn)證

限制特定IP地址訪問(wèn)

這樣可以避免來(lái)自公網(wǎng)上的惡意攻擊.

MongDB可以指定對(duì)外服務(wù)的綁定,默認(rèn)設(shè)置為空,即綁定在本機(jī)所有可用IP上,對(duì)于商業(yè)系統(tǒng),出于安全考慮,可以綁定內(nèi)網(wǎng),減少外網(wǎng)訪問(wèn)避免攻擊.只需要啟動(dòng)時(shí)加bind_ip即可.    >mongod --bind_ip 169.254.180.132    //啟動(dòng)mongodb時(shí)綁定ip169.254.180.132此時(shí)客戶端想訪問(wèn)169.254.180.132上的服務(wù)器,就需要顯示地指定連接的IP地址是169.254.180.132.eg.    >mongo 169.254.180.132

設(shè)置監(jiān)聽端口

MongoDB默認(rèn)的監(jiān)聽端口是27017,為了安全,一般都會(huì)修改這個(gè)監(jiān)聽端口.

eg.    >mongod --bind_ip 169.254.180.132 --port 9888    //啟動(dòng)mongodb時(shí)綁定ip 并修改端口同理.客戶端連接時(shí)需要指定ip跟端口eg.    >mongo 169.254.180.132:9888

設(shè)置登錄用戶名和口令

mongodb默認(rèn)是沒(méi)有用戶名和口令的,啟動(dòng)后,可以直接用mongoDB連接,并且對(duì)所有的庫(kù)具有root權(quán)限,為了安全,必須給其設(shè)置用戶名和口令.

只需要再啟動(dòng)的時(shí)候,指定auth參數(shù).就可以阻止客戶端的訪問(wèn)和連接,如下

eg.>mongod -auth --dbpath=../data --logpath=../logs/mongodb.logs

想要登錄驗(yàn)證模塊生效,必須在admin庫(kù)中添加一個(gè)用戶,同時(shí)要指定auth參數(shù).

D:\program files\mongo\bin>mongoMongoDB shell version: 1.8.1connecting to: test> use adminswitched to db admin> db.addUser("root","root123");{        "user" : "root",        "readOnly" : false,        "pwd" : "81c5bca573e01b632d18a459c6cec418"}> db.auth("root","root123");1>此時(shí)建立了系統(tǒng)root用戶.

也可以對(duì)某個(gè)特定的數(shù)據(jù)庫(kù)設(shè)置用戶,這樣權(quán)限的細(xì)粒度劃分,也方便進(jìn)行用戶管理.

注意:建立指定權(quán)限的用戶只能用系統(tǒng)用戶來(lái)操作.

為mydb創(chuàng)建一個(gè)用戶名為mydbusr口令為123的用戶

D:\program files\mongo\bin>mongo -uroot -proot123 localhost:27017/adminMongoDB shell version: 1.8.1connecting to: localhost:27017/admin> show dbs;admin   0.03125GBlocal   (empty)test    (empty)> use mydb;switched to db mydb> db;mydb> db.addUser("mydbusr","123");{        "user" : "mydbusr",        "readOnly" : false,        "pwd" : "4dbfed60224bbcd7eccbd2da993a8029"}system> show tables;system.indexes.users> db.system.users.find();{ "_id" : ObjectId("50f6acdd22bc514e46426dda"), "user" : "mydbusr", "readOnly" : false,60224bbcd7eccbd2da993a8029" }> db.auth("mydbusr","123");1>

    相關(guān)評(píng)論

    閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過(guò)難過(guò)
    • 5 囧
    • 3 圍觀圍觀
    • 2 無(wú)聊無(wú)聊

    熱門評(píng)論

    最新評(píng)論

    發(fā)表評(píng)論 查看所有評(píng)論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過(guò)審核才能顯示)