MONGODB巨量資料營運管理

來源:互聯網
上載者:User

標籤: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巨量資料營運管理

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.