MongoDB Replica Sets 简明搭建教程

无论我们学习什么语言,能打出一个Hello World成为了我们的第一步。而今天这个例子,相当于是MongoDB Replica Sets搭建的Hello World。下面例子中,是在一台机器搭建的,所以采用了不同端口不同目录来做。现实中需要在不同的机器中搭建,要不然达不到负载分摊和数据备份的目的。

开始搭建,需要启动三个mongod server,分别的配置文件如下:

#监听端口
port = 27017
#数据存储目录
dbpath = /data/mongodata/27017
#日志文件地址
logpath = /data/mongodata/27017/mongo.log
#pid文件存储地址
pidfilepath = /data/mongodata/27017/mongo.pid
#keyfile地址,keyfile是一个密码文件,生成方法在下面有说明,集群中所有节点的keyfile必须一样,这样他们才能互相通信
keyFile = /data/mongodata/mongo.keyfile
#启用权限管理
auth = true
#不记录journal日志
nojournal = true
#集群名字,后续集群初始化会用到
replSet = rs0
#同步日志的数量
oplogSize = 5000
#最大连接数
maxConns = 10240
#数据文件中,每个db分成一个文件夹存储
directoryperdb = true
#日志文件采用追加式
logappend = true
#精减输出的日志
quiet = true
#以守护进程的方式运行
fork = true
port = 27018
dbpath = /data/mongodata/27018
logpath = /data/mongodata/27018/mongo.log
pidfilepath = /data/mongodata/27018/mongo.pid
keyFile = /data/mongodata/mongo.keyfile
auth = true
nojournal = true
replSet = rs0
oplogSize = 5000
maxConns = 10240
directoryperdb = true
logappend = true
quiet = true
fork = true
port = 27019
dbpath = /data/mongodata/27019
logpath = /data/mongodata/27019/mongo.log
pidfilepath = /data/mongodata/27019/mongo.pid
keyFile = /data/mongodata/mongo.keyfile
auth = true
nojournal = true
replSet = rs0
oplogSize = 5000
maxConns = 10240
directoryperdb = true
logappend = true
quiet = true
fork = true

创建上面配置文件中的keyfile:

openssl rand -base64 741 > /data/mongodata/mongo.keyfile

正式启动结点

mongod --config=27017.conf
mongod --config=27018.conf
mongod --config=27019.conf

进行其中一个mongod,完成相关的配置

rsconfig = {_id: 'rs0', members: [
                          {_id: 0, host: 'localhost:27017'},
                          {_id: 1, host: 'localhost:27027'},
                          {_id: 2, host: 'localhost:27037'}]}

用上面的配置初始化集群

rs.initiate(rsconfig)

然后用下面命令查看集群情况,当看到有一个PRIMARY节点后,就说明初始化完成了

rs.status()

然后添加集群权限,登陆到你的PRIMARY节点,执行下面命令设置admin账号的用户名和密码

use admin
db.addUser('username', 'password')

至此,你已经有一个root权限的mongodb集群了,如果你还想为下面的数据库单独设置权限,可以执行下面命令,就添加了一个在youdb下面的账号。这个账号只能操作userdb这个库,无法操作其他库。

use yourdb
db.addUser('username', 'password')

anyShare赠人玫瑰,手有余香,分享知识,德艺双馨!
          

无觅相关文章插件,快速提升流量