docker mongo 副本集配置(1)

1.生成证书

非docker环境 (当前目录在data)

cd  /data/

mkdir core
cd core
//生成keyfile
openssl rand -base64 741 > mongodb-keyfile
chmod 600 mongodb-keyfile
mongod.conf中添加(注意json的格式)

1 security:
2    keyFile: "/data/core/mongodb-keyfile"
3 replication:
4    replSetName: rs

将mongodb-keyfile复制到其他mongo服务器
执行

chmod 600 mongodb-keyfile

如果是docker 还需要执行

chown 999 mongodb-keyfile

2.运行mongo  docker

 docker run --name mongo -p 27017:27017 --restart=always -v /etc/localtime:/etc/localtime:ro -v /data/mongo:/data/db -v /data/core/mongodb-keyfile:/opt/mongodb-keyfile -d mongo:4.0.3 --smallfiles --keyFile=/opt/mongodb-keyfile --replSet "rs"

 --smallfiles 开启验证
 --keyFile 设置统一的key

3、登录mongoDB

1 执行命令如下
2 rs.initiate( {_id : "rs0",members: [{ _id: 0, host: "172.17.0.2:27017" },{ _id: 1, host: "172.17.0.3:27017" },{ _id: 2, host: "172.17.0.4:27017" }]})
3 可以使用 {_id:0,host:‘127.0.0.1:10002‘,priority:1} 指定主节点(多个节点 priority越高的 会成为主节点)4 _id:复制集的名称。必须与启动 mongod 的 --replSet 一致5 members:成员配置文件的列表。6 members[n]._id:用来识别成员的 id 不可以重复7 members[n].host:成员对应的 host:port 第四步中得到的ip

4、使用rs.status();查看集群状态

5、从库默认没有读写权限

需要进入从库的mongoDB执行rs.slaveOk();或者db.getMongo().setSlaveOk();
但是但是但是!!!
只有当次生效!只有当次生效!只有当次生效!
如果需要永久生效 可以依次执如下命令
find / -name .mongorc.js
vim /home/sea/.mongorc.js
添加内容
rs.slaveOk();

强制更换主节点办法
http://www.mongoing.com/docs/tutorial/force-member-to-be-primary.html

1 注:
2 在搭建过程中,遇到一个问题
3 当将两个从节点停掉之后 在主使用rs.stepDown(120)将现有主节点切换为从节点 导致主节点丢失,该情况下 可以将停掉的一个从节点重启,此时主节点会自动选出,一位复制集的规则是必须有两台可用的数据库,才能够自动选举主从节点。
4 另:本篇未涉及投票节点,感兴趣的可自行搜索相关文档即可
5 多讲一句:本篇为4.0.3版本,4.0版本以下的相关命令 可能会失效! //经测试,个人操作原因,需要在执行 rs.reconfig();时添加"protocolVersion" : 1    比如这样:rs.reconfig( {_id : "rs0", "protocolVersion" : 1, members: [{ _id: 0, host: "192.168.1.64:27017",priority:2 },{ _id: 1, host: "192.168.1.50:27017" },{ _id: 2, host: "192.168.1.51:27017" }]})  如果需要非主节点执行需要添加{ "force": true } 例如 rs.reconfig(cfg, { "force": true })



原文地址:https://www.cnblogs.com/lshan/p/12035285.html

时间: 2024-10-10 00:01:36

docker mongo 副本集配置(1)的相关文章

Docker mongo副本集环境搭建

1.MongoDB Docker 镜像安装 docker pull mongo 2.Docker容器创建 MongoDB Docker 容器创建有以下几个问题: 1- MongoDB 容器基本创建方法和数据目录挂载 2- MongoDB 容器的数据迁移 3- MongoDB 设置登录权限问题 docker run -p 27017:27017 -v <LocalDirectoryPath>:/data/db --name docker_mongodb -d mongo --replSet &q

mongo 副本集+密码认证

Jdk8部署 文档说明 编写目的 本文档编写目的是为了安装mongo和Mongodb用户认证 适用范围 本文档完成后 适用Mongodb3.0以上版本适用 配置准备 Mongodb 3.4 服务器准备 本文档中操作是对内网1台服务器部署,操作系统使用的是CentOS release 6.5 (Final). 各个节点及描述如下表所示: 节点 IP 描述 服务器 192.168.21.212/24 安装mongodb 软件准备 本文档安装的大多数软件使用源代码编译安装,主要用的文件有如下: Mon

【MongoDB学习笔记32】MongoDB修改副本集配置

一.删除副本集成员 spock:PRIMARY> rs.config()    {             "_id" : "spock",             "version" : 1,             "members" : [                     {                             "_id" : 0,                  

mongodb3.2副本集配置

网上的资料太乱了,等弄好了再看官网才发现官网写的最清晰和简洁 推荐官网的副本集配置:https://docs.mongodb.com/manual/tutorial/deploy-replica-set/ 引述大神一段总结:http://blog.csdn.net/huwei2003/article/details/40453223 从概念上说一下MongoDB副本集和主从复制的区别.其实副本集(Replica Set)是主从复制的高级形式.高级在哪里呢?主动复制实现了数据备份+读扩展,但是ma

我们的一个已投产项目的高可用数据库实战 - mongo 副本集的搭建详细过程

我们的 mongo 副本集有三台 mongo 服务器:一台主库两台从库.主库进行写操作,两台从库进行读操作(至于某次读操作究竟路由给了哪台,仲裁决定),实现了读写分离.这还不止,如果主库宕掉,还能实现不需要用户干预的情况下,将主库自动切换到另外两台从库中的某一台,真正实现了 db 的高可用. 1. 背景 1.1 环境 CPU核数:4 内存配置:8G 带宽:100MB 磁盘:系统盘 40G,数据盘 180G 操作系统版本:Ubuntu 14.04 64位 1.2 系统部署结构图 2. MongoD

MongoDB副本集配置系列三:副本集的认证方式

1:副本集配置参考这篇博客: http://www.cnblogs.com/xiaoit/p/4478951.html 2:副本集的认证 假设有两台机器已经配置好了副本集(副本集罪一般最少3台机器,这里只做演示使用) 192.168.91.132 192.168.91.133 副本集总体思路是用户名.密码和keyfile文件,keyfile需要各个副本集服务启动时加载而且要是同一文件,然后在操作库是需要用户名.密码KeyFile文件必须满足条件:(1)至少6个字符,小于1024字节(2)认证时候

mongo副本集mongos启动报错

背景 项目采用mongo副本集的形式存储数据,经常出现无故断电导致某个副本mongos启动不起来的问题. 环境介绍 mongodb副本集:mongo01:192.168.36.218mongo02:192.168.36.219mongo03:192.168.36.220 报错信息 mongo03副本上mongos启动不起来,执行命令报错: [[email protected] ~]# mongos --configdb 192.168.36.218:20000,192.168.36.219:20

mongo副本集原理,搭建

#进入mongo mongo   默认端口27017启动的mongo服务,直接进入 mongo --port=27027   指定端口27027启动mongo服务,需加端口号启动 mongo 103.56.195.5:27017   登录指定主机的mongo服务,可以以此测试对端防火墙是否放通,mongo服务器端口 #mongo副本集启动参数: [[email protected] db]# ps aux |grep mongo root     112542  0.7  0.1 1058417

mongodb 副本集配置与说明

1,副本集的原理 副本集的原理与主从很相似,唯一不同的是,在主节点出现故障的时候,主从配置的从服务器不会自动的变为主服务器,而是要通过手动修改配置.但是副表集就不用,它会自动选出一台服务器做为主节点,从而保障系统的稳定性. 2,副本集新的主节点是怎么选举出来的呢 是通过bully算法来的,也就是一致性协议.具体如下 1):当主节点挂了后,副本集会获得其他从节点的最后更新时间与主服务做对比 2):如果所有从节点的最后更新时间都是很旧,那就选举停止 3):如果副本集中的大部分服务器挂了,包含主节点,