NoSQL -- Mongodb 安裝 使用 複本集 備份恢複

來源:互聯網
上載者:User

標籤:mongodb 複本集

650) this.width=650;" src="http://s4.51cto.com/wyfs02/M01/8A/98/wKiom1g0gDfTgtVlAADLIcDzeSA294.png" title="1.png" alt="wKiom1g0gDfTgtVlAADLIcDzeSA294.png" />

Mongodb 是由c++編寫的基於分布式檔案儲存體的開來源資料庫系統,介於關聯式資料庫和非關聯式資料庫之間,支援查詢語言很強大。高負載情況下,添加多個節點保證伺服器效能,旨在為web應用提供可擴充的高效能儲存;mongodb將資料存放區為一個文檔,由索引值對(key=>value)組成,類似json對象。

官網:https://www.mongodb.com/ 

應用:

CERN,著名的粒子物理研究所,歐洲核子研究中心大型強子對撞機的資料使用MongoDB;

Craiglist,上使用MongoDB的存檔數十億條記錄;

Shutterfly,以互連網為基礎的社會和個人出版服務,使用MongoDB的各種持久性資料存放區的要求;

Intuit公司,一個為小企業和個人的軟體和服務提供者,為小型企業使用MongoDB的跟蹤使用者的資料;

650) this.width=650;" src="http://s2.51cto.com/wyfs02/M01/8A/98/wKiom1g0g5LybJrGAAGX2nzBNAw214.png" title="2.png" style="width:650px;height:224px;" alt="wKiom1g0g5LybJrGAAGX2nzBNAw214.png" width="650" vspace="0" hspace="0" height="224" border="0" />

650) this.width=650;" src="http://s4.51cto.com/wyfs02/M01/8A/95/wKioL1g0g7HyOJmKAAFzRTS--g4083.png" title="3.png" style="width:700px;height:366px;" alt="wKioL1g0g7HyOJmKAAFzRTS--g4083.png" width="700" vspace="0" hspace="0" height="366" border="0" />

 mongodb 安 裝 

www.apelearn.com/bbs/data/download/mongodb-org-3.0.tar.gz  //rpm包,大家 可以用

官方提供的源只支援64位系統,安裝的epel擴充源,可以安裝mongodb2.4版本,此次我們安裝3.0版本

vim /etc/yum.repos.d/mongodb-org-3.0.repo  //加入如下內容
[mongodb-org-3.0]
name=MongoDB Repository
baseurl=http://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.0/x86_64/   
gpgcheck=0
enabled=1
安裝:yum install -y mongodb-org
編輯:vim /etc/mongod.conf
fork: true
pidFilePath: /var/run/mongodb/mongod.pid

bind_ip: 192.168.1.1,192.168.1.2,192.168.1.3  # 留空的話表示監聽所有

註:把這兩行後面#開頭的注釋刪掉,否則重啟的時候會有問題
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
vim /etc/security/limits.conf //加入
mongod soft nofile 64000
mongod hard nofile 64000
mongod soft nproc 32000
mongod hard nproc 32000
啟動:service mongod start   # 啟動的過程會比較慢,這是它在寫資料 /var/lib/mongo

啟動失敗的話,可用下面方式啟動:mongod -f /etc/mongod.conf

mongodb 的 使 用 
mongodb 串連:

mongo   //直接進入mongo的shell

mongo --port 27018   //指定監聽連接埠進入

mongo --host 127.0.0.1   //串連遠程mongo

mongo -uusername -ppasswd   //設定驗證時指定使用者名稱密碼,和mysql類似

mongodb 使用者管理:

use admin    //切換到admin庫下,admin和test是預設內建的倆庫

use teng12   //切換到teng12庫,不存在會自動建立

show users   //查看當前庫下所有的使用者

db.system.users.find()   //列出所有使用者,需要切換到admin庫

db.createUser({user:"admin",pwd:"123456",roles:[{role:‘dbOwner‘,db:‘userdb‘}]})   //建立使用者

db.dropUser(‘admin‘) //刪除使用者

使用者角色:http://bbs.51cto.com/thread-1146654-1.html

mongodb 庫管理:

db.stats()    //查看當前庫的資訊

db.version()   //查看版本

show teng12  //查看庫,該庫是空的所以無userdb,建立個集合就可看到

db.createCollection(‘clo1‘)   //建立集合clo1,在當前庫下面建立

db.dropDatabase()   //刪除當前庫,要想刪除某個庫,必須切換到那個庫下

db.serverStatus()   //查看mongodb伺服器的狀態

mongodb 集合:

db.createCollection("mycol", { capped : true, autoIndexID : true, size : 6142800, max : 10000 } ) 

//文法:db.createCollection(name,options)

name:集合的名字。options可選,用來配置集合的參數,參數如下

autoindexID  true/false (可選)如果為true,自動建立索引_id欄位的預設值是false;

capped true/false (可選)如果為true,則啟用封頂集合。達其最大值就會覆蓋最早條目;

size (可選)指定最大大小位元組封頂集合。封頂如果是 true,那麼你還需要指定這個欄位。單位B

max (可選)指定封頂集合允許在檔案的最大數量

mongodb 資料管理:

db.Account.insert({AccountID:1,UserName:"123",password:"123456"})   //建立集合

db.Account.update({AccountID:1},{"$set":{"Age":20}})   //更新

show collections   //查看集合,或者使用show  tables

db.Account.find()   //查看所有文檔

db.Account.drop()   //刪除所有文檔,即刪除集合

db.printCollectionStats()  // 然後查看集合狀態

db.Account.find({AccountID:1})   //根據條件查詢

db.Account.remove({AccountID:1})  //根據條件刪除

 副 本 集 
早期版本使用一主一從,類似mysql,但slave在此架構為唯讀,主宕機後,從無法自動切為換主;

目前已由主從改為複本集,為一主(primary)多從(secondary,唯讀),支援以權重切換從為主,此架構中可建立一個仲裁(arbiter)角色,只負責裁決,不儲存資料,此架構中讀寫資料都在主上,若實現負載平衡需要手動指定從庫的目標server。

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/8A/98/wKiom1g0joniPC2rAAEzXeM1lBw627.png" title="4.png" style="width:750px;height:271px;" alt="wKiom1g0joniPC2rAAEzXeM1lBw627.png" width="750" vspace="0" hspace="0" height="271" border="0" />

primary
secondary
secondary
192.168.1.1
192.168.1.2
192.168.1.3

編輯:vim /etc/mongod.conf   # 之後重啟三台機器

replication:##oplog大小  oplogSizeMB: 20##複製集名稱  replSetName: teng

串連主,在主上運行命令mongo
> use admin
> config={_id:"teng",members:[{_id:0,host:"192.168.1.1:27017"},{_id:1,host:"192.168.1.2:27017"},{_id:2,host:"192.168.1.3:27017"}]}
> rs.initiate(config)
> rs.add("192.168.1.2")
> rs.add("192.168.1.3")
rs.status() //查看狀態
如果兩個從上的狀態為"stateStr" : "STARTUP", 則需要進行如下操作
> var config=config={_id:"teng",members:[{_id:0,host:"192.168.1.1:27017"},{_id:1,host:"192.168.1.2:27017"},{_id:2,host:"192.168.1.3:27017"}]}

> rs.reconfig(config)

此時再次查看rs.status()會發現從的狀態變為SECONDARY

主上建庫,建集合
> use mydb
> db.acc.insert({AccountID:1,UserName:"123",password:"123456"})
> show dbs
從上查看
> show dbs   
若出現錯誤Error: listDatabases failed:{ "note" : "from execCommand", "ok" : 0, "errmsg" : "not master" },需要執行
> rs.slaveok()   

更改權重模仿主宕機:

預設三台機器權重都為1,如果任何一個權重設定為比其他的高,則該台機器馬上切換為primary角色,所以我們預設三台機器的權重分別為:1:3,2:2,3:1
在主上執行
cfg = rs.conf()
cfg.members[0].priority = 3
cfg.members[1].priority = 2
cfg.members[2].priority = 1
rs.reconfig(cfg)
這樣的話,第二個節點將會成為候選主節點。
主上執行:iptables -I INPUT -p tcp --dport 27017 -j DROP

 mongodb 備 份 恢 複 

備份指定庫:mongodump -h ip -d dbname -o dir   //-o後指定備份到哪裡,它是一個目錄

備份所有庫:mongodump -h ip -o dir   //不加資料庫dbname,則備份所有庫

備份指定集合:mongodump -d mydb -c testc -o /tmp/testc   //-c指定集合名字

匯出指定集合:mongoexport -d mydb -c testc -o /tmp/testc.json   //-o後面跟的是一個檔案名稱字

恢複指定庫:mongorestore -d mydb dir/   //-d 恢複庫的名字,dir就是該庫備份時所在的目錄

恢複所有庫:mongorestore --drop dir/    //--drop可選,指恢複之前刪除之前資料,不建議使用

復原集合:mongorestore -d mydb -c testc dir/mydb/testc.bson // -c 集合名,bson檔案的路徑

匯入集合:mongoimport -d mydb -c testc --file /tmp/testc.json

-------------------------------------------------------------------------------------------------




本文出自 “北冰--Q” 部落格,請務必保留此出處http://beibing.blog.51cto.com/10693373/1876007

NoSQL -- 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.