MongoDB副本集集群搭建

本文详细介绍如何在Red Hat系统中使用.rpm包安装MongoDB Enterprise,并配置三节点复制集。包括存储库配置、软件包安装、虚拟机设置、数据与日志存储路径、启动配置、复制集初始化及Java与Spring连接配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 官方安装文档推荐

https://docs.mongodb.com/manual/tutorial/install-mongodb-enterprise-on-red-hat/

2. 使用 .rpm 包安装

     (1). 配置存储库

         创建一个/etc/yum.repos.d/mongodb-enterprise.repo文件,以便您可以使用yum以下命令直接安装MongoDB企业

[mongodb-enterprise]
name=MongoDB Enterprise Repository
baseurl=https://repo.mongodb.com/yum/redhat/$releasever/mongodb-enterprise/4.0/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc

     (2). 安装MongoDB Enterprise软件包

            当前目录下发出命令:

sudo yum install -y mongodb-enterprise

3. 虚拟机配置

     (1). 部署三台虚拟机,三个Mongo节点都按照以下方式创建

            配置每个虚拟机的IP和端口号

10.10.11.41:20001
10.10.11.42:20002
10.10.11.43:20003

      (2). 文件存储地址创建

             [1]. MongoDB数据存储地址:/data/mongo-conf/data1/data

             [2]. MongoDB日志存储地址:/data/mongo-conf/data1/log/mongod.log

             [3]. MongoDB启动Config文件: /data/mongo-conf/data1/config.conf

systemLog:
  destination: file
  path: /data/mongo-conf/data1/log/mongod.log
  logAppend: true
storage:
  journal:
    enabled: true
  dbPath: /data/mongo-conf/data1/data
  directoryPerDB: true
  wiredTiger:
    engineConfig:
      directoryForIndexes: true
    collectionConfig:
      blockCompressor: zlib
    indexConfig:
      prefixCompression: true
processManagement:
  fork: true
  pidFilePath: /data/mongo-conf/data1/data/mongod.pid
  timeZoneInfo: /usr/share/zoneinfo
net:
  port: 20001
  bindIp: 0.0.0.0  # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
replication:
  oplogSizeMB: 8224 #oplog集合大小
  replSetName: rep1 #集群名称

               [4]. MongoDB启动命令: 

/usr/bin/mongod -f /data/mongo-conf/data1/config.conf &

               [5]. 创建MongoDB启动脚本: /data/mongo-conf/data1/start-mongodb.sh

/usr/bin/mongod -f /data/mongo-conf/data1/config.conf &

               [6]. 设置权限: 

chmod 777 start-mongodb.sh

               [7]. 初始化可复制集命令

//复制集初始化,在主节点上执行,ip禁止使用localhost
// 切换用户admin
use admin

rs.initiate({
      _id: "rep1",
      version: 1,
      members: [{ _id: 0, host : "10.10.11.41:20001" }]});

rs.add("10.10.11.42:20002");//有几个节点就执行几次方法

rs.add("10.10.11.43:20003");//有几个节点就执行几次方法

               [8]. 测试可复制集

                   在每个节点运行 rs.status() 或 isMaster()命令查看复制集状态

3. 使用正确的姿势连接复制集

     MongoDB复制集里Primary节点是不固定的,不固定的,不固定的! 所以生产环境千万不要直连Primary,千万不要直连Primary,千万不要直连Primary!                                                                          

重要的事情说3遍

     (1). JAVA原生驱动开发

List<ServerAddress> asList = Arrays.asList(
                            new ServerAddress("10.10.11.41", 20001), 
                            new ServerAddress("10.10.11.42", 20002), 
                            new ServerAddress("10.10.11.43", 20003));
client = new MongoClient(asList);

     (2). Spring配置开发

<mongo:mongo-client   
replica-set="10.10.11.41:20001,10.10.11.42:20002,10.10.11.43:20003">
</mongo:mongo-client>

      

     (3). 配置Tips

配置Tips:
关注Write Concern参数的设置,默认值1可以满足大多数场景的需求。W值大于1可以提高数据的可靠持久化,但会降低写性能。
在options里添加readPreference=secondaryPreferred即可实现读写分离,读请求优先到Secondary节点,从而实现读写分离的功能

   

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值