mongodb數據的備份、數據導入管理--數據的備份導入與數據備份恢復
發表時間:2023-09-12 來源:明輝站整理相關軟件相關文章人氣:
[摘要]mongodb數據的導出、數據導入管理--數據的導出導入和數據備份恢復 mongodb數據管理數據的導出、數據導入數據導出 mongoexport [使用mongoexport -h查看參數]數據導入 mongoimport [使用mongoimport -h查看參數]導入導出json數據實例mo...
mongodb數據的導出、數據導入管理--數據的導出導入和數據備份恢復
mongodb數據管理
數據的導出、數據導入
數據導出 mongoexport [使用mongoexport -h查看參數]
數據導入 mongoimport [使用mongoimport -h查看參數]
導入導出json數據實例
mongoexport -d mydb -c user -o d:/mongdbback/user.dat--mydb是要導出的表所屬的數據庫--user是要導出的集合名c表示collection--user.dat是導出后的文件
名mongoimport -d mydb -c user d:/mongdbback/user.dat--mydb
數據導入的目標數據庫--user 數據導入的目標集合--d:/mongdbback/user.dat 待導入的數據文件存放路徑
導入導出csv數據
CSV格式良好,主流數據庫都支持導出為csv的格式,所以這種格式非常利于異構數據遷移.
mongoexport -d mydb -c user --csv -f id,name,age -o d:/mongodbback/user_csv.data--導出csv格式--f 指定要導出的列的名字mongoimport -d mydb -c user --type csv --headerline
--file d:/mongodbback/user_csv.data;--mydb 數據導入的目標數據庫--user 數據導入的目標集合--type
表示導入的文件格式--headerline 表明不導入第一行,因為第一行是列名--d:/mongodbback/user_cvs.data 待導入的數據文件存放路徑
數據備份、數據恢復
數據備份mongodump
數據恢復mongorestore
備份實例mongodump -d mydb //備份mydb數據庫此時會在當前目錄下默認創建一個dump目錄,用于存放備份出來的文件,也可以指定備份存放的目錄使用-omongodump -d mydb -o d:/databack/恢復實例mongorestore -d mydb d:/databack/mydb/數據
備份是為了發生災難事件后可以恢復數據,但是不幸總是存在的,即沒有數據備份,
好在MongoDB內建了修復功能.可以嘗試修復受損文件,如果Mongdb不正常關閉,啟動服務時會看到一堆警告信息.修復所有數據最簡單的方法就是在mongod啟動時加上--repaire參數.修復單個數據庫可以再mongodb的shell里邊執行repaireDatabase命令,
如>use testswitched to db test>db.repaireDatabase();{“ok” : 1}
克隆collection
克隆collection是將一組數據從一個數據源拷貝到多個數據源的技術,是將一份數據發布到多個存儲站點上的有效方式.
遠程克隆例如,將192.168.1.32上test下的user集合克隆到本地db.runCommand({cloneCollection:”test.user”, from:”192.168.1.32:27017”});本地克隆由于mongoDB沒有提供本地克隆collection的命令或方法,所以需要寫一個
循環插入的方案來完成這項工作.例如,將user集合中的數據克隆一份到taruser中.>
db.user.find().forEach( function(x){ db.taruser.insert(x); } );> db.taruser.find();
復制數據庫
使用copyDatabase(fromdb,todb,fromhost)命令來實現復制數據庫
遠程復制數據庫> db.copyDatabase("from_db1","to_db2","192.163.1.167");本地復制數據庫> db.copyDatabase("to_db1","to_db2","localhost");
刷新磁盤
在mongoDB中使用”db.runCommand({fsync:1})”命令將內存中尚未寫入磁盤的信息寫入磁盤,并鎖住對數據庫更新的操作,但讀擦做可以繼續.
數據壓縮
repairDatabase命令是MongoDB內置的一個方法,調用這個方法MongoDB會掃描數據庫中的所有數據,并將通過導入/導出來重新整理數據,整理磁盤碎片
mongoDB中可以使用db.collection.storageSize()和db.collection.totalSize()命令來搜集壓縮命令執行前后集合所占用磁盤空間情況
> db.user.storageSize();8192> db.user.totalSize();16384> db.repairDatabase();{ "ok" : 1 }> db.user.storageSize();8035> db.user.totalSize();9384
捕獲異常
MongoDB的寫是異步的,返回給客戶端成功但寫不一定成功,db.getLastError命令有2個功能,即當MongoDB在寫操作時,默認不會等數據寫完后才返回,這是可以通過這個命令來保證寫入是否是成功的.
查看活動進程
> db.currentOp();字段說明:opid:操作進程號,可以使用db.killop(opid)op:操作類型(查詢、更新等)ns:命名空間,指操作的是哪個對象query:如果操作類型是查詢的話,將顯示具體的查詢內容inLock:指名鎖定的類型.-1代表讀鎖,0代表無鎖.1代表寫鎖.
用戶安全和認證
限制特定IP地址訪問
這樣可以避免來自公網上的惡意攻擊.
MongDB可以指定對外服務的綁定,默認設置為空,即綁定在本機所有可用IP上,對于商業系統,出于安全考慮,可以綁定內網,減少外網訪問避免攻擊.只需要啟動時加bind_ip即可. >mongod --bind_ip 169.254.180.132
//啟動mongodb時綁定ip169.254.180.132此時客戶端想訪問169.254.180.132上的服務器,就需要顯示地指定連接的IP地址是169.254.180.132.eg. >mongo 169.254.180.132
設置監聽端口
MongoDB默認的監聽端口是27017,為了安全,一般都會修改這個監聽端口.
eg. >mongod --bind_ip 169.254.180.132 --port 9888 //啟動mongodb時綁定ip 并修改端口同理.客戶端連接時需要指定ip跟端口eg. >mongo 169.254.180.132:9888
設置登錄用戶名和口令
mongodb默認是沒有用戶名和口令的,啟動后,可以直接用mongoDB連接,并且對所有的庫具有root權限,為了安全,必須給其設置用戶名和口令.
只需要再啟動的時候,指定auth參數.就可以阻止客戶端的訪問和連接,如下
eg.>mongod -auth --dbpath=../data --logpath=../logs/mongodb.logs
想要登錄驗證模塊生效,必須在admin庫中添加一個用戶,同時要指定auth參數.
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>此時建立了系統root用戶.
也可以對某個特定的數據庫設置用戶,這樣權限的細粒度劃分,也方便進行用戶管理.
注意:建立指定權限的用戶只能用系統用戶來操作.
為mydb創建一個用戶名為mydbusr口令為123的用戶
D:\program files\mongo\bin>mongo -uroot -proot123 localhost:27017/adminMongoDB shell version
常見的網絡操作系統有UNIX、Netware、Windows NT、Linux等,網絡軟件的漏洞及缺陷被利用,使網絡遭到入侵和破壞。