部署monggodb哨兵模式(副本集)部署文档

部署monggodb副本集

MongoDB有多种高可用性架构可以选择,以下是其中几种常见的高可用性架构:

副本集(Replica Set):副本集是MongoDB中最基本的高可用性架构。它由多个节点组成,其中有一个主节点(Primary),其余节点为从节点(Secondary)。主节点负责处理所有的写操作,从节点用于提供读取操作的负载均衡和容错能力。如果主节点发生故障,副本集会进行自动选举产生新的主节点,以保证系统的可用性。

分片集群(Sharded Cluster):分片集群是一种可扩展性和高可用性的架构。该架构将数据划分为多个分片(Shard),每个分片存储部分数据。每个分片有自己的副本集,以提供高可用性。一个分片集群还包括多个路由节点(Router),它们负责将数据请求路由到正确的分片上,实现负载均衡。

复制集群(Replica Set Cluster):复制集群是一种将多个副本集组合在一起形成的高可用性架构。每个副本集都是独立的,负责存储一部分数据并提供读写能力。复制集群通过在不同的数据中心或服务器上分布副本集来提高系统的容错性和可用性。

部署monggodb三节点副本集

首先修改主机名

192.168.197.136    hostnamectl set-hostname monggodb-1

192.168.197.137    hostnamectl set-hostname monggodb-2

192.168.197.138   hostnamectl set-hostname monggodb-3

下载安装包(三台节点都操作)

wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-5.0.19.tgz --no-check-certificate

安装monggodb(三台节点都操作)

tar -zxvf mongodb-linux-x86_64-rhel70-5.0.19.tgz  

mv mongodb-linux-x86_64-rhel70-5.0.19  /data/mongodb

配置环境变量(三台节点都操作)

vim /etc/profile    最底部添加

MONGODB_HOME=/data/mongodb

export PATH=$PATH:$MONGODB_HOME/bin

source /etc/profile

创建数据库目录(三台节点都操作)

mkdir mongodb/data   数据存储目录

mkdir mongodb/log 日志存储目录

chown tom.tom /data/mongodb -R

三台节点做host解析

vim /etc/hosts

192.168.197.136 monggodb-1

192.168.197.137 monggodb-2

192.168.197.138 monggodb-3

scp /etc/hosts monggodb-2:/etc/hosts

scp /etc/hosts monggodb-3:/etc/hosts

运行monggodb使用root或者普通用户看需求

mongodb-1节点

mongod --replSet monggodb --dbpath /data/mongodb/data/ --logpath /data/mongodb/log/mongod.log --port 27017 --bind_ip monggodb-1 --logappend --fork

mongodb-2节点

mongod --replSet monggodb --dbpath /data/mongodb/data/ --logpath /data/mongodb/log/mongod.log --port 27017 --bind_ip monggodb-2 --logappend --fork

mongodb-3 节点

mongod --replSet monggodb --dbpath /data/mongodb/data/ --logpath /data/mongodb/log/mongod.log --port 27017 --bind_ip monggodb-3 --logappend --fork

启动命令参数

--replSet  是设定副本集的名字

--dbpath  是指定存储目录路径

--logpath 是指定日志文件路径

--port  是指定运行端口

--bind_ip   是monggodb服务监听的ip

--logappend  是将新的日志信息追加到现有的日志文件中(不加的话默认覆盖之前的日志)

--fork  是后台运行的方式启动

Monggodb副本集初始化

在monggodb-1登录客户端

mongo --host monggodb-1 --port 27017    

执行副本集初始化命令

rs.initiate()

添加monggodb-2、monggodb-3节点到副本集

rs.add("monggodb-2:27017")

rs.add("monggodb-3:27017")

查看当前副本集所有角色

rs.status().members或者rs.status()

初次添加节点到副本集时有的从节点可能因为网络原因选举另一个从节点当做主节点

在主节点指向异常的时候我们可以使用命令来手动指定主节点

来到节点3执行下面命令

rs.syncFrom("monggodb-1:27017")

可以看到主节点手动指定为节点1了

删除副本集角色的命令

rs.remove("mongodb:27017")

在副本集中添加完角色启动另外两个节点(在各自节点启动)

mongo --host monggodb-2 --port 27017

mongo --host monggodb-3 --port 27017

到这mongodb就部署完成了

在monggodb-3或者-2节点输入rs.status()  可以查看副本集状态

rs.status()回显信息的每个参数的含义:

- set: 副本集的名称。

- date: 运行状态报告生成的时间。

- myState: 代表当前节点的状态。2表示该节点为主节点。

- term: 当前副本集选举的期数。NumberLong(1)表示当前为第1个选举期。

- syncSourceHost: 主节点的地址。在此示例中,主节点为"mongodb-1:27017"。

- syncSourceId: 主节点在副本集中的成员ID。在此示例中,主节点的成员ID为0。

- heartbeatIntervalMillis: 副本集成员之间进行心跳检测的间隔时间(以毫秒为单位)。

- majorityVoteCount: 副本集中需要达成多数意见的成员数量。

- writeMajorityCount: 执行写操作所需的成员数量。

- votingMembersCount: 副本集中有投票权的成员数量。

- writableVotingMembersCount: 副本集中有投票权且可写的成员数量。

- optimes: 包含与操作时间相关的信息。

- lastCommittedOpTime: 最后已提交的操作时间。ts表示时间戳,t表示选举期。

- lastCommittedWallTime: 最后已提交的操作的墙钟时间戳。

- readConcernMajorityOpTime: 在多数态度下进行读取操作的操作时间。

- appliedOpTime: 最后已应用的操作时间。

- durableOpTime: 最后持久化的操作时间。

- lastAppliedWallTime: 最后已应用操作的墙钟时间戳。

- lastDurableWallTime: 最后持久化操作的墙钟时间戳。

- lastStableRecoveryTimestamp: 上次稳定恢复的时间戳。

测试一下当前主节点挂掉后是否会自动选举主节点

ps -ef |grep mongod

kill -9 101886   杀掉monggodb-1节点

来到monggodb-2节点查看当前副本集信息

mongo --host mongodb-2 --port 27017

rs.status()

可以看到mongodb-3被自动选举为主节点,到这副本集就部署完成了

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值