mongodb3.2 replica sets

本文涉及的产品
云数据库 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)
193 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)
189 0
|
NoSQL MongoDB Docker
基于docker容器下mongodb 4.0.0 的Replica Sets+Sharded Cluster集群(2)
基于docker容器下mongodb 4.0.0 的Replica Sets+Sharded Cluster集群(2)
206 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.
4132 0
How to Create Highly Available MongoDB Databases with Replica Sets
|
15天前
|
存储 JSON NoSQL
学习 MongoDB:打开强大的数据库技术大门
MongoDB 是一个基于分布式文件存储的文档数据库,由 C++ 编写,旨在为 Web 应用提供可扩展的高性能数据存储解决方案。它与 MySQL 类似,但使用文档结构而非表结构。核心概念包括:数据库(Database)、集合(Collection)、文档(Document)和字段(Field)。MongoDB 使用 BSON 格式存储数据,支持多种数据类型,如字符串、整数、数组等,并通过二进制编码实现高效存储和传输。BSON 文档结构类似 JSON,但更紧凑,适合网络传输。
52 15
|
24天前
|
存储 NoSQL 关系型数据库
阿里云数据库MongoDB版助力信也科技 打造互联网金融企业样板
我们的风控系统引入阿里云数据库MongoDB版后,解决了特征类字段灵活加减的问题,大大提高了开发效率,极大的提升了业务用户体验,获得了非常好的效果
阿里云数据库MongoDB版助力信也科技 打造互联网金融企业样板
|
2月前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第21天】本文探讨了MongoDB Atlas的核心特性、实践应用及对云原生数据库未来的思考。MongoDB Atlas作为MongoDB的云原生版本,提供全球分布式、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了云原生数据库的未来趋势,如架构灵活性、智能化运维和混合云支持,并分享了实施MongoDB Atlas的最佳实践。