mongodb快速搭建复制集
现在很多数据库都支持实时安全备份,mongodb 也不例外。mongodb的复制集就是为安全备份而生。原理就是在主数据库被操作改变的同时,对副本数据库作同样的操作,时刻保持和主副数据库的一致性。同时顺便衍生了一个功能就是读写分离,可以写在主数据库,读在副本数据库,一定程度上实现了负载的均衡。
下面来说一下配置过程:
我这里选了一台CentOS的机器(部署一个从节点)和一台windows机器(部署一台主节点和一台从节点)。
1.配置文件
##Linux目录配置文件:

systemLog:
 destination: file
 path: “/www/server/mongodb/rs/log/rs0.log”
 logAppend: true
 quiet: true
 storage:
 dbPath: “/www/server/mongodb/rs/data/rs0”
 journal:
 enabled: true
 processManagement:
 fork: true
 net:
 bindIp: 0.0.0.0
 port: 28000
 security:
 keyFile: “/www/server/mongodb/rs/keyFile”
 replication:
 replSetName: “dsrs”
 ##windows 环境配置文件
 systemLog:
 destination: file
 path: “D:\proj\mongodb\log\rs0.log”
 logAppend: true
 quiet: true
 storage:
 dbPath: “D:\proj\mongodb\data\rs0”
 journal:
 enabled: true
 net:
 bindIp: 0.0.0.0
 port: 28000
 security:
 keyFile: “D:\proj\mongodb\keyFile”
 replication:
 replSetName: “dsrs”

不同环境的配置文件大同小异,第一个比较关键选项是 repSetName,这个字段决定该节点能不能找到自己的组织(所属复制集),第二个是keyFile,该文件是一个私钥文件,每一个节点都有一个相同的keyFile文件,他用来保证不同节点之间的跨IP通信。生成方法是在linux上运行openssl rand -base64 90 -out keyfile 命令,然后设置权限 chmod 600 keyFile,不能设置过高的权限,否则会报错。
2.启动

linux /usr/bin/mongod --config /ww/server/mongodb/rs/rs0.conf
 windows mongod --config config文件路径


3.主从配置
用mongo客户端登录到主节点,mongo s3.nsloop.com:28001,然后rs.initiate()初始化,再rs.add(‘s3.nsloop.com:28002’),添加从节点。rs.status()检查从节点是否已经配置好。注意,只在需要设置为primary的那个结点进行rs.initiate()操作,而不要在从节点进行该操作。
4创建数据库成员角色,选择在要创建成员的数据库,这里用use admin.创建角色的时候要注意要第一个角色一定要创建权限足够高的用户(建议是root),因为你一旦创建了角色,那么操作数据库都需要用户名密码验证了,假如这第一个用户只有读权限,那就没法进行后面的工作了。
另外有一个误区就是在哪个数据库创建成员,那么该成员就只能对自己所在的数据库进行操作?No!在哪个数据库创建成员只决定这个成员的信息存储在哪里而已。
创建角色的操作:
先:use admin
再:db.createUser(

{
 user:“testUser”, pwd:“1232456”,
 roles:[{role:“root”,db:“admin”}
 ]
 } )


创建用户之后,进行db.auth(‘testUser’,pwd:‘123456’)就可以对数据库进行操作了。
关于 security的auth选项和keyFile选项,auth是在单节点,非集群的情况下用的,复制集需要用的是keyFile,

5.用studio 3T 登录
首先请确保节点所在机器的防火墙是关闭的或者对该服务端口添加了例外(腾讯云阿里云的话还要开放安全组端口),否则当然远程无法登录。

注意

mongodb复制集同步速度 mongodb复制集搭建_mongodb复制集同步速度

members 填要主节点即可,填所有的节点也行,

mongodb复制集同步速度 mongodb复制集搭建_配置文件_02


记录完毕。