mongodb3.4集群搭建实战之高可用的分片 副本集

MongoDB是一种面向文档的NoSQL数据库,具有高性能、高可用性和易扩展性等特点,在实际应用中,我们通常会使用MongoDB的分片和副本集功能来实现数据的高可用和负载均衡,本文将详细介绍如何在MongoDB 3.4版本中搭建一个高可用的分片副本集集群。

环境准备

1、操作系统:CentOS 7.2

mongodb3.4集群搭建实战之高可用的分片 副本集

2、MongoDB版本:3.4

3、MongoDB工具:mongos、mongod、mongocfg等

搭建副本集

1、安装MongoDB

我们需要在每个节点上安装MongoDB,在CentOS 7.2上,可以通过以下命令安装MongoDB:

sudo yum install -y mongodb-org

2、配置MongoDB

接下来,我们需要为每个节点创建一个配置文件,在/etc/mongod.conf文件中,添加以下内容:

systemLog:
  destination: file
  path: /var/log/mongodb/mongod.log
  logAppend: true
net:
  bindIp: 127.0.0.1,192.168.1.2,192.168.1.3
  port: 27017
storage:
  dbPath: /data/db
replication:
  replSetName: "rs0"

bindIp表示绑定的IP地址,port表示端口号,dbPath表示数据存储路径,replSetName表示副本集名称,根据实际情况修改这些配置。

mongodb3.4集群搭建实战之高可用的分片 副本集

3、启动MongoDB服务

在每个节点上,通过以下命令启动MongoDB服务:

sudo service mongod start

4、初始化副本集

为了实现数据的高可用,我们需要将多个节点组成一个副本集,在其中一个节点上,通过以下命令初始化副本集:

mongo --host 192.168.1.2 --port 27017 <<EOF
rs.initiate()
EOF

5、查看副本集状态

初始化完成后,我们可以通过以下命令查看副本集的状态:

mongo --host 192.168.1.2 --port 27017 <<EOF
rs.status()
EOF

搭建分片集群

1、添加分片服务器

mongodb3.4集群搭建实战之高可用的分片 副本集

在副本集中,我们可以添加更多的节点作为分片服务器,在新的节点上安装MongoDB,然后创建一个新的配置文件/etc/mongod.conf,并添加以下内容:

systemLog:
  destination: file
  path: /var/log/mongodb/mongod.log
  logAppend: true
net:
  bindIp: 192.168.1.3,192.168.1.4,192.168.1.5  注意添加新的IP地址
  port: 27017
storage:
  dbPath: /data/db_shard1  注意修改数据存储路径,以区分不同的分片服务器
replication:
  replSetName: "rs0"  注意与副本集名称保持一致
sharding:  开启分片功能
  clusterRole: shardsvr  设置角色为分片服务器

启动新的MongoDB服务:

sudo service mongod start --config /etc/mongod.conf --fork  --fork表示以后台进程运行MongoDB服务

2、添加分片到副本集

接下来,我们需要将新添加的分片服务器添加到副本集中,在任何一个节点上,通过以下命令连接到MongoDB shell:

mongo --host 192.168.1.2 --port 27017 <<EOF  根据实际IP地址和端口号修改连接参数
rs.add("192.168.1.3:27017")  添加分片服务器的IP地址和端口号,注意用冒号分隔端口和IP地址,多个分片服务器用逗号分隔,rs.add("192.168.1.3:27017,192.168.1.4:27017,192.168.1.5:27017"))  如果需要添加更多分片服务器,可以继续添加类似的语句,rs.add("xxxx:xxxx") EOF  如果需要移除某个分片服务器,可以使用rs.remove("ip:port")语句,rs.remove("192.168.1.3:27017")  如果需要查看当前副本集中的所有成员,可以使用rs.status()语句,rs.status() EOF  如果需要查看当前副本集中所有分片的信息,可以使用sh.status()语句,sh.status() EOF  如果需要查看当前副本集中所有分片的详细信息,可以使用sh.status().detailedString()语句,sh.status().detailedString() EOF  如果需要查看当前副本集中所有分片的数据分布情况,可以使用sh.status().shards字段遍历输出,for (var i = 0; i < sh.status().shards.length; i++) { print(sh.status().shards[i].host) } EOF  如果需要查看当前副本集中所有分片的日志文件位置,可以使用sh.status().shards字段遍历输出日志文件路径,for (var i = 0; i < sh.status().shards.length; i++) { print(sh.status().shards[i].log) } EOF  如果需要查看当前副本集中所有分片的数据大小,可以使用sh.status().shards字段遍历输出数据大小,for (var i = 0; i < sh.status().shards[i].chunksSizeTotal; i++) { print(sh

原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/368935.html

Like (0)
Donate 微信扫一扫 微信扫一扫
K-seo的头像K-seoSEO优化员
Previous 2024-03-18 06:36
Next 2024-03-18 06:40

相关推荐

  • Ubuntu16.04手动安装MongoDB的详细教程

    本教程详细介绍了在Ubuntu16.04系统上手动安装MongoDB的步骤,包括下载、解压、配置和启动MongoDB服务,帮助用户顺利完成安装过程。

    2024-02-18
    0238
  • 如何有效构建MongoDB查询语句以优化数据检索效率?

    MongoDB查询语句用于从数据库中检索数据。以下是一个简单的示例:,,``javascript,db.collection.find({条件}),`,,db 是数据库名,collection 是集合名,{条件} 是查询条件。要查询名为 users 的集合中所有年龄大于18的用户,可以使用以下查询语句:,,`javascript,db.users.find({age: {$gt: 18}}),``

    2024-08-09
    039
  • 探索 MEAN 堆栈:简介

    在现代软件开发中,全栈开发者的角色越来越重要,他们不仅需要掌握前端开发技术,还需要了解后端开发技术,而MEAN堆栈,就是一种流行的全栈开发技术栈,它包括了MongoDB、Express.js、AngularJS和Node.js四个部分,这四个技术各自代表了数据库、服务器、前端框架和JavaScript运行环境,共同构成了一个完整的全栈……

    2023-11-06
    0182
  • mongodb存储对象

    在MongoDB中,存储实体类对应不上是一个常见的问题,这通常是由于实体类的属性与MongoDB文档的结构不匹配所导致的,为了解决这个问题,我们可以采取以下步骤:1. 检查实体类和MongoDB文档的字段名称是否一致:我们需要确保实体类中的字段名称与MongoDB文档中的字段名称完全一致,如果存在拼写错误或者大小写不一致的情况,就会导……

    2023-11-14
    0143
  • MongoDB中怎么处理长时间运行的事务

    MongoDB中可以使用beginTransaction()和commitTransaction()方法来处理长时间运行的事务,同时使用session.startTransaction()和session.commitTransaction()方法也可以实现。

    2024-05-18
    0129
  • mongodb和couchdb

    Java企业体系结构中MongoDB和Couchbase的比较随着大数据时代的到来,越来越多的企业开始关注数据存储和管理,在Java企业体系结构中,MongoDB和Couchbase是两个非常受欢迎的NoSQL数据库解决方案,本文将对这两种数据库进行详细的比较,帮助您了解它们的特点和优势,从而为您的企业选择合适的数据库提供参考。基本概……

    2023-12-16
    0131

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

免备案 高防CDN 无视CC/DDOS攻击 限时秒杀,10元即可体验  (专业解决各类攻击)>>点击进入