MongoDB開啟許可權認證下配置Master和Slave模式

來源:互聯網
上載者:User

轉自:http://www.tech126.com/mongodb-master-slave/

MongoDB是一個可擴充,高效能、開源、模式自由、面向文檔的資料庫

它並不是我們通常用的RDBMS,屬於最近比較熱門的"NoSql"的資料庫範疇

它和一般的基於key-value的db還是不大一樣的,因為它本身的功能很強大

它已經實現了類似於SQL的很多功能,如index,limit,skip,group….

當應用的資料量達到海量級,傳統的Mysql,Oracle不能滿足我們的效能要求

而對於資料還有一定的查詢需求時,也許可以考慮一下使用MongoDB

安裝很簡單:

摺疊 展開 複製代碼

wget "http://downloads.mongodb.org/linux/mongodb-linux-x86_64-1.2.4.tgz" 

tar zxvf mongodb-linux-x86_64-1.2.4.tz 

ln -s /opt/mongodb-linux-x86_64-1.2.4/ /usr/local/mongodb

mkdir /opt/mongodb_data

MongoDB有2個版本的,官方推薦使用mongodb-linux-x86_64-1.2.4.tgz,只有在linux是老系統,mongodb無法啟動時,才使用"legacy static“版

MongoDB裡提供了簡單的Auth功能,如果要開啟認證,則在啟動之前,需要首先增加使用者

摺疊 展開 複製代碼

/usr/local/mongodb/bin/mongo admin 

db.addUser('admin','manager') 

db.auth('admin','manager') 

show dbs 

use address 

db.addUser('mongodb','test') 

其中,admin是一個特殊的資料庫,只有在admin上db.auth通過後,才能給其它的資料庫增加許可權

如上,我們為address資料庫增加了一個mongodb的使用者

另外,如果我們要啟用Master/Slave模式,而且開啟了Auth功能,則需要同時在Master和Slave上的local資料庫上增加一個repl的使用者

摺疊展開複製代碼

use local 

db.addUser('repl','replication') 

否則,當我們啟動slave時,會報錯:

replauthenticate: no user in local.system.users to use for authentication

replauthenticate: can't authenticate to master server, user:repl

然後,我們使用如下指令碼來分別啟動Master和Slave即可,注意–oplogSize選項,它指定了master往slave同步時,更新日誌儲存的最大大小,預設64位機器,最大1G,如果太小,slave沒有及時跟上的話,有可能會資料不一致

摺疊 展開 複製代碼

nohup /usr/local/mongodb/bin/mongod run –dbpath=/data/mongodb_data/ –logpath=/data/mongodb_data/mongodb.log –oplogSize=10000M –logappend  –auth –master &

nohup /usr/local/mongodb/bin/mongod run –dbpath=/opt/mongodb_data/ –logpath=/opt/mongodb_data/mongodb.log –logappend –auth –slave –source=192.168.10.10:27017 & 

在python中,可以使用pymongo模組

摺疊 展開 複製代碼

from pymongo.connection import Connection 

connection = Connection("127.0.0.1",27017) 

db = connection.mail_addr 

db.authenticate('mongodb','test') 

…… 

db.address.save(user_addr,safe=True) 

使用save來儲存某個記錄,如果我們已經使用find()查處了某個記錄,則修改後也可以使用save來進行update操作

如果要實現某條記錄不存在就insert,存在就update,則可以使用

摺疊 展開 複製代碼

db.foo.update({'yy'}:5,{'$set':{'xx':2}},upsert=true) 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.