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 声望
275 粉丝
0 条评论
推荐阅读
Windows 下多版本 Python 共享 Poetry(qbit)
前言技术栈 {代码...} Python 3.8 安装目录 {代码...} Python 3.11 安装目录 {代码...} 安装 poetry设置将以下路径加入 path 环境变量 {代码...} 复制文件 {代码...} 设置 pip 国内镜像源 {代码...} 升级 pip {代...

qbit阅读 87

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

沧浪水阅读 2.7k

ElasticSearch 必知必会 - 进阶篇
京东物流:康睿 姚再毅 李振 刘斌 王北永说明:以下全部均基于 ElasticSearch 8.1 版本一.跨集群检索 - ccr官网文档地址: [链接]跨集群检索的背景和意义跨集群检索定义跨集群检索环境搭建官网文档地址: [链接]...

京东云开发者2阅读 516

封面图
centos7安装mongodb
准备工作:1、在root目录下创建文件夹software {代码...} 2、进入software文件 {代码...} 以下是mongodb的具体安装步骤和文件配置1. 下载mongodb3.6.3版本 {代码...} 2. 解压文件 {代码...} 3. 把解压后文件移动...

sourcenode阅读 2.2k

Mac环境下安装MongoDB数据库
一、下载安装1.1 下载MongoDB首先,从MongoDB官网下载自己想要使用的版本。解压缩下载的压缩包重命名为mongodb,将mongodb文件夹复制到/usr/local目录下。当然,除了上面的安装方式外,我们还可以使用Mac OSX的br...

xiangzhihong1阅读 403

bug solved | zsh: command not found: mongo (Mac M1/M2 )
退回MongoDB 5 解决了,,,后来发现把5安装包的/usr/local/mongodb/bin目录下的mongo文件复制到6中同样也能解决。所以最终方法是:把5安装包的/usr/local/mongodb/bin目录下的mongo文件复制到6中

LiberHome2阅读 639评论 1

Kubernetes使用KaiwuDB简介
容器是打包和运行应用程序的好方式。在生产环境中,我们需要管理运行应用程序的容器,并确保不会停机。如果一个容器发生故障,则需要启动另一个容器。如果系统处理此行为,会不会更便捷?这就是 Kubernetes(后文...

KaiwuDB阅读 876

封面图
262 声望
275 粉丝
宣传栏