MongoDB 4.4 扩展为副本集(qbit)

前言

  • 有一台单实例 MongoDB 服务器已经运行半年了,需要将其扩展为副本集
  • 3 台服务器的操作系统均为 Ubuntu 20.04
  • 3 台服务器的 MongoDB 版本均为 4.4
  • 扩展示意图
    image.png

操作步骤

  • 备份 mongo0 上的数据
  • 修改配置文件 /etc/mongod.conf,官方文档: https://docs.mongodb.com/v4.4...

    # 增加或修改
    security:
    authorization: enabled
    keyFile: /data/mongo/security/rs0.key
    
    replication:
     replSetName: rs0
  • 创建目录,并修改所有者

    sudo mkdir /data/mongo/security
    sudo chown -R mongodb:mongodb /data/mongo/security/
  • 生成密钥文件,分发到各机器。官方文档:https://docs.mongodb.com/v4.4...

    openssl rand -base64 756 > /data/mongo/security/rs0.key
    sudo chown mongodb:mongodb /data/mongo/security/rs0.key
    sudo chmod 400 /data/mongo/security/rs0.key
  • 重启 MongoDB 服务

    sudo systemctl restart mongod.service
  • 配置 /etc/hosts 文件

    # 添加或修改
    192.168.31.20 mongo0
    192.168.31.34 mongo1
    192.168.31.35 mongo2
  • 登录 mongo0 初始化副本集节点

    mongo mongodb://user:password@192.168.31.20:27017/?authSource=admin
    rs.initiate({
      _id: "rs0",
      members: [{
          _id: 0,
          priority: 9,     // 0-1000,值越大优先级约高
          host: "mongo0:27017"
      }, {
          _id: 1,
          priority: 7,
          host: "mongo1:27017"
      }, {
          _id: 2,
          priority: 7,
          host: "mongo2:27017"
      }]
    })
  • 查看副本集状态

    rs0:PRIMARY> rs.status()
  • 查看从节点数据同步状态

    rs0:PRIMARY> rs.printSecondaryReplicationInfo()
    source: mongo1:27017
      syncedTo: Thu Jan 01 1970 08:00:00 GMT+0800 (CST)
      1615602247 secs (448778.4 hrs) behind the primary 
    source: mongo2:27017
      syncedTo: Thu Jan 01 1970 08:00:00 GMT+0800 (CST)
      1615602247 secs (448778.4 hrs) behind the primary
  • 修改优先级

    rs0:PRIMARY> conf = rs.conf()
    rs0:PRIMARY> conf.members[1].priority = 11
    rs0:PRIMARY> conf.members[2].priority = 11
    rs0:PRIMARY> rs.reconfig(conf)
  • 如果数据量大,同步时间过长,可以考虑拷贝文件的 resync 方式来进行全量同步(initial sync)。

MongoDB 副本集的 10 种状态

本文出自 qbit snap

qbit snap
开箱即用,拿走不谢。
262 声望
276 粉丝
0 条评论
推荐阅读
Postman 发送 RSA 签名请求(qbit)
前言Postman 版本 10.13.6qbit 将 RSAForPostman 压缩拷贝到了码云便于国内访问Postman 脚本示例Pre-request Script {代码...} Postman 内置库官方文档:[链接] {代码...} 本文出自 qbit snap

qbit阅读 138

Mongodb-关联表查询
之前使用SQL语法来查询oracle、sqlserver、mysql表之间的关联,但是到mongodb之后完全无从下手,写法完全不一样,于是到网上查询mongodb关联表查询的写法,于是参考代码自己试着写了下,但是发现有好多问题,比如...

Awbeci2阅读 4.6k评论 1

Redis集群介绍及测试思路
Redis集群一般有四种方式,分别为:主从复制、哨兵模式、Cluster以及各大厂的集群方案。在3.0版本之前只支持单实例模式,3.0之后支持了集群方式。在3.0之前各大厂为了解决单实例Redis的存储瓶颈问题各自推出了自...

京东云开发者2阅读 477

封面图
Redis缓存高可用集群
在redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点的状态,如果master节点异常,则会做主从切换,将某一台slave作为master,哨兵的配置略微复杂,并且性能和高可用性等各方面表现一般。

京东云开发者2阅读 351

封面图
(学习到实践)七、mongodb测试,php+nginx负载均衡的部署
从测试容器中匹配搜索得到 mongod.conf.orig,设置可以启动,网上查找配置项反不能启动,原因是配置是yaml格式!好像听说过。百度查询得到:官方配置说明,网站卡得出奇。

沧浪水阅读 2.9k

MongoDB安装、启动、关闭、授权
安装参考[链接]配置文件 {代码...} 启动MongoDB {代码...} MongoDB的关闭方式kill进程模式(不建议使用) {代码...} 自带模式 {代码...} 注意: mongod进程收到SIGINT或SIGTERM信号,会做一些处理 切忌使用kill -9...

YYGP阅读 1.3k

mongoShake基于go实践应用
通过阿里云自研的MongoShake开源工具,您可以实现MongoDB数据库间的数据同步,该功能可用于数据分析、灾备和多活等业务场景。本文以云数据库MongoDB实例间的数据实时同步为例介绍配置流程。

金闽阅读 1k

262 声望
276 粉丝
宣传栏