mongodb 分片集群部署

这篇具有很好参考价值的文章主要介绍了mongodb 分片集群部署。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

mongodb 分片部署

二进制安装

mkdir -p /data/mongodb
tar xvf mongodb-linux-x86_64-rhel70-3.6.17.tgz
mv mongodb-linux-x86_64-rhel70-3.6.17/* /data/mongodb
#设置环境变量
echo export PATH='$'PATH:/data/mongodb/bin >> .bash_profile
source .bash_profile

三台config 配置

#三台配置一致
mkdir -p /data/mongodb/config
mkdir -p /data/mongodb/config/logs/
mkdir -p /data/mongodb/config/pid/
mkdir -p /etc/mongodb/

cat > //etc/mongodb/config.conf <<EOF
dbpath=/data/mongodb/config
logpath=/data/mongodb/config/logs/config.log
pidfilepath=/data/mongodb/config/pid/config.pid
logappend=true
bind_ip=0.0.0.0
port=27100
fork=true
configsvr=true
replSet=configs
EOF

#三台启动config
mongod -f /etc/mongodb/config.conf

config 初始化,任意一台执行

mongo --port 27100
use admin
config = {
        _id : "configs",
         members : [
             {_id : 0, host : "192.168.221.173:27100" },
             {_id : 1, host : "192.168.221.174:27100" },
             {_id : 2, host : "192.168.221.175:27100" }
         ]
}
rs.initiate(config)

shard 分片安装

shard1 安装

3台服务器添加配置
configdb为config服务地址,192.168.221.173、192.168.221.174、192.168.221.175分别替换为3台机器的IP地址,/data根据实际情况修改为数据盘路径。

3台服务器分别添加配置文件

#三台配置一致
mkdir -p /data/mongodb/shard1/data
mkdir -p /data/mongodb/shard1/logs/ 
mkdir -p /data/mongodb/shard1/pid/ 

cat > /etc/mongodb/shard1.conf <<EOF
dbpath=/data/mongodb/shard1/data
logpath=/data/mongodb/shard1/logs/shard1.log
pidfilepath=/data/mongodb/shard1/pid/shard1.pid
directoryperdb=true
logappend=true
replSet=shard1
bind_ip=0.0.0.0
port=27001
fork=true
shardsvr=true
EOF
#3台服务器分别启动服务
mongod -f /etc/mongodb/shard1.conf

shard1 初始化

连接任意一台非“arbiterOnly: true”节点shard1,192.168.221.173、192.168.221.174、192.168.221.175分别替换为3台机器的IP地址(建议节点1执行)

mongo --port 27001
use admin
config = {
      _id : "shard1",
       members : [
           {_id : 0, host : "192.168.221.173:27001" },
           {_id : 1, host : "192.168.221.174:27001" },
           {_id : 2, host : "192.168.221.175:27001", arbiterOnly: true  }
       ]
  }
rs.initiate(config);

shard2 安装

3台服务器分别添加配置文件

mkdir -p /data/mongodb/shard2/data
mkdir -p /data/mongodb/shard2/logs/
mkdir -p /data/mongodb/shard2/pid/
cat > /etc/mongodb/shard2.conf <<EOF
dbpath=/data/mongodb/shard2/data
logpath=/data/mongodb/shard2/logs/shard2.log
pidfilepath=/data/mongodb/shard2/pid/shard2.pid
directoryperdb=true
logappend=true
replSet=shard2
bind_ip=0.0.0.0
port=27002
fork=true
shardsvr=true
EOF
#3台服务器分别启动服务
mongod -f /etc/mongodb/shard2.conf

shard2初始化,

连接任意一台非“arbiterOnly: true”节点shard2,192.168.221.173、192.168.221.174、192.168.221.175分别替换为3台机器的IP地址(建议节点1执行)

mongo --port 27002
use admin
config = {
      _id : "shard2",
       members : [
           {_id : 0, host : "192.168.221.173:27002" },
           {_id : 1, host : "192.168.221.174:27002", arbiterOnly: true  },
           {_id : 2, host : "192.168.221.175:27002" }
       ]
  }
rs.initiate(config);

shard3 安装

3台服务器分别添加配置文件

mkdir -p /data/mongodb/shard3/data/
mkdir -p /data/mongodb/shard3/logs/
mkdir -p /data/mongodb/shard3/pid/

cat > /etc/mongodb/shard3.conf <<EOF
dbpath=/data/mongodb/shard3/data
logpath=/data/mongodb/shard3/logs/shard3.log
pidfilepath=/data/mongodb/shard3/pid/shard3.pid
directoryperdb=true
logappend=true
replSet=shard3
bind_ip=0.0.0.0
port=27003
fork=true
shardsvr=true
EOF
#3台服务器分别启动服务
mongod -f /etc/mongodb/shard3.conf

shard3 初始化,

连接任意一台非“arbiterOnly: true”节点shard3,192.168.221.173、192.168.221.174、192.168.221.175分别替换为3台机器的IP地址(建议节点1执行)

mongo --port 27003
use admin
config = {
      _id : "shard3",
       members : [
           {_id : 0, host : "192.168.221.173:27003" },
           {_id : 1, host : "192.168.221.174:27003" },
           {_id : 2, host : "192.168.221.175:27003", arbiterOnly: true   }
       ]
  }
rs.initiate(config);

mongos 安装

3台服务器分别添加配置文件

mkdir -p /data/mongodb/mongos/pid/
mkdir -p /data/mongodb/mongos/logs/

cat > /etc/mongodb/mongos.conf <<EOF
#configdb为config服务地址
configdb=configs/192.168.221.173:27100,192.168.221.174:27100,192.168.221.175:27100
pidfilepath=/data/mongodb/mongos/pid/mongos.pid
logpath=/data/mongodb/mongos/logs/mongos.log
bind_ip=0.0.0.0
port=30000
logappend=true
fork=true
EOF

#3台服务器启动mongos
mongos -f /etc/mongodb/mongos.conf

配置分片

任意一台服务器连接,192.168.221.173、192.168.221.174、192.168.221.175分别替换为3台机器的IP地址

mongo --port 30000
use admin
#添加shard
sh.addShard("shard1/192.168.221.173:27001,192.168.221.174:27001,192.168.221.175:27001")
sh.addShard("shard2/192.168.221.173:27002,192.168.221.174:27002,192.168.221.175:27002")
sh.addShard("shard3/192.168.221.173:27003,192.168.221.174:27003,192.168.221.175:27003")
#查看分片状态:
sh.status()

mongodb 分片集群部署,数据库,mongodb,数据库

这是一个MongoDB的分片状态信息。让我来解释一下每个部分的含义:

1. sharding version:这是分片的版本信息。当前的版本是6,最小兼容版本是5。
2. shards:这里列出了所有的分片信息。每个分片有一个唯一的"_id",以及它的"host"(主机)和"state"(状态)。这些信息指示了每个分片所在的主机和它们的状态。
3. active mongoses:这里显示了当前活动的mongos进程的数量和版本号。mongos是MongoDB的路由进程,用于处理客户端请求并将它们路由到正确的分片。
4. autosplit:这个字段指示是否启用了自动分片功能。在这个例子中,自动分片是启用的。
5. balancer:这个字段显示了均衡器(balancer)的状态。它指示均衡器是否启用,以及它是否正在运行。还显示了最近5次均衡尝试中失败的次数。
6. databases:这里列出了所有的数据库信息。每个数据库有一个"_id"和它的"primary"(主节点),还指示了该数据库是否进行了分片。

数据库、集合启用分片

mongo --port 30000
use admin
#这条命令表示启用分片功能,针对的数据库为 "rabbitpre_app"。
db.runCommand({enablesharding:"rabbitpre_app"});

#这条命令表示对 "rabbitpre_app" 数据库中的 "t_page_component" 集合进行分片,使用 "appId" 作为散列键(hashed),实际数据分布会根据 appId 的散列值进行分片。
db.runCommand( {shardcollection : "rabbitpre_app.t_page_component",key : { "appId" : "hashed" }} )
#
use rabbitpre_app
#这条命令表示获取 "rabbitpre_app" 数据库中 "t_page_component" 集合的统计信息,例如集合的大小、索引大小、数据条数等。
db.t_page_component.stats();

创建集群认证文件

创建集群认证文件(三台执行)

openssl rand -base64 512 > keyfile.file
#将keyfile.file拷贝到3台服务的/etc/mongodb目录,并设置权限
chmod 600 /etc/mongodb/keyfile.file

在shard、config添加如下配置(三台):

$ cat >> /etc/mongodb/shard1.conf <<EOF
auth=true
keyFile=/etc/mongodb/keyfile.file
EOF

$ cat >> /etc/mongodb/shard2.conf <<EOF
auth=true
keyFile=/etc/mongodb/keyfile.file
EOF

$ cat >> /etc/mongodb/shard3.conf <<EOF
auth=true
keyFile=/etc/mongodb/keyfile.file
EOF

$ cat >> /etc/mongodb/config.conf <<EOF
auth=true
keyFile=/etc/mongodb/keyfile.file
EOF

在mongos添加如下配置(三台)

echo "keyFile=/etc/mongodb/keyfile.file" >> /etc/mongodb/mongos.conf

创建集群用户

#创建用户,更新用户,密码设置为符合安全要求的密码
>db.createUser({ user: 'admin', pwd:'密码', roles:[{role:"root",db:"admin"}]})
>db.createUser({user:'rwuser',pwd:'密码', roles:[{role:"readWriteAnyDatabase",db:"admin"}]})
> db.updateUser('rwuser',{pwd:'密码',roles:[{role:'readWrite',db:'admin'}]})
#Roles角色说明:
read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限

部署常见问题

Error initializing sharding state, sleeping for 2 seconds and trying again :: caused by :: NetworkInterfaceExceededTimeLimit: Error loading clusterID :: caused by :: Operation timed out文章来源地址https://www.toymoban.com/news/detail-686803.html

查看防火墙是否关闭
关闭防火墙,问题解决

到了这里,关于mongodb 分片集群部署的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • window10 使用docker 本地安装部署mongodb数据库

    一、window10 安装docker 可以参看笨鸟教程【Windows Docker 安装】 安装完后的Docker Desktop是这个样子: 原始的docker镜像拉取仓库速度较慢,为了方便docker拉取镜像,可以设置国内的加速镜像,如:阿里 云、有道等【镜像加速】: 二、docker下载运行mongodb镜像 1 直接在 windows powerShel

    2024年02月03日
    浏览(42)
  • Linux服务器安装部署MongoDB数据库 - 无公网IP远程连接

    目录 前言 1. 配置Mongodb源 2. 安装MongoDB 3. 局域网连接测试 4. 安装cpolar内网穿透 5. 配置公网访问地址 6. 公网远程连接 7. 固定连接公网地址 8. 使用固定地址连接 转载自Cpolar Lisa文章:Linux服务器安装部署MongoDB数据库 - 无公网IP远程连接「内网穿透」 MongoDB是一个介于关系数据库

    2024年02月02日
    浏览(42)
  • 大数据NoSQL数据库HBase集群部署

    目录 1.  简介 2.  安装 1. HBase依赖Zookeeper、JDK、Hadoop(HDFS),请确保已经完成前面 2. 【node1执行】下载HBase安装包 3. 【node1执行】,修改配置文件,修改conf/hbase-env.sh文件 4. 【node1执行】,修改配置文件,修改conf/hbase-site.xml文件 5. 【node1执行】,修改配置文件,修改conf/regi

    2024年02月08日
    浏览(50)
  • 如何使用Docker部署MongoDB并结合内网穿透实现远程访问本地数据库

    正文开始前给大家推荐个网站,前些天发现了一个巨牛的 人工智能 学习网站, 通俗易懂,风趣幽默 ,忍不住分享一下给大家。 点击跳转到网站。 本文主要介绍如何在Linux Ubuntu系统使用Docker快速部署MongoDB,并结合cpolar内网穿透工具实现公网远程访问本地数据库。 MongoDB服务

    2024年02月22日
    浏览(90)
  • 大数据NoSQL数据库HBase集群部署——详细讲解~

    HBase 是一种分布式、可扩展、支持海量数据存储的 NoSQL 数据库。 和Redis一样,HBase是一款KeyValue型存储的数据库。 不过和Redis设计方向不同 Redis设计为少量数据,超快检索 HBase设计为海量数据,快速检索 HBase在大数据领域应用十分广泛,现在我们来在node1、node2、node3上部署H

    2024年02月11日
    浏览(43)
  • k8s集群中部署项目之数据库准备

    同理 同理 同理 同理 同理

    2024年02月07日
    浏览(54)
  • 分布式数据库Apache Doris HA集群部署

    📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜😜😜 中国DBA联盟(ACDU)成员,目前服务于工业互联网 擅长主流Oracle、MySQL、PG、高斯及Greenplum运维开发,备份恢复,安装迁移,性能优

    2024年02月06日
    浏览(51)
  • [Kubernetes]8. K8s使用Helm部署mysql集群(主从数据库集群)

    上一节讲解了K8s包管理工具Helm、使用Helm部署mongodb集群(主从数据库集群),这里来看看 K8s使用Helm部署mysql集群(主从数据库集群) 无本地存储: 当重启的时候,数据库消失 (1).打开官网的应用中心 打开应用中心,搜索mysql (2).安装  1).添加repo仓库 2).安装 具体命令如下:  3).自动生成

    2024年01月21日
    浏览(72)
  • redis高可用集群数据库的安装部署(6.2.12版本)

    第三阶段基础 时  间:2023年7月3日 参加人:全班人员 内  容: 6.2.12版本redis集群部署 目录 一、环境配置:【两台服务器】 二、redis多实例配置: 三、构建redis cluster集群 四、创建主从 五、故障转移实验 六、拓  展 安装部署:(一台主机,三主三从,redis版本为6.2.12) 实

    2024年02月12日
    浏览(43)
  • 2. MongoDB分片集群架构实战-----MongoDB分片集群和多文档事务详解

    本文是按照自己的理解进行笔记总结,如有不正确的地方,还望大佬多多指点纠正,勿喷。 课程内容: 1.MongoDB分片集群架构及其原理分析 2.MongoDB分片集群环境搭建 3.MongoDB分片策略和数据均衡详解 4.写事务之writeConcern实战 5.读事务之readPreferencereadConcern实战 6.MongoDB多文档事务

    2024年02月11日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包