返回顶部
首页 > 资讯 > 操作系统 >linux下mongodb集群搭建过程的示例分析
  • 289
分享到

linux下mongodb集群搭建过程的示例分析

2023-06-29 06:06:56 289人浏览 薄情痞子
摘要

小编给大家分享一下linux下mongodb集群搭建过程的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!mongoDB的集群结构如上图网上有个monGo3

小编给大家分享一下linuxmongodb集群搭建过程的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

linux下mongodb集群搭建过程的示例分析

mongoDB的集群结构如上图

网上有个monGo3.0的集群例子:

https://www.yisu.com/article/191388.htm

router提供入口,mongo客户端通过router连入集群(本例只配置一个route集群)

Config Servers辅助记录数据分片(一个集群)

Shard为数据分片集群(本例中配置两个,用于验证分片),

本例中,为每个集群(shard config)三个mongo实例

config与shard为同一个类型的进程mongod

route则为mongos进程

下载mongo二进制压缩包

Https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-5.0.6.tgz

解压可以看到

linux下mongodb集群搭建过程的示例分析

用openssl生成一个key,用于mongo集群内部数据通迅

openssl rand -base64 123 > keyfile

mongod配置为件(config与shard通用)

mongo_node.conf:

storage:    engine: wiredTiger    directoryPerDB: true    journal:        enabled: true systemLog:    destination: file    logAppend: trueoperationProfiling:  slowOpThresholdMs: 10000replication:    oplogSizeMB: 10240proceSSManagement:    fork: truesecurity:    authorization: "disabled"

mongos的配置文件(即图中的route)

mongos.conf:

systemLog:    destination: file    logAppend: true processManagement:    fork: true

启动config集群(3个mongod进程)

WORK_DIR=/home/???/go/mongodb/mongo_test KEYFILE=$WORK_DIR/key/keyfilecat $KEYFILECONFFILE=$WORK_DIR/conf/mongo_node.confcat $CONFFILEMONGOD=mongodecho $MONGOD$MONGOD --port 26001 --bind_ip_all --configsvr --replSet configReplSet --keyFile $KEYFILE --dbpath $WORK_DIR/config_cluster/conf_n1/data --pidfilepath $WORK_DIR/config_cluster/conf_n1/db.pid --logpath $WORK_DIR/config_cluster/conf_n1/db.log --config $CONFFILE $MONGOD --port 26002 --bind_ip_all --configsvr --replSet configReplSet --keyFile $KEYFILE --dbpath $WORK_DIR/config_cluster/conf_n2/data --pidfilepath $WORK_DIR/config_cluster/conf_n2/db.pid --logpath $WORK_DIR/config_cluster/conf_n2/db.log --config $CONFFILE $MONGOD --port 26003 --bind_ip_all --configsvr --replSet configReplSet --keyFile $KEYFILE --dbpath $WORK_DIR/config_cluster/conf_n3/data --pidfilepath $WORK_DIR/config_cluster/conf_n3/db.pid --logpath $WORK_DIR/config_cluster/conf_n3/db.log --config $CONFFILE

启动成功后

用命令mongo --port 26001 --host 127.0.0.1

如下图,进入mongo的shell

linux下mongodb集群搭建过程的示例分析

在shell中输入如下js代码 设置config集群

cfg={    _id:"configReplSet",     configsvr: true,    members:[        {_id:0, host:'127.0.0.1:26001'},        {_id:1, host:'127.0.0.1:26002'},         {_id:2, host:'127.0.0.1:26003'}    ]};rs.initiate(cfg);

三个config mongo进程会自动选出一个primary,过一会再进入shell就会发现 shell提示变成primary

顺便给config添加一个admin用户,(一个集群只要在primary进程添加一次,会自动同步给secondary)

use admindb.createUser({    user:'admin',pwd:'123456',    roles:[        {role:'clusterAdmin',db:'admin'},        {role:'userAdminAnyDatabase',db:'admin'},        {role:'dbAdminAnyDatabase',db:'admin'},        {role:'readWriteAnyDatabase',db:'admin'}]})

同样之后shard也做同样的添加用户操作,便于后继观察数据

启动shard

WORK_DIR=/home/???/go/mongodb/mongo_test KEYFILE=$WORK_DIR/key/keyfilecat $KEYFILECONFFILE=$WORK_DIR/conf/mongo_node.confcat $CONFFILEMONGOD=mongodecho $MONGODecho "start shard1 replicaset"$MONGOD --port 27001 --bind_ip_all --shardsvr --replSet shard1 --keyFile $KEYFILE --dbpath $WORK_DIR/shard1/sh2_n1/data --pidfilepath $WORK_DIR/shard1/sh2_n1/db.pid --logpath $WORK_DIR/shard1/sh2_n1/db.log --config $CONFFILE$MONGOD --port 27002 --bind_ip_all --shardsvr --replSet shard1 --keyFile $KEYFILE --dbpath $WORK_DIR/shard1/sh2_n2/data --pidfilepath $WORK_DIR/shard1/sh2_n2/db.pid --logpath $WORK_DIR/shard1/sh2_n2/db.log --config $CONFFILE$MONGOD --port 27003 --bind_ip_all --shardsvr --replSet shard1 --keyFile $KEYFILE --dbpath $WORK_DIR/shard1/sh2_n3/data --pidfilepath $WORK_DIR/shard1/sh2_n3/db.pid --logpath $WORK_DIR/shard1/sh2_n3/db.log --config $CONFFILE

用mongo --port 27001 --host 127.0.0.1进入mongo shell

cfg={    _id:"shard1",     members:[        {_id:0, host:'127.0.0.1:27001'},        {_id:1, host:'127.0.0.1:27002'},        {_id:2, host:'127.0.0.1:27003'}    ]}; rs.initiate(cfg);

同样用之前的添加用户的js

并用同样的方法启动shard2集群,用于实验数据分片

对应的目录与分片名改成shard2

启动route

WORK_DIR=/home/???/go/mongodb/mongo_test KEYFILE=$WORK_DIR/key/keyfilecat $KEYFILECONFFILE=$WORK_DIR/conf/mongos.confcat $CONFFILEMONGOS=mongosecho $MONGOSecho "start mongos route instances"$MONGOS --port=25001 --bind_ip_all --configdb configReplSet/127.0.0.1:26001,127.0.0.1:26002,127.0.0.1:26003 --keyFile $KEYFILE --pidfilepath $WORK_DIR/route/r_n1/db.pid --logpath $WORK_DIR/route/r_n1/db.log --config $CONFFILE$MONGOS --port 25002 --bind_ip_all --configdb configReplSet/127.0.0.1:26001,127.0.0.1:26002,127.0.0.1:26003 --keyFile $KEYFILE --pidfilepath $WORK_DIR/route/r_n2/db.pid --logpath $WORK_DIR/route/r_n2/db.log --config $CONFFILE$MONGOS --port 25003 --bind_ip_all --configdb configReplSet/127.0.0.1:26001,127.0.0.1:26002,127.0.0.1:26003 --keyFile $KEYFILE --pidfilepath $WORK_DIR/route/r_n3/db.pid --logpath $WORK_DIR/route/r_n3/db.log --config $CONFFILE

路由添加分片

用mongo --port 25001 --host 127.0.0.1 -u admin -p 123456进入shell

或者这样也可 mongo mongodb://admin:123456@127.0.0.1:25001

在mongo shell分别执行以下两行js

sh.addShard("shard1/127.0.0.1:27001")sh.addShard("shard2/127.0.0.1:27011")

创建一个mongo database与collection

并设置分片

use test sh.enableSharding("test")db.createCollection("test_shard")sh.shardCollection("test.test_shard", {_id:"hashed"}, false, { numInitialChunks: 4} )

在mongo shell用以下js添加数据,可以修改循环次数避免测试时间过长

var cnt = 0;for(var i=0; i<1000; i++){    var dl = [];    for(var j=0; j<100; j++){        dl.push({                "bookId" : "BBK-" + i + "-" + j,                "type" : "Revision",                "version" : "IricSoneVB0001",                "title" : "Jackson's Life",                "subCount" : 10,                "location" : "China CN Shenzhen Futian District",                "author" : {                      "name" : 50,                      "email" : "RichardFoo@yahoo.com",                      "gender" : "female"                },                "createTime" : new Date()            });      }      cnt += dl.length;      db.test_shard.insertMany(dl);      print("insert ", cnt);}

windows下安装mongodb,利用自带的compass客户端观察两个shard集群

会发现数据分流到两个集群了

linux下mongodb集群搭建过程的示例分析

也可以直接连route观察数据

linux下mongodb集群搭建过程的示例分析

补充:

把js存到文件里给shell执行会比较方便

执行js命令如下:

mongo mongodb://admin:123456@127.0.0.1:25001 ./test.js

示例js代码:

print('=========WECOME=========='); conn = new Mongo("mongodb://admin:123456@192.168.2.129:25001");db = conn.getDB("testjs")sh.enableSharding("testjs")db.createCollection("testjs_col")sh.shardCollection("testjs.testjs_col", {_id:"hashed"}, false, { numInitialChunks: 4} )    var dl = [];    for(var j=0; j<10; j++){        dl.push({                "bookId" : "BBK-" + 0 + "-" + j,                "type" : "Revision",                "version" : "IricSoneVB0001",                "title" : "Jackson's Life",                "subCount" : 10,                "location" : "China CN Shenzhen Futian District",                "author" : {                      "name" : 50,                      "email" : "RichardFoo@yahoo.com",                      "gender" : "female"                },                "createTime" : new Date()            });    }    db.testjs_col.insertMany(dl);cursor = db.testjs_col.find();printJSON(cursor.toArray());

以上是“linux下mongodb集群搭建过程的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网操作系统频道!

--结束END--

本文标题: linux下mongodb集群搭建过程的示例分析

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

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

猜你喜欢
  • linux下mongodb集群搭建过程的示例分析
    小编给大家分享一下linux下mongodb集群搭建过程的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!mongodb的集群结构如上图网上有个mongo3...
    99+
    2023-06-29
  • mongodb linux下集群搭建过程
    mongodb的集群结构如上图 网上有个mongo3.0的集群例子: https://www.jb51.net/article/191388.htm router提供入口,mong...
    99+
    2024-04-02
  • elasticsearch-2.1.1集群搭建的示例分析
    这篇文章主要为大家展示了“elasticsearch-2.1.1集群搭建的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“elasticsearch-2....
    99+
    2024-04-02
  • zookeeper集群搭建实例分析
    今天小编给大家分享一下zookeeper集群搭建实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、准备三台虚拟机,并...
    99+
    2023-07-02
  • k8s部署redis集群搭建过程示例详解
    目录写在前面一、redis集群搭建1.1使用redis-cli创建集群1.2redis集群状态验证(可选)1.3重启pod,验证集群(可选)1.4创建Service服务1.5 Spr...
    99+
    2023-02-21
    k8s部署搭建redis集群 k8s redis集群搭建
  • greenplum集群的搭建过程
    本篇内容主要讲解“greenplum集群的搭建过程”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“greenplum集群的搭建过程”吧!环境说明本次环境一共四台虚拟机,一台为master,三台为s...
    99+
    2023-06-02
  • Centos7.3 RabbitMQ分布式集群搭建示例
    本文介绍了Centos7.3 RabbitMQ分布式集群搭建示例,分享给大家,具体如下: 注意事项 centos 7.x 关闭firewall 三台机器: 172.17.250.97 rabbiMQ01 172...
    99+
    2022-06-04
    Centos7.3 RabbitMQ分布式集群 Centos7.3 RabbitMQ集群
  • MongoDB搭建高可用集群的案例
    小编给大家分享一下MongoDB搭建高可用集群的案例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、规划好端口ip ...
    99+
    2024-04-02
  • Redis集群的示例分析
    这篇文章主要介绍Redis集群的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Redis集群详解Redis有三种集群模式,分别是:* 主从模式 * Se...
    99+
    2024-04-02
  • MongoDB 副本集的搭建过程
    目录1、创建节点目录2、创建配置文件,配置文件内容如下:3、启动三个实例4、初始化集群5、登录到实例上,使用rs.conf查看实例状态。7、登录到其中一台节点上,添加默认账号即可8、...
    99+
    2024-04-02
  • Node中集群的示例分析
    这篇文章给大家分享的是有关Node中集群的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、介绍Node 在 v0.8 时直接引入了 cluster 模块,用以解决多核 ...
    99+
    2024-04-02
  • redis集群不通过reids-trib脚本创建3主3从redis集群的示例分析
    这篇文章主要介绍redis集群不通过reids-trib脚本创建3主3从redis集群的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!  1、启动126,127,128 3个7000端口redis(...
    99+
    2023-06-06
  • MongoDB副本集的示例分析
    小编给大家分享一下MongoDB副本集的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!实验环境使用的Mongodb版本为...
    99+
    2024-04-02
  • 深入剖析MongoDB的复制集与分片集群的搭建与优化
    深入剖析MongoDB的复制集与分片集群的搭建与优化概述在大规模应用程序中,数据存储和管理是至关重要的。MongoDB作为一种非关系数据库解决方案,广泛用于处理大规模数据集和高负载应用程序的需求。MongoDB的数据复制和分片功能让用户能够...
    99+
    2023-11-04
    - MongoDB - 复制集 - 分片集群
  • Redis 5.02官方集群的搭建过程
    这篇文章主要介绍“Redis 5.02官方集群的搭建过程”,在日常操作中,相信很多人在Redis 5.02官方集群的搭建过程问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Re...
    99+
    2024-04-02
  • Redis中cluster集群的示例分析
    这篇文章主要为大家展示了“Redis中cluster集群的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Redis中cluster集群的示例分析”这篇文...
    99+
    2024-04-02
  • redis集群方案的示例分析
    这篇文章主要为大家展示了“redis集群方案的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“redis集群方案的示例分析”这篇文章吧。一、主从模式将数据...
    99+
    2024-04-02
  • redis集群原理的示例分析
    这篇文章主要介绍redis集群原理的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!redis集群的原理如果说依靠哨兵可以实现redis的高可用,如果还想在支持高并发同时容纳海...
    99+
    2024-04-02
  • RabbitMQ集群架构的示例分析
    这篇文章主要介绍了RabbitMQ集群架构的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、为什么使用集群?内建集群作为RabbitMQ最优秀的功能之一,它的作用有...
    99+
    2023-06-05
  • Linux 系统下搭建 Gitlab 服务器的过程分析
    目录1、安装依赖工具2、安装 Postfix 邮件服务器3、安装防火墙4、添加 gitlab 镜像源并安装 gitlab 服务器5、安装 gitlab6、安装后修改 gitlab 配置文件,指定访问服务器 ip 和自定义...
    99+
    2023-04-13
    Linux 搭建 Gitlab 服务器 Linux Gitlab 服务器
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作