MongoDB 副本集配置,开启账号认证
MongoDB 自带功能强大的主从,配置也很简单,从零开始花了30分钟搞定
3台以上机器IP: 192.168.1.24, 192.168.1.25, 192.168.1.26, 192.168.1.27(只读),每台服务器安装好mongodb。
启动副本集(副本集id:mySet)
参考文档 replication Options
通过命令启动: /path/mongod [其他参数] --replSet=mySet
通过配置文件: /path/mongod -f /path/mongo.conf
# mongo.conf 内容
replcation:
replSetName: mySet
初始化 rs.initiate(configuration)
文档参考 rs.initiate
进入mongo客户端
rs.conf() // 会提示未进行初始化 rs.initiate()
rs.initiate({
_id: "mySet", // 副本集名称
version: 1,
members: [
{ _id: 0, host: "192.168.1.24:27017", priority: 1},
{ _id: 1, host: "192.168.1.25:27017", priority: 1},
{ _id: 2, host: "192.168.1.26:27017", priority: 1},
{ _id: 3, host: "192.168.1.27:27017", hidden: true, priority: 0}, //只读
//{ _id: 99, host: "192.168.1.99", arbiterOnly: true}, // 仲裁机,不复制数据,无法做主机
]
})
配置完成后会自动选举出一台 PRIMARY
副本集动态扩展
文档参考 rs.add
新增加的机器配置同一个副本集名称(mySet)并启动,在PRIMARY主机进行操作:
rs.add({_id:4, host: "192.168.1.28", priority: 1})
新机器会自动进行数据同步,同步完成后变成SECONDARY
开启权限控制
文档参考 Enforce Keyfile Access Control in a Replica Set
+. 权限控制包括两个层面:副本集互相认证,客户机的权限认证
+. 可以通过 bindIp: host1,host2,host3
选项在网络层进行过滤
+. 配置步骤
1). 创建 keyfile ,keyfile可以任意创建,只要是合法的base64字符,长度6-1024,unix系统权限必须为600或400. 拷贝到副本集每一个成员中
2). 关闭所有mongodb成员实例,增加keyfile选项启动 --keyfile <path-to-keyfile>
,或者修改mongodb.conf
security:
keyFile: <path-to-keyfile>
3). 连接primary(rs.status()查看primary,然后切换),创建管理用户
admin = db.getSiblingDB("admin")
admin.createUser(
{
user: "root",
pwd: "PassWord123",
roles: [ { role: "root", db: "admin" } ]
}
)
官方说这里创建的用户权限必须至少高于userAdminAnyDatabase,不然会导致副本集无法访问
4). 创建其他用户,另外可以选择创建 clusterAdmin 角色,这个角色可以修改其他副本集成员的动作
db.getSiblingDB("admin").createUser(
{
"user" : "username",
"pwd" : "PassWord321",
roles: [ { "role" : "readWrite", "db" : "db_name" } ]
}
)
使用 mongodb.js 连接
const mongoCli = require("mongodb").MongoClient;
let db = yield mongoCli.connect("mongodb://192.168.1.24:27017,192.168.1.24:27017,192.168.1.24:27017/db_name?replcaSet=mySet");
// yield mongoCli.connect("mongodb://192.168.1.24:27017,192.168.1.24:27017,192.168.1.24:27017/db_name?replcaSet=mySet", function(err, client){db = client.db(db_name)});
从 SECONDARY 读取数据
主从的延迟默认是0,通过配置项自行设置。
从机需要开启 SlaveOk 才可以读取,一般的读取流程为:
use mydb
mydb.setSlaveOk()
mydb.col.find() // ...
MongoDB 副本集配置,开启账号认证的更多相关文章
- [Database] MongoDB 副本集配置
MongoDB 副本集配置 MongoDB复制是将数据同步在多个服务器的过程. 复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性, 并可以保证数据的安全性. 复制还允许您从硬 ...
- MongoDB副本集配置系列三:副本集的认证方式
1:副本集配置参考这篇博客: http://www.cnblogs.com/xiaoit/p/4478951.html 2:副本集的认证 假设有两台机器已经配置好了副本集(副本集罪一般最少3台机器,这 ...
- mongodb分片集群开启安全认证
原文地址:https://blog.csdn.net/uncle_david/article/details/78713551 对于搭建好的mongodb副本集加分片集群,为了安全,启动安全认证,使用 ...
- mongodb副本集配置
需要用到mongodb的时候单个实例肯定是不行的,挂了怎么办,那然后呢,跟mysql一样搞主从备份吗,是可以的mongodb这么弄,不过官网已经不推荐了这么干了,推荐使用副本集的模式,然后数据再大一点 ...
- 分布式文档存储数据库(MongoDB)副本集配置
副本集特征: N 个节点的集群 任何节点可作为主节点 所有写入操作都在主节点上 自动故障转移 自动恢复 相关文章: http://www.cnblogs.com/huangxincheng/archi ...
- MongoDB副本集配置系列五:副本集的在线迁移
MongoDB副本集的在线迁移 查看当前集群的状态: { "setName" : "gechongrepl", "setVersion" : ...
- mongodb.副本集配置方法(使用keyfile认证部署)
前提条件: - 已安装MongoDB, 版本以3.6为例 - 系统: Debian9 - 建议做副本集的话, 以3台以上为宜, 本文以1台主机2个服务为例 1.创建数据存放的目录, 并授权 sudo ...
- 生产环境部署MongoDB副本集(带keyfile安全认证以及用户权限)
本文同步于个人Github博客:https://github.com/johnnian/Blog/issues/8,欢迎留言. 安装软件包:mongodb-linux-x86_64-3.4.1.tgz ...
- MongoDB副本集配置系列二:配置MongoDB副本集
接上一篇博客: http://www.cnblogs.com/xiaoit/p/4479066.html 1:首先创建3台虚拟机作为配置环境 IP1:192.168.91.128 IP2:192.16 ...
随机推荐
- 动态代理AOP实现方法过滤
上一节实现了动态代理,接下来 有时候,我不需要在每一个方法都要记录日志,做权限验证 等等. 所有就有了这样的需求.AOP实现特定方法过滤,有选择性的来对方法实现AOP 拦截.就是本节标题所示. 举个例 ...
- netty实现远程调用RPC功能
netty实现远程调用RPC功能 依赖 服务端功能模块编写 客户端功能模块编写 netty实现远程调用RPC功能 PRC的功能一句话说白了,就是远程调用其他电脑的api 依赖 <dependen ...
- vs中的强大的代码段管理
vs中的代码段管理可以实现大段固定文本的快捷输入,方法: 首先编写.snippet文件如: <?xml version="1.0" encoding="utf-8& ...
- composer 的设计原理及其基本用法
相信有在用PHP的朋友近年来常听到composer这个套件管理工具.它到底是做什么用的?又是为了解决什么问题而存在呢? 要了解这个,得先从历史开始说起…. PHP最早加载类的方法 初学PHP时,最早会 ...
- ACCESS中如何比较日期和时间,使用DateDiff函数
DateDiff,语法如下:DateDiff( 间隔字符, 日期1, 日期2 [,firstdayofweek[, firstweekofyear]])一般使用 DateDiff( 间隔字符, 日期1 ...
- Delphi.NET
Delphi.NET Borland.VclDSnap.dll Borland.Vcl.TCustomClientDataSet TFieldType.ftBCD Borland.Vcl.TField ...
- webapi的几种过滤器
好久没有写博客了 今天就来聊聊asp.net webapi的过滤器们 过滤器主要有这么几种 AuthorizationFilterAttribute 权限验证 ActionFilterAttribut ...
- Oracle行转列LISTAGG函数
工作过程中需要将查询的数据分组并显示在一行.以往的工作经验,在sql server中可以用for xml path来实现. 现提供Oracle数据库的行转列方式 oracle11g官方文档简介如下: ...
- PHP数据结构之三 线性表中的单链表的PHP实现
线性表的链式存储:用一组任意的存储单元存储线性表中的数据元素.用这种方法存储的线性表简称线性链表. 链式存储线性表的特点:存储链表中结点的一组任意的存储单元可以是连续的,也可以是不连续的,甚至是零散分 ...
- Leetcode:Substring with Concatenation of All Words分析和实现
题目大意是传入一个字符串s和一个字符串数组words,其中words中的所有字符串均等长.要在s中找所有的索引index,使得以s[index]为起始字符的长为words中字符串总长的s的子串是由wo ...