MongoDB高階應用之資料轉存與恢復(5)

Tom彈架構發表於2022-01-07

1、MongoDB索引

1.1、建立索引


db.books.ensureIndex{{number:1}}

建立索引同時指定索引的名字


db.books.ensureIndex({number:1},{name:"book_"})

1.2、索引使用需要注意的地方

1)建立索引的時候注意1是正序建立索引-1是倒序建立索引

2)索引的建立在提高查詢效能的同事會影響插入的效能 對於經常查詢少插入的文件可以考慮用索引

3)符合索引要注意索引的先後順序

4)每個鍵全建立索引不一定就能提高效能呢 索引不是萬能的

5)在做排序工作的時候如果是超大資料量也可以考慮加上索引 用來提高排序的效能

1.3、唯一索引

解決文件books不能插入重複的數值

1.4、剔除重複值


#則插入相同的name值會報錯
db.books.ensureIndex({name:-1},{unique:true}) 

如果建議唯一索引之前已經有重複數值如何處理


#剔除重複數值
db.books.ensureIndex({name:1},{name:"book_",unique:true,dropDups:true}) 

1.5、後臺執行建立索引

為了解決建立索引鎖表的問題,在不影響查詢功能,可以在後臺執行


db.books.ensureIndex({name:1},{background:true})

1.6、強制查詢已經建立好的索引


#後一個name為索引名,正序倒序依據建立索引的規則,否則會報錯
db.books.find({name:"323book"}).hint({name:1}) 

1.7、在shell檢視資料庫已經建立的索引


db.system.indexes.find()
db.system.namespaces.find()

1.8、查詢索引資訊和查詢狀態資訊


db.books.find({name:"123book"}).explain()

1.9、批量和精確刪除索引


db.runCommand({dropIndexes : "books" , index:"name_-1"})
db.runCommand({dropIndexes : "books" , index:"*"})

2、二維索引

建立二維索引


#預設會建一個[-108,108]的範圍
db.map.ensureIndex({gis:"2d"},{min:-1,max:201}) 

3、MongoDB資料轉存及恢復

3.1、匯出資料(中斷其他操作)

使用mongoexport命令列

-d指明使用的庫

-c指明要匯出的表

-o指明要匯出的檔名

-csv指定匯出的csv格式

-q過濾匯出

--type< json|csv|tsv>

把資料好testdb中的persons匯出


mongoexport -d testdb -c persons -o D:/persons.json

匯出其他主機資料庫的文件


mongoexport --host 192.168.0.16 --port 37017

3.2、匯入資料(中斷其他操作)


mongoimport --db testdb --collections persons --file d:/persons.json

3.3、執行時備份 mongodump.exe

API: http://docs.mongodb.org/manual/reference/mongodump


mongodump --host 127.0.0.1:27017 -d testdb -o d:/testdb

3.4、執行時恢復 mongorestore.exe

API:http://docs.mongodb.org/manual/reference/mongorestore

恢復資料庫


db.dropDatabase()
mongorestore --host 127.0.0.1:27017 -d testdb -directoryperdb d:/testdb/testdb

MongoDB是檔案資料庫這其實就可以用拷貝檔案的方式進行備份

3.5、上鎖和解鎖


db.runCommand({fsync:1,lock:1}) #上鎖
db.currentOp() #解鎖

3.7、資料修復

當停電等不可逆轉災難來臨的時候,由於mongodb的儲存結構導致,會產生垃圾資料,在資料恢復以後這垃圾資料依然存在,這是資料庫,可以提供一個自我修復的能力.使用起來很簡單 

	
db.repairDatabase()

本文為“Tom彈架構”原創,轉載請註明出處。技術在於分享,我分享我快樂!
如果本文對您有幫助,歡迎關注和點贊;如果您有任何建議也可留言評論或私信,您的支援是我堅持創作的動力。

原創不易,堅持很酷,都看到這裡了,小夥伴記得點贊、收藏、在看,一鍵三連加關注!如果你覺得內容太乾,可以分享轉發給朋友滋潤滋潤!

相關文章