广告
返回顶部
首页 > 资讯 > 操作系统 >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://www.lsjlt.com/news/323036.html(转载时请注明来源链接)

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

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

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

下载Word文档
猜你喜欢
  • 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+
    2022-11-13
  • elasticsearch-2.1.1集群搭建的示例分析
    这篇文章主要为大家展示了“elasticsearch-2.1.1集群搭建的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“elasticsearch-2....
    99+
    2022-10-19
  • 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集群搭建
  • 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作为一种非关系数据库解决方案,广泛用于处理大规模数据集和高负载应用程序的需求。MongoDB的数据复制和分片功能让用户能够...
    99+
    2023-11-04
    - MongoDB - 复制集 - 分片集群
  • Linux系统下搭建Gitlab服务器的过程分析
    目录1、安装依赖工具2、安装 Postfix 邮件服务器3、安装防火墙4、添加 gitlab 镜像源并安装 gitlab 服务器5、安装 gitlab6、安装后修改 gitlab 配...
    99+
    2023-05-15
    Linux 搭建 Gitlab 服务器 Linux Gitlab 服务器
  • Linux 系统下搭建 Gitlab 服务器的过程分析
    目录1、安装依赖工具2、安装 Postfix 邮件服务器3、安装防火墙4、添加 gitlab 镜像源并安装 gitlab 服务器5、安装 gitlab6、安装后修改 gitlab 配置文件,指定访问服务器 ip 和自定义...
    99+
    2023-04-13
    Linux 搭建 Gitlab 服务器 Linux Gitlab 服务器
  • centos6.5下kvm环境搭建的示例分析
    小编给大家分享一下centos6.5下kvm环境搭建的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、关闭部分服务,关闭内核防火墙(需重启机器)chkconfig postfix offchkconfig ipt...
    99+
    2023-06-10
  • Linux搭建svn服务器的示例分析
    今天给大家介绍一下Linux搭建svn服务器的示例分析。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。SVN是一个开放源代码的控制系统,通过采用分支管理系统的管...
    99+
    2023-06-28
  • NodeJS中多进程和集群的示例分析
    小编给大家分享一下NodeJS中多进程和集群的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!进程和线程“进程” 是计算机...
    99+
    2022-10-19
  • Linux启动过程的示例分析
    这篇文章主要为大家展示了“Linux启动过程的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux启动过程的示例分析”这篇文章吧。Linux启动过程详细介绍启动第一步--加载BIOS...
    99+
    2023-06-09
  • Elasticsearches的集群搭建及数据分片过程详解
    目录Elasticsearch高级之集群搭建,数据分片广播方式单播方式选取主节点什么是脑裂错误识别Elasticsearch高级之集群搭建,数据分片 es使用两种不同的方式来发现对方...
    99+
    2022-11-12
  • Linux程序编译过程的示例分析
    小编给大家分享一下Linux程序编译过程的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!本文将介绍如何将高层的C/C++语言编写的程序转换成为处理器能够执...
    99+
    2023-06-15
  • linux中Intel 845集成显示驱动下载的示例分析
    这篇文章将为大家详细讲解有关linux中Intel 845集成显示驱动下载的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。82845 linux intel集成显卡驱动下载驱动地址:http://...
    99+
    2023-06-13
  • Apache Hadoop 2.8 完全分布式集群搭建过程是怎样的
    这期内容当中小编将会给大家带来有关Apache Hadoop 2.8 完全分布式集群搭建过程是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。最近在自己的笔记本电脑上搭建了Apache Hadoop分...
    99+
    2023-06-19
  • CentOS 6.5下ZooKeeper3.4.6集群环境部署及单机部署的示例分析
    小编给大家分享一下CentOS 6.5下ZooKeeper3.4.6集群环境部署及单机部署的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!【系统】Cent...
    99+
    2023-06-03
  • Linux服务器集群系统中可伸缩邮件服务的示例分析
    这篇文章给大家分享的是有关Linux服务器集群系统中可伸缩邮件服务的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Linux集群系统是当代许多公司采用的解决方案,Linux集群通过多台机器连接起来,处理复...
    99+
    2023-06-16
  • Percona xtrabackup2.4版本远程备份和搭建从库的示例分析
    这篇文章主要为大家展示了“Percona xtrabackup2.4版本远程备份和搭建从库的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Percona...
    99+
    2022-10-18
  • Springboot整合Dubbo教程之项目创建和环境搭建的示例分析
    这篇文章主要介绍Springboot整合Dubbo教程之项目创建和环境搭建的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体如下:1. 使用IDEA新建一个Maven项目新建项目选择Maven后,点击nex...
    99+
    2023-05-30
    springboot dubbo
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作