mongodb.副本集配置方法(使用keyfile认证部署)
前提条件:
- 已安装MongoDB, 版本以3.6为例
- 系统: Debian9
- 建议做副本集的话, 以3台以上为宜, 本文以1台主机2个服务为例
1.创建数据存放的目录, 并授权
sudo mkdir /data/db/mongodb-clus/repl1 -p && sudo chown mongodb:mongodb /data/db/mongodb-clus/repl1 sudo mkdir /data/db/mongodb-clus/repl2 -p && sudo chown mongodb:mongodb /data/db/mongodb-clus/repl2
2.生成keyfile
这个keyfile生成后, 拷贝到全部副本机器上使用
sudo openssl rand -base64 >> /data/db/mongodb.key
sudo chown mongodb:mongodb /data/db/mongodb.key
sudo chmod /data/db/mongodb.key
3.以副本方式+keyfile启动服务
sudo /usr/bin/mongod --dbpath /data/db/mongodb-clus/repl1 --port 29001 --logpath /data/logs/mongo-repl1.log --bind_ip 127.0.0.1,192.168.0.11 --replSet repset1
sudo /usr/bin/mongod --dbpath /data/db/mongodb-clus/repl2 --port 29002 --logpath /data/logs/mongo-repl2.log --bind_ip 127.0.0.1,192.168.0.11 --replSet repset1

看到服务日志提示监听端口, 表示服务启动成功
4.在主服务登录mongo, 做一些初始化配置
mongo --port 29001
use admin
config = { _id:"repset1", members:[
{_id:0,host:"192.168.0.11:29001"},
{_id:1,host:"192.168.0.11:29002"}]
}
rs.initiate(config);
完成后查看一下副本状态
rs.status() 能输出以下信息表示初始化成功
{
"set" : "repset1",
"date" : ISODate("2019-01-10T02:51:46.835Z"),
"myState" : ,
"term" : NumberLong(),
"syncingTo" : "",
"syncSourceHost" : "",
"syncSourceId" : -,
"heartbeatIntervalMillis" : NumberLong(),
"optimes" : {
"lastCommittedOpTime" : {
"ts" : Timestamp(, ),
"t" : NumberLong()
},
"readConcernMajorityOpTime" : {
"ts" : Timestamp(, ),
"t" : NumberLong()
},
"appliedOpTime" : {
"ts" : Timestamp(, ),
"t" : NumberLong()
},
"durableOpTime" : {
"ts" : Timestamp(, ),
"t" : NumberLong()
}
},
"members" : [
{
"_id" : ,
"name" : "192.168.0.11:29001",
"health" : ,
"state" : ,
"stateStr" : "PRIMARY",
"uptime" : ,
"optime" : {
"ts" : Timestamp(, ),
"t" : NumberLong()
},
"optimeDate" : ISODate("2019-01-10T02:51:41Z"),
"syncingTo" : "",
"syncSourceHost" : "",
"syncSourceId" : -,
"infoMessage" : "",
"electionTime" : Timestamp(, ),
"electionDate" : ISODate("2019-01-10T02:18:39Z"),
"configVersion" : ,
"self" : true,
"lastHeartbeatMessage" : ""
},
{
"_id" : ,
"name" : "192.168.0.11:29002",
"health" : ,
"state" : ,
"stateStr" : "SECONDARY",
"uptime" : ,
"optime" : {
"ts" : Timestamp(, ),
"t" : NumberLong()
},
"optimeDurable" : {
"ts" : Timestamp(, ),
"t" : NumberLong()
},
"optimeDate" : ISODate("2019-01-10T02:51:41Z"),
"optimeDurableDate" : ISODate("2019-01-10T02:51:41Z"),
"lastHeartbeat" : ISODate("2019-01-10T02:51:46.556Z"),
"lastHeartbeatRecv" : ISODate("2019-01-10T02:51:46.698Z"),
"pingMs" : NumberLong(),
"lastHeartbeatMessage" : "",
"syncingTo" : "192.168.0.11:29001",
"syncSourceHost" : "192.168.0.11:29001",
"syncSourceId" : ,
"infoMessage" : "",
"configVersion" :
}
],
"ok" : ,
"operationTime" : Timestamp(, ),
"$clusterTime" : {
"clusterTime" : Timestamp(, ),
"signature" : {
"hash" : BinData(,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong()
}
}
}
6.建立角色和账号, 用于管理副本集
use admin
db.createRole({role:'sysadmin',roles:[],privileges:[{resource:{anyResource:true},actions:['anyAction']}]})
db.createUser({user:'root',pwd:'',roles:[{role:'sysadmin',db:'admin'}]})
7.退出mongo, 重新以认证方式登录
mongo --port -u "root" -p "" --authenticationDatabase "admin"
8.完成
现在可以在29001的数据库上创建数据, 测试29002等副本中是否能自动同步了
mongodb.副本集配置方法(使用keyfile认证部署)的更多相关文章
- MongoDB 副本集配置,开启账号认证
MongoDB 自带功能强大的主从,配置也很简单,从零开始花了30分钟搞定 3台以上机器IP: 192.168.1.24, 192.168.1.25, 192.168.1.26, 192.168.1. ...
- [Database] MongoDB 副本集配置
MongoDB 副本集配置 MongoDB复制是将数据同步在多个服务器的过程. 复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性, 并可以保证数据的安全性. 复制还允许您从硬 ...
- MongoDB副本集配置系列三:副本集的认证方式
1:副本集配置参考这篇博客: http://www.cnblogs.com/xiaoit/p/4478951.html 2:副本集的认证 假设有两台机器已经配置好了副本集(副本集罪一般最少3台机器,这 ...
- mongodb副本集配置
需要用到mongodb的时候单个实例肯定是不行的,挂了怎么办,那然后呢,跟mysql一样搞主从备份吗,是可以的mongodb这么弄,不过官网已经不推荐了这么干了,推荐使用副本集的模式,然后数据再大一点 ...
- 分布式文档存储数据库(MongoDB)副本集配置
副本集特征: N 个节点的集群 任何节点可作为主节点 所有写入操作都在主节点上 自动故障转移 自动恢复 相关文章: http://www.cnblogs.com/huangxincheng/archi ...
- MongoDB副本集配置系列五:副本集的在线迁移
MongoDB副本集的在线迁移 查看当前集群的状态: { "setName" : "gechongrepl", "setVersion" : ...
- MongoDB副本集配置系列二:配置MongoDB副本集
接上一篇博客: http://www.cnblogs.com/xiaoit/p/4479066.html 1:首先创建3台虚拟机作为配置环境 IP1:192.168.91.128 IP2:192.16 ...
- MongoDB副本集配置系列十一:MongoDB 数据同步原理和自动故障转移的原理
1:数据同步的原理: 当Primary节点完成数据操作后,Secondary会做出一系列的动作保证数据的同步: 1:检查自己local库的oplog.rs集合找出最近的时间戳. 2:检查Primary ...
- MongoDB副本集配置系列十:MongoDB local库详解和数据同步原理
1:local库是MongoDB的系统库,记录着时间戳和索引和复制集等信息 gechongrepl:PRIMARY> use local switched to db local gechong ...
随机推荐
- CAP理论介绍
经典CAP图 分布式系统的CAP理论:理论首先把分布式系统中的三个特性进行了如下归纳: ●一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值.(等同于所有节点访问同一份最新的数据副本) ...
- linux/centos6.5下编译安装python2.7和python3.5.2
centos6.5环境下安装python2.7 解压python源码包 tar -xf Python-2.7.6.tar.xz 进入软件包目录 cd Python-2.7.6 添加配置项 ./conf ...
- 10-关于DOM的事件操作
一.JavaScript的组成 JavaScript基础分为三个部分: ECMAScript:JavaScript的语法标准.包括变量.表达式.运算符.函数.if语句.for语句等. DOM:文档对象 ...
- AndroidStudio中builde.gradle文件详解
Android Studio是采用Gradle来构建项目的,一个Android项目中包含两个build.gradle文件,如下图: (1)最外层目录下build.gradle文件 最外层目录下 ...
- 步步为营-36-ADO.Net简介
与数据库进行连接交互 方法一 #region 01连接对象 //01 连接字符串 string connstr = "server=.;uid=sa;pwd=sa;database=Demo ...
- ERP商品管理业务逻辑封装(三十四)
产品购进管理业务逻辑: public class ProductBLL { /// <summary> /// 产品对象添加 并且返回产品编号 /// </summary> / ...
- jsp+servlet实现文件的上传和下载
实现文件的上传和下载首先需要理解几个知识,这样才可以很好的完成文件的上传和下载: (1):上传文件是上传到服务器上,而保存到数据库是文件名 (2):上传文件是以文件转换为二进制流的形式上传的 (3): ...
- python导包踩过的坑之包名和模块名同名
- python多进程和多线程
多任务才有多进程和线程: 线程是最小的执行单元,而进程由至少一个线程组成.如何调度进程和线程,完全由操作系统决定,程序自己不能决定什么时候执行,执行多长时间. 多进程和多线程的程序涉及到同步.数据共享 ...
- BZOJ5120 [2017国家集训队测试]无限之环 费用流
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ5120 题意概括 原题挺简略的. 题解 本题好难. 听了任轩笛大佬<国家队神犇>的讲课才 ...