mongodb3.2 replica sets

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介:

一、配置文件/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 MongoDB Docker
基于docker容器下mongodb 4.0.0 的Replica Sets+Sharded Cluster集群(1)
基于docker容器下mongodb 4.0.0 的Replica Sets+Sharded Cluster集群(1)
158 0
基于docker容器下mongodb 4.0.0 的Replica Sets+Sharded Cluster集群(1)
|
NoSQL Java MongoDB
基于docker容器下mongodb 4.0.0 的Replica Sets+Sharded Cluster集群(3)
基于docker容器下mongodb 4.0.0 的Replica Sets+Sharded Cluster集群(3)
170 0
|
NoSQL MongoDB Docker
基于docker容器下mongodb 4.0.0 的Replica Sets+Sharded Cluster集群(2)
基于docker容器下mongodb 4.0.0 的Replica Sets+Sharded Cluster集群(2)
176 0
|
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.
4111 0
How to Create Highly Available MongoDB Databases with Replica Sets
|
1月前
|
存储 JSON NoSQL
【文档数据库】ES和MongoDB的对比
【文档数据库】ES和MongoDB的对比
180 1
|
17天前
|
NoSQL JavaScript 前端开发
JavaScript与数据库MongoDB的联动
JavaScript和MongoDB结合,构建Web应用的关键技术。MongoDB,作为NoSQL数据库,以其灵活性和高性能深受开发者喜爱。本文探讨两者的基本概念,如JavaScript在前端交互和后端数据处理的作用,MongoDB的文档存储和查询特性。通过Node.js和mongoose库,展示了连接数据库、定义数据模型及增删改查操作的代码示例。强调了性能优化(如索引、批量操作)和安全措施(如权限控制、数据加密)的重要性。最后,提供了一个简单的CRUD应用示例,涵盖Express和前端API调用。
17 0
|
19天前
|
NoSQL MongoDB 数据库
MongoDB的GUI工具——Robo 3T连接远程数据库MongoDB
MongoDB的GUI工具——Robo 3T连接远程数据库MongoDB
20 0