Contact Icon zydown.com
公告 :加入本站终身vip会员用户,下载本站资源更优惠,我们不断更新中………

当前位置:首页>教程>网站教程>mongodb3.4集群搭建实战之高可用的分片 副本集

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
    声明:本站提供的一切软件、教程和内容信息都来自网络收集整理,仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,版权争议与本站无关。用户必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!

    给TA打赏
    共{{data.count}}人
    人已打赏

    相关文章

    网站教程

    如何优化企业云存储服务器配置? (企业云存储服务器配置)

    2024-3-18 9:44:26

    网站教程

    ifstream在哪个头文件(c++ 头文件和源文件的关系)

    2024-3-18 13:10:18

    {{yiyan[0].hitokoto}}
      暂无讨论,说说你的看法吧
    个人中心
    购物车
    优惠劵
    今日签到
    有新私信 私信列表
    搜索