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

首頁西西教程數(shù)據(jù)庫教程 → 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ā)表評論 來源:西西整理時間:2013/2/23 2:59:16字體大小:A-A+

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

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

克隆collection

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

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

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

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

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

刷新磁盤

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

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

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

mongoDB中可以使用db.collection.storageSize()和db.collection.totalSize()命令來搜集壓縮命令執(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個功能,即當(dāng)MongoDB在寫操作時,默認(rèn)不會等數(shù)據(jù)寫完后才返回,這是可以通過這個命令來保證寫入是否是成功的.

查看活動進(jìn)程

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

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

限制特定IP地址訪問

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

MongDB可以指定對外服務(wù)的綁定,默認(rèn)設(shè)置為空,即綁定在本機(jī)所有可用IP上,對于商業(yè)系統(tǒng),出于安全考慮,可以綁定內(nèi)網(wǎng),減少外網(wǎng)訪問避免攻擊.只需要啟動時加bind_ip即可.    >mongod --bind_ip 169.254.180.132    //啟動mongodb時綁定ip169.254.180.132此時客戶端想訪問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,為了安全,一般都會修改這個監(jiān)聽端口.

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

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

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

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

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

想要登錄驗(yàn)證模塊生效,必須在admin庫中添加一個用戶,同時要指定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>此時建立了系統(tǒng)root用戶.

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

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

為mydb創(chuàng)建一個用戶名為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)評論

    閱讀本文后您有什么感想? 已有人給出評價!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評論

    最新評論

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

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