前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >部署MongoDB副本集

部署MongoDB副本集

作者头像
陳斯托洛夫斯記
发布2022-10-04 14:22:02
1.4K0
发布2022-10-04 14:22:02
举报
文章被收录于专栏:XBD

一主两备

默认设置下,主节点提供所有增删查改服务,备节点不提供任何服务。但是可以通过设置使备节点提供查询服务,这样就可以减少主节点的压力,当客户端进行数据查询时,请求自动转到备节点上。

环境配置

IP

端口

角色

主机名

192.168.1.163

27017

主节点

mongo01

192.168.1.126

27017

备节点

mongo02

192.168.1.41

27017

备节点

mongo03

安装mongodb

在三个节点上安装mongodb

修改配置文件

代码语言:javascript
复制
vim mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# where to write logging data.
systemLog:
  destination: file
  logAppend: true		#启动或重启后是否追加写入
  path: /var/log/mongodb/mongod.log
#  traceAllExceptions: true	#打印异常详细信息

# Where and how to store data.
storage:
  dbPath: /data/mongodb
  journal:
    enabled: true
  directoryPerDB: false|true	#当为true时,mongodb使用单独的目录存储每个数据库,每个目录名称对应于数据库名称
#  engine:
#  mmapv1:
#  wiredTiger:
#    engineConfig:
#      cacheSizeGB: 1
#      directoryForIndexes: true
#    collectionConfig:
#      blockCompressor: zlib
#    indexConfig:
#      prefixCompression: true

# how the process runs
processManagement:
  fork: true 		#允许程序在后台运行
  pidFilePath: /var/run/mongodb/mongod.pid

# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0
  maxIncomingConnections: 65535		#最大连接数
  wireObjectCheck: true 		#mongod实例在收到客户端时验证所有请求,以防止客户端将格式错误或无效的bson插入到mongod数据库
  ipv6: false|true	#启用或禁用ipv6支持,默认禁用
  unixDomainSocket:
    enabled: true 	#启用或禁用unix套接字上的侦听
    pathPrefix: /tmp	#unix套接字的路径,默认/tmp目录下


#security:

#operationProfiling:

replication:
#  oplogSizeMB: 2048
  replSetName: xbd		#副本集名称,按需修改
 
#sharding:
#  clusterRole: shardsvr	#把此实例作为分片
#  clusterRole: configsvr	#把此实例作为配置服务器

## Enterprise-Only Options

#auditLog:

#snmp:

初始化副本集(登录任意一个节点)

mongo 192.168.1.163:27017

代码语言:javascript
复制
> config = {_id:"xbd",members:[
... {_id:0,host:"192.168.1.163:27017"},
... {_id:1,host:"192.168.1.126:27017"},
... {_id:2,host:"192.168.1.41:27017"}]
... }

> rs.initiate(config);	# 如果结果返回1,说明初始化成功

常用命令

代码语言:javascript
复制
rs.status()	#查看副本集,所有节点都可以操作

db.isMaster()	#查看当前节点是否为主节点

rs.remove("192.168.1.41:27017")	#移除一个节点,需要在主节点操作

rs.add("192.168.1.41:27017")	#添加一个节点,需要在主节点操作
	
rs.addArb("192.168.10.108:27017")   #添加一个仲裁节点

模拟宕机测试

副本集更新权重模拟宕机

默认三台的权重都为1,如果任何一个权重比其他的高,则该台机器切换为primary角色 在primary节点上执行

代码语言:javascript
复制
cfg = rs.conf()
cfg.members[0].priority = 3
cfg.members[1].priority = 2
cfg.members[2].priority = 1
rs.reconfig(cfg)
登录备节点查询数据

备节点是不能直接查询数据的,执行此命令把自己提升为从节点才可以查询数据

代码语言:javascript
复制
rs.slaveOk()

一主一备一仲裁

仲裁节点是一种特殊的节点,它本身并不存储数据,主要的作用是决定哪一个备节点在主节点挂掉之后提升为主节点,所以客户端不需要连接此节点。这里虽然只有一个备节点,但是仍然需要一个仲裁节点来提升备节点级别。

初始化副本集(登录任意一个节点)

代码语言:javascript
复制
cfg = {_id:"xbd",members:[
{_id:0,host:"192.168.1.126:27017",priority:2},
{_id:1,host:"192.168.1.163:27017",priority:1},	{_id:2,host:"192.168.1.41:27017",arbiterOnly:true}]
}

rs.initiate(cfg)

仲裁节点有一个特别的配置--arbiterOnly:true,这个不能少,否则主备不生效

mongodb默认是从主节点读写数据的,副本节点上不允许读,需要设置副本节点可以读

代码语言:javascript
复制
repset:SECONDARY> db.getMongo().setSlaveOk();
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一主两备
    • 环境配置
      • 安装mongodb
        • 在三个节点上安装mongodb
        • 修改配置文件
        • 初始化副本集(登录任意一个节点)
        • 常用命令
        • 模拟宕机测试
    • 一主一备一仲裁
      • 初始化副本集(登录任意一个节点)
      相关产品与服务
      云数据库 MongoDB
      腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档