您的位置:首页 > 数据库 > Mongodb

Mongodb主从配置完美实现读写分离

2014-02-07 17:46 435 查看
一:使用命令行方式配置mongodb主从
[root@server11 ~]#  /usr/local/mongodb/bin/mongod --bind_ip 192.168.1.112 -port 3306 --dbpath /data/mongodb/db1/ --logpath /usr/local/mongodb/logs/server1.log  --rest --master &

[1] 14449

[root@server12 ~]# /usr/local/mongodb/bin/mongod --bind_ip 192.168.1.113 --port 3306 --dbpath /data/mongodb/db2/ --logpath /usr/local/mongodb/logs/server2.log --rest --slave --source 192.168.1.112:3306 &

[1] 16853

二:连接测试数据同步情况
[root@server11 ~]# /usr/local/mongodb/bin/mongo 192.168.1.112:3306

MongoDB shell version: 2.2.2

connecting to: 192.168.1.112:3306/test

> use test

switched to db test

> db.test.save({b:2})

> db.test.find()

{ "_id" : ObjectId("50fcb7f05712bfb21c866dc6"), "a" : 1 }

{ "_id" : ObjectId("50fcdccf252ef3433457646f"), "b" : 2 }

[root@server12 ~]# /usr/local/mongodb/bin/mongo 192.168.1.113:3306

MongoDB shell version: 2.2.2

connecting to: 192.168.1.113:3306/test

> use test

switched to db test

> db.test.find()

{ "_id" : ObjectId("50fcb7f05712bfb21c866dc6"), "a" : 1 }

{ "_id" : ObjectId("50fcdccf252ef3433457646f"), "b" : 2 }



三:创建repl用户,主要用于后续的安全认证同步
[root@server11 ~]#  /usr/local/mongodb/bin/mongo 192.168.1.112:3306

> use local

switched to db local

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

{

"user" : "repl",

"readOnly" : false,

"pwd" : "418b80a28664aeaeb1ec8bf792ea3052",

"_id" : ObjectId("50fce98cc4553449b56c6e9f")

}

[root@server12 ~]# /usr/local/mongodb/bin/mongo 192.168.1.113:3306

> use local

switched to db local

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

{

"user" : "repl",

"readOnly" : false,

"pwd" : "418b80a28664aeaeb1ec8bf792ea3052",

"_id" : ObjectId("50fce98cc4553449b56c6e9f")

}

四:创建普通用户yang,master端创建即可
> use admin

switched to db admin

> db.addUser('yang','123')

> show users

{

"_id" : ObjectId("50fce0bd15861bedf081584a"),

"user" : "yang",

"readOnly" : false,

"pwd" : "c26040a2869fb7579c83e85c54faaffa"

}

> db.system.users.find()

{ "_id" : ObjectId("50fce0bd15861bedf081584a"), "user" : "yang", "readOnly" : false, "pwd" : "c26040a2869fb7579c83e85c54faaffa" }

五:重启mongodb主从实例,以auth方式启动,用户登录测试
[root@server11 ~]# /usr/local/mongodb/bin/mongod --bind_ip 192.168.1.112 --auth --port 3306 --dbpath /data/mongodb/db1/ --logpath /usr/local/mongodb/logs/server1.log

--rest --master &

[root@server12 ~]# /usr/local/mongodb/bin/mongod --bind_ip 192.168.1.113 --auth --port 3306 --dbpath /data/mongodb/db2/ --logpath /usr/local/mongodb/logs/server2.log

--rest --slave --source 192.168.1.112:3306 &

[root@server11 ~]# /usr/local/mongodb/bin/mongo 192.168.1.112:3306

MongoDB shell version: 2.2.2

connecting to: 192.168.1.112:3306/test

> use admin

switched to db admin

> show users

Mon Jan 21 14:42:47 uncaught exception: error: {

"$err" : "unauthorized db:test ns:test.system.users lock type:1 client:192.168.1.112",

"code" : 10057

}

> db.auth('yang','123')

1

> show users

{

"_id" : ObjectId("50fce0bd15861bedf081584a"),

"user" : "yang",

"readOnly" : false,

"pwd" : "c26040a2869fb7579c83e85c54faaffa"

}

再次登录web界面需要输入用户名和密码!

五:使用配置文件管理mongodb
[root@server11 ~]# cat /etc/mongodb.conf

fork = true

quiet = true

bind_ip = 192.168.1.112

port = 3306

dbpath = /data/mongodb/db1

logpath = /usr/local/mongodb/logs/server1.log

logappend = true

journal = true

rest = true

master= true

auth = true

[root@server11 ~]# /usr/local/mongodb/bin/mongod -f /etc/mongodb.conf

all output going to: /usr/local/mongodb/logs/server1.log

forked process: 5831

child process started successfully, parent exiting

[root@server11 ~]# netstat -ntpl |grep mongo

tcp 0 0 192.168.1.112:3306 0.0.0.0:* LISTEN 5831/mongod

tcp 0 0 192.168.1.112:4306 0.0.0.0:* LISTEN 5831/mongod

[root@server12 ~]# cat /etc/mongodb.conf

fork = true

quiet = true

bind_ip = 192.168.1.113

port = 3306

dbpath = /data/mongodb/db2

logpath = /usr/local/mongodb/logs/server2.log

logappend = true

journal = true

rest = true

slave = true

source = 192.168.1.112:3306

auth = true

[root@server12 ~]# /usr/local/mongodb/bin/mongod -f /etc/mongodb.conf

all output going to: /usr/local/mongodb/logs/server2.log

forked process: 3064

child process started successfully, parent exiting

[root@server11 ~]# /usr/local/mongodb/bin/mongod -f /etc/mongodb.conf --shutdown

[root@server12 ~]# /usr/local/mongodb/bin/mongod -f /etc/mongodb.conf --shutdown

参考文章:http://docs.mongodb.org/manual/administration/master-slave/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: