广告
返回顶部
首页 > 资讯 > 数据库 >MongoDB分布式集群分片
  • 863
分享到

MongoDB分布式集群分片

2024-04-02 19:04:59 863人浏览 泡泡鱼
摘要

mongoDB高可用集群搭建 一、环境准备 # 启动时需要使用非root用户,所有创建一个monGo用户: useradd mongo # 为mongo用户添加密码: echo 123456 | pass

mongoDB高可用集群搭建

一、环境准备

# 启动时需要使用非root用户,所有创建一个monGo用户:
useradd mongo

# 为mongo用户添加密码:
echo 123456 | passwd --stdin mongo

# 将mongo添加到sudoers
echo "mongo ALL = (root) NOPASSWD:ALL" | tee /etc/sudoers.d/mongo
chmod 0440 /etc/sudoers.d/mongo
#解决sudo: sorry, you must have a tty to run sudo问题,在/etc/sudoer注释掉 Default requiretty 一行
sudo sed -i 's/Defaults    requiretty/Defaults:chiansun !requiretty/' /etc/sudoers

# 创建一个mongo目录
mkdir /mongo

# 给相应的目录添加权限
chown -R mongo:mongo /mongo

# 配置mongo的yum源
cat >> /etc/yum.repos.d/mongodb-org-4.0.repo << EOF
[mongodb-org-4.0]
name=MongoDB Repository
baseurl=Http://repo.mongodb.org/yum/redhat/\$releasever/mongodb-org/4.0/x86_64/
gpGCheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
EOF

# 关闭selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
setenforce 0

# 关闭防火墙
systemctl disable firewalld
systemctl stop firewalld

二、主机规划

192.168.33.14   node-1
192.168.33.15   node-2
192.168.33.16   node-3

node-1    node-2       node-3 
mongos    mongos       mongos     路由服务器,寻址
config    config       config     配置服务器,保存配置
shard1主  shard2主     shard3主    分片:保存数据
shard2从  shard3从     shard1从    副本集:备份数据,可以配置读写分离(主负责写,从负责同步数据和读)
shard3从  shard1从     shard2从

三、安装部署

# 分别在多台机器上使用mongo用户登录
sudo yum install -y mongodb-org 

# 分别在多台机器上创建mongo config server对应的目录
mkdir -p /mongo/config/{log,data,run}

# 分别在多台机器上修改config server的配置文件
cat > /mongo/config/mongod.conf << EOF
systemLog:
  destination: file
  logAppend: true
  path: /mongo/config/log/mongod.log
storage:
  dbPath: /mongo/config/data
  journal:
    enabled: true
proceSSManagement:
  fork: true
  pidFilePath: /mongo/config/run/mongod.pid
net:
  port: 27100
  bindIp: 0.0.0.0
replication:
  replSetName: config
sharding:
  clusterRole: configsvr
EOF

# 启动所有的mongo config server服务
mongod --config /mongo/config/mongod.conf

# 登录任意一台配置服务器,初始化配置副本集
mongo --port 27100

# 创建配置
# id名要和replSetName名保持一致
config = {
   _id : "config",
    members : [
        {_id : 0, host : "192.168.33.14:27100" },
        {_id : 1, host : "192.168.33.15:27100" },
        {_id : 2, host : "192.168.33.16:27100" }
    ]
}

# 初始化副本集配置
rs.initiate(config)

# 查看分区状态
rs.status()

# 注意:其中,"_id" : "config"应与配置文件中配置的 replicaction.replSetName 一致,"members" 中的 "host" 为三个节点的ip和port
1.配置第一个分片和副本集
# 修改mongo shard1 server的配置文件
mkdir -p /mongo/shard1/{log,data,run}

# 分别在多台机器上修改shard1 server的配置文件
cat > /mongo/shard1/mongod.conf << EOF
systemLog:
  destination: file
  logAppend: true
  path: /mongo/shard1/log/mongod.log
storage:
  dbPath: /mongo/shard1/data
  journal:
    enabled: true
processManagement:
  fork: true
  pidFilePath: /mongo/shard1/run/mongod.pid
net:
  port: 27001
  bindIp: 0.0.0.0
replication:
  replSetName: shard1
sharding:
  clusterRole: shardsvr
EOF

# 启动所有的shard1 server
mongod --config /mongo/shard1/mongod.conf

# 登陆任意一台shard1服务器,初始化副本集
mongo --port 27001

# 使用admin数据库
use admin

# 定义副本集配置
config = {
   _id : "shard1",
    members : [
        {_id : 0, host : "192.168.33.14:27001" },
        {_id : 1, host : "192.168.33.15:27001" },
        {_id : 2, host : "192.168.33.16:27001" }
    ]
}

# 初始化副本集配置
rs.initiate(config);

# 查看分区状态
rs.status()
2.配置第二个分片和副本集
# 修改mongo shard2 server的配置文件
mkdir -p /mongo/shard2/{log,data,run}

# 分别在多台机器上修改shard2 server的配置文件
cat > /mongo/shard2/mongod.conf << EOF
systemLog:
  destination: file
  logAppend: true
  path: /mongo/shard2/log/mongod.log
storage:
  dbPath: /mongo/shard2/data
  journal:
    enabled: true
processManagement:
  fork: true
  pidFilePath: /mongo/shard2/run/mongod.pid
net:
  port: 27002
  bindIp: 0.0.0.0
replication:
  replSetName: shard2
sharding:
  clusterRole: shardsvr
EOF

# 启动所有的shard2 server
mongod --config /mongo/shard2/mongod.conf

# 登陆任意一台shard2服务器,初始化副本集
mongo --port 27002

# 使用admin数据库
use admin

# 定义副本集配置
config = {
   _id : "shard2",
    members : [
        {_id : 0, host : "192.168.33.14:27002" },
        {_id : 1, host : "192.168.33.15:27002" },
        {_id : 2, host : "192.168.33.16:27002" }
    ]
}

# 初始化副本集配置
rs.initiate(config)

# 查看分区状态
rs.status()
3.配置第三个分片和副本集
# 修改mongo shard3 server的配置文件
mkdir -p /mongo/shard3/{log,data,run}

# 分别在多台机器上修改shard3 server的配置文件
cat > /mongo/shard3/mongod.conf << EOF
systemLog:
  destination: file
  logAppend: true
  path: /mongo/shard3/log/mongod.log
storage:
  dbPath: /mongo/shard3/data
  journal:
    enabled: true
processManagement:
  fork: true
  pidFilePath: /mongo/shard3/run/mongod.pid
net:
  port: 27003
  bindIp: 0.0.0.0
replication:
  replSetName: shard3
sharding:
  clusterRole: shardsvr
EOF

# 启动所有的shard3 server
mongod --config /mongo/shard3/mongod.conf

# 登陆任意一台的shard3服务器,初始化副本集
mongo --port 27003

# 使用admin数据库
use admin

# 定义副本集配置
config = {
   _id : "shard3",
    members : [
        {_id : 0, host : "192.168.33.14:27003" },
        {_id : 1, host : "192.168.33.15:27003" },
        {_id : 2, host : "192.168.33.16:27003" }
    ]
}

# 初始化副本集配置
rs.initiate(config)

# 查看分区状态
rs.status()
4.配置mongos路由器
##### 注意:启动mongos是守候进程是因为/mongo/mongos/mongod.conf缺少了fork: true这个配置#######
------------------------------------------------------------------------------------------

mkdir -p /mongo/mongos/{log,data,run}

# 添加mongs的配置文件
cat > /mongo/mongos/mongod.conf << EOF
systemLog:
  destination: file
  logAppend: true
  path: /mongo/mongos/log/mongod.log
processManagement:
  fork: true
  pidFilePath: /mongo/mongos/run/mongod.pid
net:
  port: 27200
  bindIp: 0.0.0.0
sharding:
  configDB: config/192.168.33.14:27100,192.168.33.15:27100,192.168.33.16:27100
EOF

# 注意,这里configDB后面的config要与配置服务器的_id保持一致

# 启动路由服务器
mongos --config /mongo/mongos/mongod.conf

# 登录其中的一台路由节点,手动启用分片
mongo --port 27200

# 添加分片到mongos
sh.addShard("shard1/192.168.33.14:27001,192.168.33.15:27001,192.168.33.16:27001")
sh.addShard("shard2/192.168.33.15:27002,192.168.33.16:27002,192.168.33.14:27002")
sh.addShard("shard3/192.168.33.16:27003,192.168.33.14:27003,192.168.33.15:27003")

# 设置slave可读
rs.slaveOk()
5.常用操作
#没有分片是因为没有开启分片规则

# 对bike这个数据库开启分片功能
use admin
db.runCommand({"enablesharding":"bike"}) 

# 对bike数据库下的users集合按id的hash进行分片
db.runCommand({"shardcollection":"bike.users","key":{_id:'hashed'}})

# 启动所有的config server
mongod --config /mongo/config/mongod.conf

# 启动所有的shard1
mongod --config /mongo/shard1/mongod.conf

# 启动所有的shard2
mongod --config /mongo/shard2/mongod.conf

# 启动所有的shard3
mongod --config /mongo/shard3/mongod.conf

# 启动所有的mongos
mongos --config /mongo/mongos/mongod.conf

# 关闭服务
mongod --shutdown --dbpath /mongo/shard3/data
mongod --shutdown --dbpath /mongo/shard2/data
mongod --shutdown --dbpath /mongo/shard1/data
mongod --shutdown --dbpath /mongo/config/data
您可能感兴趣的文档:

--结束END--

本文标题: MongoDB分布式集群分片

本文链接: https://www.lsjlt.com/news/39652.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MongoDB分布式集群分片
    MongoDB高可用集群搭建 一、环境准备 # 启动时需要使用非root用户,所有创建一个mongo用户: useradd mongo # 为mongo用户添加密码: echo 123456 | pass...
    99+
    2022-10-18
  • Mongodb 分片集群部署
    Mongodb分片集群介绍       分片(sharding)是指将数据库拆分,将其分散在不同的机器上的过程。将数据分散到不同的机器上,不需要功...
    99+
    2022-10-18
  • mongodb 分片集群搭建
    环境介绍:...
    99+
    2022-10-18
  • MongoDB分片集群部署
    一、环境说明 1、我们prod环境MongoDB的集群架构是做的分片集群的部署,但是目前我们没有分片,即所有数据都在一个分片上,后期如果数量大,需要分配,集群随时可以分片,对业务方透明2、各个角色的部署情况...
    99+
    2022-10-18
  • 详解MongoDB4.0构建分布式分片群集
    MongoDB分片简述 高数据量和吞吐量的数据库应用会对单机的性能造成较大压力,大的查询量会将单机的 CPU 耗尽,大的数据量对单机的存储压力较大,最终会耗尽系统的内存而将压力转移到磁盘 IO 上。 M...
    99+
    2022-10-18
  • MongoDB中怎么实现分布式集群
    本篇文章给大家分享的是有关 MongoDB中怎么实现分布式集群,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。集群概览mongodb 相关的进程...
    99+
    2022-10-18
  • CentOS7上的mongodb分片群集
    CentOS7的mongodb分片群集 简介 高数据量和吞吐量的数据库应用会对单机的性能造成较大的压力,大的查询量会将单机的CPU耗尽,大的数据量对单机的存储压力较大,最终会耗尽系统的内存而将压力转移到磁...
    99+
    2022-10-18
  • 2.MongoDB Sharding Cluster分片集群
    原文:https://www.cnblogs.com/fengyuanfei/p/14495513.html...
    99+
    2018-07-08
    2.MongoDB Sharding Cluster分片集群 数据库入门 数据库基础教程
  • MongoDB分片集群部署详解
     一、环境说明 1、我们prod环境MongoDB的集群架构是做的分片集群的部署,但是目前我们没有分片,即所有数据都在一个分片上,后期如果数量大,需要分配,集群随时可以分片,对业务方透明 2、各...
    99+
    2022-10-18
  • mongodb分片集群怎么搭建
    要搭建一个MongoDB分片集群,您需要遵循以下步骤: 安装MongoDB:在每个节点上安装MongoDB。您可以从MongoD...
    99+
    2023-10-26
    mongodb
  • mongodb 中怎么利用分片集群创建分片集合
    mongodb 中怎么利用分片集群创建分片集合,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1.创建数据库,直接use 即可,没有的话,如果你...
    99+
    2022-10-18
  • 在CentOS7上部署MongoDB分片群集
    概述 MongoDB分片是使用多个服务器存储数据的方法,以支持巨大的数据存储和对数据进行操作。分片技术可以满足MongoDB数据量大量增长的需求,当一台MongoDB服务器不足以存储海量数据或不足以提供可接...
    99+
    2022-10-18
  • 搭建高可用MongoDB集群(分片)
    MongoDB基础请参考:https://blog.51cto.com/kaliarch/2044423MongoDB(replica set)请参考:https://blog.51cto.com/kali...
    99+
    2022-10-18
  • mongodb+分片集群+ycsb测试一例
    简介mongodb是很出名的nosql数据库了,属于集合-文档型的特有架构nosql数据库,也是被誉为最像关系型数据库的非关系型数据库,但是不支持事务.由于mongodb原生就支持分布式架构,所以部署简单,...
    99+
    2022-10-18
  • MongoDB 3 分片集群安装配置
    操作系统:CentOS 6   x86_64MongoDB版本:3.4.3集群主机拓扑:主机mongo shardsvr & ReplSetNamemongo configsvr ...
    99+
    2022-10-18
  • MongoDB中怎么搭建分片集群
    本篇文章为大家展示了MongoDB中怎么搭建分片集群,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。MongoDB分片集群基本组件介绍mongos:数据库集群请求的入...
    99+
    2022-10-18
  • mongodb 中怎么设置分片集群
    今天就跟大家聊聊有关mongodb 中怎么设置分片集群,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1、先enable sharding,开启数据库...
    99+
    2022-10-18
  • MongoDB中怎么实现分片与集群
    这期内容当中小编将会给大家带来有关MongoDB中怎么实现分片与集群,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、 mongodb分片与集群拓扑图二、分片与集群的部署...
    99+
    2022-10-18
  • Zookeeper分布式集群搭建
    文中Zookeeper分布式集群搭建在Linux CentOS7系统之上。搭建大数据分布式集群,不建议使用root用户直接操作,故文中使用bigdata用户进行集群的搭建。 一、环境准备 软件 版本 Linux系统 CentOS7...
    99+
    2015-10-26
    Zookeeper分布式集群搭建
  • NoSQL之redis(分布式集群)
    1.集群架构: 解释: 所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽。 节点的fail是通过集群中超过半数的节点检测失效时才生效. 客户端与redis节点直...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作