mongodb3.2 replica sets

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介:

一、配置文件/etc/mongod.conf

[root@mongo01 ~]# egrep -v "^(#|$)" /etc/mongod.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
systemLog:
   destination:  file
   logAppend:  true
   path:  /data/mongodb/log/rs1 .log
storage:
   dbPath:  /data/mongodb/data
   directoryPerDB:  true
   journal:
     enabled:  true
processManagement:
   fork:  true   # fork and run in background
   pidFilePath:  /data/mongodb/conf/mongod .pid   # location of pidfile
net:
   port: 27027
replication:
    oplogSizeMB: 50000
    replSetName: rs1


[root@mongo01 ~]#

[root@mongo01 ~]# ls /data/mongodb/

1
arbiter  conf  data  log  startaribiter.sh

[root@mongo01 ~]# ls /data/mongodb/arbiter/

1
arbiter.conf  conf  data  log

[root@mongo01 ~]# egrep -v "^(#|$)" /data/mongodb/arbiter/arbiter.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
systemLog:
   destination:  file
   logAppend:  true
   path:  /data/mongodb/arbiter/log/rs1 .log
storage:
   dbPath:  /data/mongodb/arbiter/data
   directoryPerDB:  true
   journal:
     enabled:  true
processManagement:
   fork:  true   # fork and run in background
   pidFilePath:  /data/mongodb/arbiter/conf/mongod .pid   # location of pidfile
net:
   port: 27029
replication:
    oplogSizeMB: 50000
    replSetName: rs1

[root@mongo01 ~]# cat /data/mongodb/startarbiter.sh

1
2
3
4
#!/bin/sh
/etc/rc .d /init .d /functions
cd  ${0%/*} /arbiter
daemon --user mongod  "mongod --config arbiter.conf"

[root@mongo01 ~]#

注意:arbiter.conf文件的属主、属组为mongod


二、启动服务,配置副本集

service mongod  start 

/data/mongodb/startaribiter.sh

启动第二个节点

然后:在primary上,

1
2
3
4
rs.initiate()
rs.add( "mongodb2.example.net" )
rs.add( "mongodb3.example.net" )
rs.addArb(“mongodb1.example.net:27029”)


如果希望降低primary的优先级:

1
2
3
4
cfg = rs.conf()
cfg.members[2].priority = 0.5
rs.reconfig(cfg)
rs.status()


实现复制后,在从节点上查看数据如下:

1
2
SECONDARY> rs.slaveOk()
SECONDARY> show collections

三、 使用keyFile实现复制验证

在主节点上创建群集用户及密码如下:

1
2
3
4
5
6
7
8
9
10
11
12
admin = db.getSiblingDB( "admin" )
admin.createUser(
   {
     user: “clusteradmin”,
     pwd : “clusterpwd”,
     roles: [ 
     { role:  "userAdminAnyDatabase" , db:  "admin"  },
     { role: “clusterAdmin”, db:  "admin"  },
     { role: “root”, db:  "admin"  }
     ]
   }
)

测试用户:

1
db.getSiblingDB( "admin" ).auth(“clusteradmin”, “clusterpwd” )


在各从节点上关闭服务:

use admin

db.shutdownServer()

包括arbiter节点也要关闭服务,最后再关闭primary节点的服务。


然后在各配置文件mongdb.conf中添加认证文件:

1
2
security:
   keyFile:  /data/mongodb/conf/keyfile .key

[root@mongo01 ~]# cat /data/mongodb/conf/keyfile.key

1
abcdefgh

该文件的权限必须是600400,并把该文件复制到各节点上(保持内容相同),该文件也可以使用以下命令生成:

1
openssl rand -base64 755 >  path-to-keyfile

最后再新启动各节点的mongodb服务,并重新login ,测试。


参考:https://docs.mongodb.com/manual/tutorial/deploy-replica-set/

https://docs.mongodb.com/manual/tutorial/enforce-keyfile-access-control-in-existing-replica-set/











本文转自 meteor_hy 51CTO博客,原文链接:http://blog.51cto.com/caiyuanji/1790862,如需转载请自行联系原作者
相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
NoSQL Java MongoDB
基于docker容器下mongodb 4.0.0 的Replica Sets+Sharded Cluster集群(3)
基于docker容器下mongodb 4.0.0 的Replica Sets+Sharded Cluster集群(3)
163 0
|
NoSQL MongoDB Docker
基于docker容器下mongodb 4.0.0 的Replica Sets+Sharded Cluster集群(2)
基于docker容器下mongodb 4.0.0 的Replica Sets+Sharded Cluster集群(2)
171 0
|
NoSQL MongoDB Docker
基于docker容器下mongodb 4.0.0 的Replica Sets+Sharded Cluster集群(1)
基于docker容器下mongodb 4.0.0 的Replica Sets+Sharded Cluster集群(1)
152 0
基于docker容器下mongodb 4.0.0 的Replica Sets+Sharded Cluster集群(1)
|
NoSQL
How to Create Highly Available MongoDB Databases with Replica Sets
Find out how you can create MongoDB databases with high availability by backing up data through replica set elections.
4102 0
How to Create Highly Available MongoDB Databases with Replica Sets
|
1月前
|
存储 SQL NoSQL
什么是 MongoDB,为什么它是当今最受欢迎的数据库之一?
什么是 MongoDB,为什么它是当今最受欢迎的数据库之一?
|
5天前
|
存储 JSON NoSQL
【文档数据库】ES和MongoDB的对比
【文档数据库】ES和MongoDB的对比
15 1
|
11天前
|
NoSQL JavaScript 安全
精心操作MongoDB:删除数据库的关键步骤和重要事项
精心操作MongoDB:删除数据库的关键步骤和重要事项