標籤:mongodb巨量資料營運管理
資料庫管理
備份MONGODB伺服器
執行mongodump //預設使用本地串連127及連接埠串連本機資料庫
資料庫恢複到備份之前的狀態:
mongorestore --drop
##--drop選項告訴mongorestore工具,在復原集合之前先丟棄現有的資料,如果不使用該選項,被恢複的資料將被追加到每個集合的尾部,導致資料的重複
備份單個資料庫
mongodump -d database_name -c post ##備份指定庫下集合
--help
恢複單個資料庫
mongorestore -d blog --drop
恢複單個集合
mongorestore -d blog -c posts --drop
備份大資料庫
Database Backup系統有一個必殺技,就是時間點快照,它的速度非常快,快照完成的速度越快,資料庫伺服器需要被凍結的時間就越短
在MONGODB中建立隱藏次要伺服器是非常簡單的,並且可以使用MONGODB的複製機制來保證他與主伺服器一直
1使用記錄檔系統建立快照
2使用隱藏的次要伺服器備份資料
MONGODB上執行fysnc和lock,可以保證磁碟上資料庫的鏡像處於一致狀態,並保證在完成快照之前他們仍然保持一致狀態
use admin
db.fsyncLock() //進入fsync和lock狀態
查看當前鎖的狀態
use admin
db.currentOp()
釋放鎖
db.fsyncUnlock() //鎖釋放之前可能有短暫的延遲
資料匯入mongoDB使用mongoimport
mongoimport 工具可載入3種檔案格式的資料
1、CSV:此種檔案格式,每行代表一個文檔,欄位之間由逗號分隔
2、TSV:該檔案類似CSV,它使用TAB作為分隔字元
3、JSON:該檔案格式每行都辦好一塊JSON,代表一個文檔,與其他格式不同,JSON可以支援可變模式的文檔
mongoimport --help
MONGODB支援簡單的基於角色的身分識別驗證系統,通過系統可以控制使用者對資料庫的訪問以及他們被授予的存取層級
添加admin
use admin
db.createUser({
user:"admin",
pwd:"root123",
roles:[{
role:"readWrite",
db:"admin"},
{role:"userAdminAnyDatabase",db:"admin"}
]
})
db.auth("admin","root123")
db.getllsers() //使用者權限相關資訊
db.serverStatus()
驗證和修複資料
修複伺服器
使用repair命令是一個代價高昂的操作,會消耗很長世間,並且要求使用兩倍於MONGODB資料檔案大小,因為所有的資料都被複製島新的檔案並重建,本質上是對所有資料檔案的重建
mongod --dbpath /data/db --repair
在大型資料修複過程中,可以指定一個大的空間的磁碟機,用於儲存修複過程中建立的臨時檔案
mongod -f /etc/mongodb.conf --repair --repairpath /tmp/bigdata/
通過validata選項可以驗證資料庫中集合的內容是否存在問題
use dblog
db.posts.ensureIndex({Author:1})
db.posts.validate()
修複集合的索引
db.posts.reIndex() //線上修複會柱塞對系統的訪問
修複集合的資料檔案
use blog
db.repairDatabase() //不適合線上運行,因為它會重建資料檔案時會組賽對資料的所有請求,修複過程中所有讀寫請求都被阻塞
MONGODB的最佳化
啟用和禁用MONGODB分析器
use blog
db.setProfilingLevel(1) //0關閉
db.setProfilingLevel(1,500) //啟動毫秒層級
db.setProfilingLevel(2) //所有查詢啟動分析器
尋找慢查詢
db.system.profile.find()
增加分析器集合的大小
1、關閉分析器
use blog
db.setProfilingLevel(0)
2、刪除system.profile集合
db.system.profile.drop()
3、建立新的集合分析器
db.createCollection("system.profile",{capped:true,size:50*1024*1024})
4、重新啟用分析器
db.setProfilingLevel(2)
使用explain()分析特定的查詢
use blog
db.posts.find().explain(true)
MONGODB巨量資料營運管理