mongodb3.4.0复制集的搭建

本次主要介绍一下我们项目中关于mongodb复制集的搭建过程。

部署三台mongodb,分别是在69,70,71上面。71上面是主节点,69和70是从节点。使用mongodb3.4.0版本。

先看一安装完后的目录结构:

/u04

--mongodb

--data  数据文件目录

--logs

--mongo.log

--mongodb3.4  安装目录

--bin

--keyfile.dat  集群通信的文件

--mongo.conf

--mongodb.pid

--mongoDbStart.log  --启动日志文件

--mongoDbStart.sh  --启动脚本

准备

先su root

再mkdir u04/mongodb -p

chown -R sysadm:sysadm u04

开始

一、将mongodb-linux-x86_64-3.4.0.tgz上传到mongodb目录下面。

解压到当前目录的mongodb3.4目录中。

二、建立data目录

建立logs目录,在logs目录下面创建mongo.log文件。 touch mongo.log

创建mongo.conf文件。Vim mongo.conf文件,输入下面的内容:


#数据库路径

dbpath=/u04/mongodb/data

#日志输出文件路径

logpath=/u04/mongodb/logs/mongo.log

#错误日志采用追加模式

logappend=true

#启用日志文件,默认启用

journal=true

#这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false

quiet=true

#端口号 默认为27017

port=27017

#pidfile文件

pidfilepath=/u04/mongodb/mongodb.pid

#开启权限

#auth=true

#后台运行

fork=true

创建mongoDbStart.sh文件,输入下面的内容:


/u04/mongodb/mongodb3.4/bin/mongod --config /u04/mongodb/mongo.conf

修改mongoDbStart.sh的权限:

chmod 777 mongoDbStart.sh

启动测试

nohup  /u04/mongodb/mongoDbStart.sh >mongoDbStart.log 2>&1 &

测试连接是否成功:mongo ip:port

只要能连接上就行,不要执行其它操作(因为初始化复制集的时候要保证mongodb里面没有数据和用户)

使用命令:/u04/mongodb/mongodb3.4/bin/ mongo  x.x.x.71:27017

使用robo来连接:

关闭mongodb,切记 kill -9 PID

而是使用Kill -2 PID 这样会让mongodb数据库在关闭之前做一下收尾的处理。

重复以上步骤在69和70上面,建立mongodb的从节点,然后测试是否成功连接。切记不要执行创建用户创建数据等任何操作。

创建复制集

修改三个配置文件:复制集名称:gjywset

replSet=gjywset

echo replSet=gjywset >> mongo.conf

(也可以直接将replSet=gjywset提前写入mongo.conf文件中,节省了上面的测试是否能够链接成功一步。)

启动三个mongodb数据库。

1、初始化复制集:

登录到71节点上,/u04/mongodb/mongodb3.4/bin/ mongo  x.x.x.71:27017

(要是一个完全新的mongodb数据库才能初始化,如果已经创建用户或者创建数据库/集合等,就不能初始化成功了)

①:输入:

config = {

_id:"gjywset",

members:[

{_id:0,host:"x.x.x.71:27017","priority":3},

{_id:1,host:"x.x.x.70:27017","priority":2},

{_id:2,host:"x.x.x.69:27017","priority":1}

]

}

参数说明:arbiterOnly表示是一个仲裁节点。(本次没有使用)

priority:表示权重,数据越大越有可能成为主节点

②:执行初始化:rs.initiate(config);

③:使用rs.status()查看状态   显示71上的27017为主节点。

2、测试:

连接71上的27017:

use admin

use yujk

db

db.yjklog.insert({name:"zhangsan",age:11,sex:"男"})

db.yjklog.insert({name:"lisi",age:22,sex:"男"})

db.yjklog.insert({name:"王力宏",age:22,sex:"女",address:"外星移民"})

db.yjklog.insert({name:"花无缺",age:22,address:"广东丰台区nalinanbian"})

db.yjklog.find();

连接69上的27017:

db

show dbs  报错

rs.slaveOk(1);

show dbs;

use yujk;

show tables;

db.yjklog.find();

演示完成。

权限开启:

#########开启角色权限的校验###############root权限包含了any的四个全部的权限,什么权限都有。

开启角色权限:

(1)先创建用户:yjkroot和yjkhost

use admin

db.createUser({user:" yjkroot",pwd:"gjywroot",roles:[{role:"root",db:"admin"},{role:"readWrite",db:"yujk"}]})  #这样设置,要有root的角色

use yujk

db.createUser({user:"yjkhost",pwd:"yjkhost",roles:[{role:"readWrite",db:"yujk"}]})

关掉三个节点。

(2)在配置文件中将author=true打开  三个配置文件都要打开。

(3)连接x.x.x.71:27017主节点,

use admin

db.auth("yjkroot","yjkroot");

rs.status();发现还没有配置keyfile,即不同节点直接是不信任的状态--->>"authenticated" : false

关闭三个节点。Kill -2 mongopid

(4)使用openssl生成密钥文件

cd /u04/mongodb

openssl  rand -base64 30 > keyfile.dat  #30位的长度

修改文件权限:chmod 600 keyfile.dat

(5)将keyfile文件拷贝到69和70服务器的mongodb目录下

(6)修改配置文件启用keyfile文件  keyFile=/u04/mongodb/keyfile.dat

echo keyFile=/u04/mongodb/keyfile.dat >> mongo.conf

(7)启动三个节点:参照上面的方式.

nohup  /u04/mongodb/mongoDbStart.sh >mongoDbStart.log 2>&1 &

至此,mongodb复制集就安装好了。

推荐一个慕课网上面老师讲解mongodb的,

https://www.imooc.com/u/1196301/courses?sort=publish

https://www.cnblogs.com/clsn/p/8214194.html

https://www.cnblogs.com/clsn/p/8214345.html

https://www.cnblogs.com/clsn/p/8244206.html

优先级设置priority和votes:

https://blog.csdn.net/jjwen/article/details/53944503

原文地址:https://www.cnblogs.com/yjk295722366/p/9154959.html

时间: 2024-10-12 09:29:50

mongodb3.4.0复制集的搭建的相关文章

Hadoop-1.0.4集群搭建笔记

这篇文章介绍的是简单的配置Hadoop集群的方法,适合实验和小型项目用,正式运行的集群需要用更正规的方法和更详细的参数配置,不适合使用这篇文章. 安装 JDK 在终端输入 $ java -version 如果有反应,说明已安装过jdk.如果显示的信息里出现了类似OpenJDK的字样,如 java version "1.6.0_20" OpenJDK Runtime Environment (IcedTea6 1.9.2) (6b20-1.9.2-0ubuntu1~10.04.1) Op

Redis 4.0.1集群搭建

Redis 4.0.1集群搭建 一.概述 Redis3.0版本之后支持Cluster. 1.1.redis cluster的现状 目前redis支持的cluster特性: 1):节点自动发现 2):slave->master 选举,集群容错 3):Hot resharding:在线分片 4):进群管理:cluster xxx 5):基于配置(nodes-port.conf)的集群管理 6):ASK 转向/MOVED 转向机制. 1.2.redis cluster 架构 1)redis-clust

mongoDB3.4的sharding集群搭建及JavaAPI的简易使用

第一部分 在搭建mongoDB之前,我们要考虑几个小问题: 1.我们搭建集群的目的是什么?是多备份提高容错和系统可用性还是横向拓展存储大规模数据还是两者兼有? 如果是为了多备份那么选择replication集群搭建即可,如果是为了处理大数据则需要搭建sharding集群,如果两者兼有需要对每个shardsvr创建replica. 2.什么是sharding?和replication有什么不同? 简单而言,replica是mongo提供服务的一个基本单位,单机系统和replication集群对用户

MongoDB3.6分片复制集群

概念 mongos 数据库集群请求的入口,所有的请求都通过mongos进行协调,不需要在应用程序添加一个路由选择器,mongos自己就是一个请求分发中心,它负责把对应的数据请求请求转发到对应的shard服务器上.在生产环境通常有多mongos作为请求的入口,防止其中一个挂掉所有的mongodb请求都没有办法操作. config server 顾名思义为配置服务器,存储所有数据库元信息(路由.分片)的配置.mongos本身没有物理存储分片服务器和数据路由信息,只是缓存在内存里,配置服务器则实际存储

Linux rhel7.0 pacemaker集群搭建和配置

一 集群环境介绍 一 Linux 集群发展史 高可用集群的层次结构1 消息/基础架构 corosync 2 成员关系 :监听心跳信息,并进行处理成员关系和计算成员关系的票数等信息3 资源管理 VIP 磁盘 文件系统 CRM (群集资源管理器)等,有些策略引擎(有些资源是放置在同一个节点和其依赖关系) 和资源的分配调度有关 4 资源 : 对特定资源的操作,通过一定的脚本实现pacemaker 群集资源管理器corosync 消息/基础架构 管理工具 crmsh : crm (cluster res

redis3.0.3集群搭建

redis3.0版本之后支持Cluster,具体介绍redis集群我就不多说,了解请看redis中文简介. 首先,直接访问redis.io官网,下载redis.tar.gz,现在版本3.0.3,我下面已经在虚拟机启动了两个linux来部署redis. 1. 下载和解包 cd /usr/local/ wget http://download.redis.io/releases/redis-3.0.3.tar.gz tar -zxvf redis-3.0.3.tar.gz mv redis-3.0.

Redis 3.0.2集群搭建以及相关问题汇总

Redis3 正式支持了 cluster,是为了解决构建redis集群时的诸多不便 (1)像操作单个redis一样操作key,不用操心key在哪个节点上(2)在线动态添加.删除redis节点,不用停止服务(3)根据节点性能,动态分配不同数量的key到不同redis节点 (4)每个节点都配有slave,并自动监测和切换 Redis3 cluster 中增加了一个重要概念: hash slot(哈希槽),共有16384个slotkey不是直接放入redis中了,而是放入slot中,再把slot放入r

java_redis3.0.3集群搭建

redis3.0版本之后支持Cluster,具体介绍redis集群我就不多说,了解请看redis中文简介. 首先,直接访问redis.io官网,下载redis.tar.gz,现在版本3.0.3,我下面已经在虚拟机启动了两个linux来部署redis. 1. 下载和解包 cd /usr/local/ wget http://download.redis.io/releases/redis-3.0.3.tar.gz tar -zxvf redis-3.0.3.tar.gz mv redis-3.0.

Redis4.0.10集群搭建

192.168.254.128192.168.254.129192.168.254.127注意事项安裝 GCC 编译工具 不然会有编译不过的问题yum install -y gcc g++ gcc-c++ make升级所有的包,防止出现版本过久不兼容问题yum -y update 环境准备安装ruby: 关闭防火墙 节点之前需要开放指定端口,为了方便,生产不要禁用centos 6.xservice iptables stop # 关闭命令:centos 7.xsystemctl stop fir