數(shù)據(jù)庫(kù)管理
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、微信平臺(tái)小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了光山免費(fèi)建站歡迎大家使用!
備份MongoDB服務(wù)器
執(zhí)行mongodump //默認(rèn)使用本地連接127及端口連接本地?cái)?shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)恢復(fù)到備份之前的狀態(tài):
mongorestore --drop
##--drop選項(xiàng)告訴mongorestore工具,在恢復(fù)集合之前先丟棄現(xiàn)有的數(shù)據(jù),如果不使用該選項(xiàng),被恢復(fù)的數(shù)據(jù)將被追加到每個(gè)集合的尾部,導(dǎo)致數(shù)據(jù)的重復(fù)
備份單個(gè)數(shù)據(jù)庫(kù)
mongodump -d database_name -c post ##備份指定庫(kù)下集合
--help
恢復(fù)單個(gè)數(shù)據(jù)庫(kù)
mongorestore -d blog --drop
恢復(fù)單個(gè)集合
mongorestore -d blog -c posts --drop
備份大數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)備份系統(tǒng)有一個(gè)必殺技,就是時(shí)間點(diǎn)快照,它的速度非???快照完成的速度越快,數(shù)據(jù)庫(kù)服務(wù)器需要被凍結(jié)的時(shí)間就越短
在MONGODB中創(chuàng)建隱藏輔助服務(wù)器是非常簡(jiǎn)單的,并且可以使用MONGODB的復(fù)制機(jī)制來保證他與主服務(wù)器一直
1使用日志文件系統(tǒng)創(chuàng)建快照
2使用隱藏的輔助服務(wù)器備份數(shù)據(jù)
MONGODB上執(zhí)行fysnc和lock,可以保證磁盤上數(shù)據(jù)庫(kù)的鏡像處于一致狀態(tài),并保證在完成快照之前他們?nèi)匀槐3忠恢聽顟B(tài)
use admin
db.fsyncLock() //進(jìn)入fsync和lock狀態(tài)
查看當(dāng)前鎖的狀態(tài)
use admin
db.currentOp()
釋放鎖
db.fsyncUnlock() //鎖釋放之前可能有短暫的延遲
數(shù)據(jù)導(dǎo)入mongoDB使用mongoimport
mongoimport 工具可加載3種文件格式的數(shù)據(jù)
1、CSV:此種文件格式,每行代表一個(gè)文檔,字段之間由逗號(hào)分隔
2、TSV:該文件類似CSV,它使用TAB作為分隔符
3、JSON:該文件格式每行都辦好一塊JSON,代表一個(gè)文檔,與其他格式不同,JSON可以支持可變模式的文檔
mongoimport --help
MONGODB支持簡(jiǎn)單的基于角色的身份驗(yàn)證系統(tǒng),通過系統(tǒng)可以控制用戶對(duì)數(shù)據(jù)庫(kù)的訪問以及他們被授予的訪問級(jí)別
添加admin
use admin
db.createUser({
user:"admin",
pwd:"root123",
roles:[{
role:"readWrite",
db:"admin"},
{role:"userAdminAnyDatabase",db:"admin"}
]
})
db.auth("admin","root123")
db.getllsers() //用戶權(quán)限相關(guān)信息
db.serverStatus()
驗(yàn)證和修復(fù)數(shù)據(jù)
修復(fù)服務(wù)器
使用repair命令是一個(gè)代價(jià)高昂的操作,會(huì)消耗很長(zhǎng)世間,并且要求使用兩倍于MONGODB數(shù)據(jù)文件大小,因?yàn)樗械臄?shù)據(jù)都被克隆島新的文件并重建,本質(zhì)上是對(duì)所有數(shù)據(jù)文件的重建
mongod --dbpath /data/db --repair
在大型數(shù)據(jù)修復(fù)過程中,可以指定一個(gè)大的空間的驅(qū)動(dòng)器,用于保存修復(fù)過程中創(chuàng)建的臨時(shí)文件
mongod -f /etc/mongodb.conf --repair --repairpath /tmp/bigdata/
通過validata選項(xiàng)可以驗(yàn)證數(shù)據(jù)庫(kù)中集合的內(nèi)容是否存在問題
use dblog
db.posts.ensureIndex({Author:1})
db.posts.validate()
修復(fù)集合的索引
db.posts.reIndex() //在線修復(fù)會(huì)柱塞對(duì)系統(tǒng)的訪問
修復(fù)集合的數(shù)據(jù)文件
use blog
db.repairDatabase() //不適合在線運(yùn)行,因?yàn)樗鼤?huì)重建數(shù)據(jù)文件時(shí)會(huì)組賽對(duì)數(shù)據(jù)的所有請(qǐng)求,修復(fù)過程中所有讀寫請(qǐng)求都被阻塞
MONGODB的優(yōu)化
啟用和禁用MONGODB分析器
use blog
db.setProfilingLevel(1) //0關(guān)閉
db.setProfilingLevel(1,500) //啟動(dòng)毫秒級(jí)別
db.setProfilingLevel(2) //所有查詢啟動(dòng)分析器
查找慢查詢
db.system.profile.find()
增加分析器集合的大小
1、關(guān)閉分析器
use blog
db.setProfilingLevel(0)
2、刪除system.profile集合
db.system.profile.drop()
3、創(chuàng)建新的集合分析器
db.createCollection("system.profile",{capped:true,size:50*1024*1024})
4、重新啟用分析器
db.setProfilingLevel(2)
使用explain()分析特定的查詢
use blog
db.posts.find().explain(true)