MongoDB 備份恢復
一、概述
1.1 MongoDB概念
MongoDB 是由C++語言編寫的,是一個基于分布式文件存儲的開源數據庫系統。在高負載的情況下,添加更多的節點,可以保證服務器性能。MongoDB 旨在為WEB應用提供可擴展的高性能數據存儲解決方案。MongoDB 將數據存儲為一個文檔,數據結構由鍵值(key=>value)對組成。MongoDB 文檔類似于 JSON 對象。字段值可以包含其他文檔,數組及文檔數組。在nosql數據庫里,大部分的查詢都是鍵值對(key、value)的方式。MongoDB是一個介于關系數據庫和非關系數據庫之間的產品,是非關系數據庫當中最像關系數據庫的。其特征NoSQL、文檔存儲、Json數據模型、支持事務。
1.2 NoSQL概念
NoSQL,指的是非關系型的數據庫。NoSQL有時也稱作Not Only SQL的縮寫,是對不同于傳統的關系型數據庫的數據庫管理系統的統稱。
NoSQL用于超大規模數據的存儲。(例如谷歌或Facebook每天為他們的用戶收集萬億比特的數據)。這些類型的數據存儲不需要固定的模式,無需多余操作就可以橫向擴展。
1.3 NoSQL的特征
高擴展性 :Nosql去掉了關系數據庫的關系型特性,易于橫向擴展。
高性能 :Nosql通過簡單的key-value方式獲取數據,非常快速。還有NoSQL的Cache是記錄級的,是一種細粒度的Cache,所以NoSQL在這個層面上來說就要性能高很多。
靈活的數據模型 :相對于關系數據庫里,增刪字段的繁瑣,NoSQL無需事先為要存儲的數據建立字段,隨時可以存儲自定義的數據格式。
高可用 :NoSQL在不太影響性能的情況,就可以方便的實現高可用的架構。比如mongodb通過mongos、config server replica set,shard就可以快速配置出高可用配置。
二 備份恢復
a.mongodb數據備份
mongodump命令腳本語法如下:
mongodump -h dbhost -d dbname -o dbdirectory
-h:
MongDB所在服務器地址,例如:127.0.0.1,當然也可以指定端口號:127.0.0.1:27017
-d:
需要備份的數據庫實例,例如:test
-o:
備份的數據存放位置,例如:c:\data\dump,當然該目錄需要提前建立,在備份完成后,系統自動在dump目錄下建立一個test目錄,這個目錄里面存放該數據庫實例的備份數據。
語法
描述
實例
mongodump --host HOST_NAME --port PORT_NUMBER
該命令將備份所有MongoDB數據
mongodump --host localhost --port 27017
mongodump --dbpath DB_PATH --out BACKUP_DIRECTORY
mongodump --dbpath /data/db/ --out /data/backup/
mongodump --collection COLLECTION --db DB_NAME
該命令將備份指定數據庫的集合。
mongodump --collection mycol --db test
b.mongodb數據恢復
mongorestore命令腳本語法如下:
>mongorestore -h
--host <:port>, -h <:port>:
MongoDB所在服務器地址,默認為: localhost:27017
--db , -d :
需要恢復的數據庫實例,例如:test,當然這個名稱也可以和備份時候的不一樣,比如test2
--drop:
恢復的時候,先刪除當前數據,然后恢復備份的數據。就是說,恢復后,備份后添加修改的數據都會被刪除,慎用哦!
mongorestore 最后的一個參數,設置備份數據所在位置,例如:/tmp/testdb
你不能同時指定
--dir:
指定備份的目錄
你不能同時指定
此時查看數據已經正常恢復。
3.7 密碼權限
為mongodb設置密碼,需要進行auth啟動,在配置文件添加auth=true
a.設置數據庫管理員
> use admin switched to db admin > db.createUser({user:"root",pwd:"mongopwd",roles:["userAdminAnyDatabase"]}) #創建用戶密碼,并設置權限 Successfully added user: { "user" : "root", "roles" : [ "userAdminAnyDatabase" ] } > db.auth("root","mongopwd") #認證,返回1為認證成功 1
認證通過進入數據庫db.auth 也可以在登錄的時候直接指定用戶名密碼登錄
mongo -u root -p mongopwd --authenticationDatabase admin
b.創建數據庫用戶
> use test switched to db test > db test > db.createUser({user:"testuser",pwd:"testpass",roles:["readWrite"]}) Successfully added user: { "user" : "testuser", "roles" : [ "readWrite" ] } > db.auth("testuser","testpass") 1
MongoDB 數據庫
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。