精华内容
下载资源
问答
  • MongoDB集群

    2021-04-18 17:41:44
    1.MongoDB集群介绍 MongoDB集群搭建有三种方式: 1、Master-Slave模式 2、Replica-Set方式 3、Sharding方式 在MongoDB 2.x系列的版本,有一个主从复制模式,但是MongoDB官方也不推荐使用,而从MongoDB 3.2开始,主从...

    1.MongoDB集群介绍

    MongoDB集群搭建有三种方式:
    1、Master-Slave模式
    2、Replica-Set方式
    3、Sharding方式
    在MongoDB 2.x系列的版本,有一个主从复制模式,但是MongoDB官方也不推荐使用,而从MongoDB 3.2开始,主从复制模式已经被标记成过时了,不推荐使用;
    从MongoDB 4.0 开始已经完全移除了主从复制模式,推荐使用副本集和分片集群模式;
    副本集就是有自动故障转移功能的主从复制模式;

    在这里插入图片描述
    主从复制和副本集最大的区别就是副本集没有固定的“主节点”,整个集群会选出一个“主节点”,当其挂掉后,又在剩下的从节点中选中其他节点为“主节点”,
    当原来的主节点修复之后,原来的主节点会再次恢复为主节点,备节点不再是主节点的角色。
    副本集的方式还有一个角色,那就是仲裁节点,它不存储数据,他的作用就是当主节点出现故障,选举出备节点作为主节点,继续保证集群可用。客户端连接时只连接主节点或者备节点,不用连接仲裁节点。

    副本集至少需要3个节点, 可以3个全部做副本集, 也可以让其中一个做仲裁
    副本集中只有1台主可以进行读和写,其余节点只能读;
    副本集之间的复制是通过oplog日志现实的,oplog是节点中local库中的一个集合,备份节点通过查询这个集合就可以知道需要进行复制的操作;
    每个节点通过心跳去查看其他节点的状态;
    当从节点宕机,不用影响副本集的使用;
    当主节点宕机,各个节点通过选举的方式来选择下一个主节点;
    若所有的从都宕机只剩下Primary(主),则Primary会变成Secondary(从),不能提供服务;

    MongoDB 3.2.0版本前是基于Bully选举算法(霸道选举算法),从3.2.0开始默认使用基于Raft算法的选举策略;

    2. 副本集集群搭建

    1、以三个节点为例,配置三个副本集的配置文件;
    (我们是在一台linux下操作的,端口号不能重复,实际在项目中是在多台linux操作,那么区别就是端口号可以一样)
    节点1的配置文件 master.conf:
    dbpath=/usr/local/software/mongodb-4.2.0/data/master
    logpath=/usr/local/software/mongodb-4.2.0/logs/master.log
    pidfilepath=/usr/local/software/mongodb-4.2.0/logs/master.pid
    directoryperdb=true
    logappend=true
    replSet=testrs
    bind_ip=0.0.0.0
    port=27018
    oplogSize=10000
    fork=true

    节点2的配置文件 slave.conf:
    dbpath=/usr/local/software/mongodb-4.2.0/data/slave
    logpath=/usr/local/software/mongodb-4.2.0/logs/slave.log
    pidfilepath=/usr/local/software/mongodb-4.2.0/logs/slave.pid
    directoryperdb=true
    logappend=true
    replSet=testrs
    bind_ip=0.0.0.0
    port=27019
    oplogSize=10000
    fork=true

    节点3 的配置文件 arbiter.conf:
    dbpath=/usr/local/software/mongodb-4.2.0/data/arbiter
    logpath=/usr/local/software/mongodb-4.2.0/logs/arbiter.log
    pidfilepath=/usr/local/software/mongodb-4.2.0/logs/arbiter.pid
    directoryperdb=true
    logappend=true
    replSet=testrs
    bind_ip=0.0.0.0
    port=27020
    oplogSize=10000
    fork=true
    注意要保证上面配置的路径的文件夹都要存在,不存在的话要创建好;

    directoryperdb:设置为true,修改数据目录存储模式,每个数据库的文件存储在DBPATH指定目录的不同的文件夹中,使用此选项,可以配置的MongoDB将数据存储在不同的磁盘设备上,以提高写入吞吐量或磁盘容量,默认为false;
    注意:在运行一段时间的数据库中开启该参数,会导致原始的数据都会消失(注释参数则会回来),因为数据目录不同了,除非迁移现有的数据文件到directoryperdb产生的数据库目录中,如:
    mv test.* test/
    把test数据文件迁移到directoryperdb产生的数据库test目录中,所以需要在规划好之后确定是否要开启;

    logappend:写日志的模式:设置为true为追加;

    replSet:使用此设置来配置复制副本集,指定一个副本集名称作为参数,所有主机都必须有相同的名称作为同一个副本集;

    oplogSize:指定的复制操作日志(OPLOG)的最大大小,mongod创建一个OPLOG的大小基于最大可用空间,对于64位系统,OPLOG通常是5%的可用磁盘空间;
    一旦mongod第一次创建OPLOG,改变oplogSize将不会影响OPLOG的大小;

    2、然后依次启动每个节点,切换到mongodb的bin目录下;
    ./mongod -f master.conf
    ./mongod -f slave.conf
    ./mongod -f arbiter.conf

    在这里插入图片描述
    3、创建集群:

    连接登录第一个节点:
    ./mongo 127.0.0.1:27018
    使用admin数据库:
    use admin
    执行配置:
    var cfg={_id:“testrs”, members:[
    {_id:0,host:“127.0.0.1:27018”,priority:2},
    {_id:1,host:“127.0.0.1:27019”,priority:1},
    {_id:2,host:“127.0.0.1:27020”,arbiterOnly:true}
    ]
    };
    初始化副本集:
    rs.initiate(cfg);
    稍等几秒,然后查看集群状态:

    rs.status();
    重点查看 “stateStr”:“PRIMARY”, 信息;

    在这里插入图片描述
    4、主节点测试:
    可以正常插入数据,可以读,可以写;
    从节点连接:
    从节点默认情况下不能写,也不能查,比如你查询数据库会出错:not master and slaveOk=false,这个错误是正常的,默认情况下从节点不允许读和写操作,可以执行rs.slaveOk()命令让从机器能进行读操作;

    5、故障测试:
    主节点挂掉:在备节点上查看集群状态,会发现备节点成为主节点:primary。
    这里如果再次将挂掉的master节点启动,那么等一会儿原来的master节点会变为primary主节点,而不是由slave备节点继续充当主节点;

    3. MongoDB分片集群

    (与redis非常相似: 副本集–>redis的哨兵, 分片 -->redis cluster)
    100G数据,原来放在一个mongodb上的,现在把它放到3个mongodb上,这就是分片,然后3个mongodb上的数据总和还是100G;
    分片(sharding)是指将数据库拆分,将其分散在不同的机器上的过程,将数据分散到不同的机器上,不需要功能强大的服务器就可以存储更多的数据和处理更大的负载,其基本思想就是将集合切成小块,这些块分散到若干片里,每个片只负责存储总数据中的一部分,最后通过一个路由均衡器来对各个分片进行路由均衡,通过一个名为mongos的路由进程进行操作,mongos知道数据和片的对应关系(通过配置服务器),大部分使用场景都是解决磁盘空间的问题,查询则尽量避免跨分片查询;
    使用分片的时机:
    1,机器的磁盘不够用了,使用分片解决磁盘空间的问题;

    2,单个mongod已经不能满足写数据的性能要求,通过分片让写压力分散到各个分片上;

    3,希望把大量数据放到内存中提高性能,通过分片使用分片服务器来分摊压力;

    MongoDB分片sharding集群方式是基于副本集,整个sharding方式的集群中,有三类角色,分别是shard,config,router;
    shard:分片服务器,用于存储实际的数据块,实际生产环境中一个shard server 角色可以由几台服务器组成一个Peplica Set 承担,防止主机单点故障;
    Config:配置节点,不会存储数据,会存储元数据信息,比如片键的范围;
    router:路由节点,是mongo集群与外部客户端连接的入口,提供客户端连接访问,对客户端透明,让客户端感觉使用像是单节点数据库;

    1、三台配置服务形成副本集(存储元数据信息,一般冗余3台),
    2、三台分片服务形成一个副本集(提供两组或多组分片服务副本集),
    3、客户端直接与三台路由服务连接交互,配置服务和分片服务对客户端是透明的;

    展开全文
  • MongoDB分布式部署 ... 配置MongoDB集群 http://blog.csdn.net/duck_genuine/archive/2010/10/09/5929743.aspx MongoDB replica Set配置说明 ...

    MongoDB分布式部署

    http://hi.baidu.com/lzpsky/blog/item/d59af4276c73c50f908f9d5d.html

    配置MongoDB集群

    http://blog.csdn.net/duck_genuine/archive/2010/10/09/5929743.aspx

    MongoDB replica Set配置说明

    MongoDB在1.6版本对开发了新功能replica set,这比之前的replication功能要强大一些,auto shard已经明确说明不支持replication paris,建议使用replica set,replica set故障切换完全自动,各个DB之间数据完全一致,大大降低了维护成功。


    replica set 配置如下:


    1、创建目录 /data/db ,data/db2 ,/data/db3,启动mongod并创建复制集 foo

    启动mongod
    [root@TEST40]
    mongod --shardsvr --fork --replSet foo --logpath /var/log/mongodb.log --logappend --rest
    mongod --shardsvr --fork --replSet foo --port 27019 --logpath /var/log/mongodb2.log --logappend --dbpath /data/db2 --rest
    mongod --shardsvr --fork --replSet foo --port 27020 --logpath /var/log/mongodb3.log --logappend --dbpath /data/db3 --rest


    2、初始化复制集配置信息
    初始化时给每个host分配一个ID,该ID在复制集中是唯一的,在测试过程中没有发现该ID和故障切换有直接关系。
    > config = {_id: 'foo', members: [
    ... {_id: 0, host: '192.168.100.212:27018'},
    ... {_id: 1, host: '192.168.100.212:27019'},
    ... {_id: 2, host: '192.168.100.212:27020'}]
    ... }
    {
    "_id" : "foo",
    "members" : [
    {
    "_id" : 0,
    "host" : "192.168.100.212:27018"
    },
    {
    "_id" : 1,
    "host" : "192.168.100.212:27019"
    },
    {
    "_id" : 2,
    "host" : "192.168.100.212:27020"
    }
    ]
    }
    > rs.initiate(config);
    {
    "info" : "Config now saved locally. Should come online in about a minute.",
    "ok" : 1
    }
    >
    已经配置成功


    3、查看查看replica set存在的成员
    state:1表示该host是当前可以进行读写,2:不能读写
    health:1表示该host目前是正常的,0:异常
    [root@TEST40 data]# mongo 192.168.100.212:27018
    MongoDB shell version: 1.6.0
    connecting to: 192.168.100.212:27018/test
    > use admin
    switched to db admin
    > db.runCommand({replSetGetStatus : 1});
    {
    "set" : "foo",
    "date" : "Fri Aug 20 2010 08:35:59 GMT+0000 (UTC)",
    "myState" : 1,
    "members" : [
    {
    "_id" : 0,
    "name" : "TEST40:27018",
    "health" : 1,
    "state" : 1,
    "self" : true
    },
    {
    "_id" : 1,
    "name" : "192.168.100.212:27019",
    "health" : 1,
    "state" : 2,
    "uptime" : 516,
    "lastHeartbeat" : "Fri Aug 20 2010 08:35:58 GMT+0000 (UTC)"
    },
    {
    "_id" : 2,
    "name" : "192.168.100.212:27020",
    "health" : 1,
    "state" : 2,
    "uptime" : 508,
    "lastHeartbeat" : "Fri Aug 20 2010 08:35:58 GMT+0000 (UTC)"
    }
    ],
    "ok" : 1
    }
    >


    4、failover试验
    登陆其它的slave,slave是不可以进行读写的。
    [root@TEST40 data]# mongo 192.168.100.212:27019
    MongoDB shell version: 1.6.0
    connecting to: 192.168.100.212:27019/test
    > use test
    switched to db test
    > db.people.find();
    error: { "$err" : "not master", "code" : 10107 }
    >
    [root@TEST40 data]# mongo 192.168.100.212:27020
    MongoDB shell version: 1.6.0
    connecting to: 192.168.100.212:27020/test
    > use test
    switched to db test
    > db.people.find();
    error: { "$err" : "not master", "code" : 10107 }
    >


    查看复制集合成员状态
    登陆192.168.100.212:27020
    [root@TEST40 data]# mongo 192.168.100.212:27020
    MongoDB shell version: 1.6.0
    connecting to: 192.168.100.212:27020/test
    > use admin
    switched to db admin
    > db.runCommand({replSetGetStatus : 1});
    {
    "set" : "foo",
    "date" : "Fri Aug 20 2010 08:36:39 GMT+0000 (UTC)",
    "myState" : 2,
    "members" : [
    {
    "_id" : 0,
    "name" : "192.168.100.212:27018",
    "health" : 1,
    "state" : 1,
    "uptime" : 546,
    "lastHeartbeat" : "Fri Aug 20 2010 08:36:38 GMT+0000 (UTC)"
    },
    {
    "_id" : 1,
    "name" : "192.168.100.212:27019",
    "health" : 1,
    "state" : 2,
    "uptime" : 546,
    "lastHeartbeat" : "Fri Aug 20 2010 08:36:38 GMT+0000 (UTC)"
    },
    {
    "_id" : 2,
    "name" : "TEST40:27020",
    "health" : 1,
    "state" : 2,
    "self" : true
    }
    ],
    "ok" : 1
    }
    将主DB关闭,再次查看发现192.168.100.212:27020DB角色转变为主。原先主库无法登陆,但是state仍然为1 health变为0
    > db.runCommand({replSetGetStatus : 1});
    {
    "set" : "foo",
    "date" : "Fri Aug 20 2010 08:41:16 GMT+0000 (UTC)",
    "myState" : 1,
    "members" : [
    {
    "_id" : 0,
    "name" : "192.168.100.212:27018",
    "health" : 0,
    "state" : 1,
    "uptime" : 0,
    "lastHeartbeat" : "Fri Aug 20 2010 08:41:12 GMT+0000 (UTC)",
    "errmsg" : "connect/transport error"
    },
    {
    "_id" : 1,
    "name" : "192.168.100.212:27019",
    "health" : 1,
    "state" : 2,
    "uptime" : 823,
    "lastHeartbeat" : "Fri Aug 20 2010 08:41:16 GMT+0000 (UTC)"
    },
    {
    "_id" : 2,
    "name" : "TEST40:27020",
    "health" : 1,
    "state" : 1,
    "self" : true
    }
    ],
    "ok" : 1
    }
    >

    展开全文
  • mongoDB 副本集适合写比较少,读较多的场景,写可以使用消息队列来进行控制,这样可以减少高并发写带来的压力。副本集的使用场景要根据自己的项目需求来选择,要是有着高并发的写需求,建议采用分片的方式搭建集群,...

    mongoDB 副本集适合写比较少,读较多的场景,写可以使用消息队列来进行控制,这样可以减少高并发写带来的压力。副本集的使用场景要根据自己的项目需求来选择,要是有着高并发的写需求,建议采用分片的方式搭建集群,在稳定性方面要比副本集要高。我这里的使用场景是将写入操作用队列控制,主要是查询多。

    副本集中的副本节点在主节点挂掉后通过心跳机制检测到后,就会在集群内发起主节点的选举机制,自动选举一位新的主服务器。

    主节点故障后会实现自动切换,节点数量一定要大于等于3,否则可能会出现选主错误。官方建议为奇数节点,我这里使用3个节点。

    在各个节点上分别安装mongoDB

    mkdir /data/mongo/replset

    #存放mongodb数据文件

    mkdir -p /data/mongo/replset/data

    #进入mongodb文件夹

    cd  /data/mongo

    下载到部署包

    wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.4.12.tar

    tar xzvf mongodb-linux-x86_64-2.4.12.tar

    接下来在各个机器上启动,命令如下:

    /data/mongo/mongodb-linux-x86_64-2.4.12/bin/mongod  --fork  --dbpath /data/mongo/replset/data  --logpath=/data/mongo/logs/logs.info  --replSet repset

    注意:是后台启动,要加上fork

    在三台机器上任意一台机器登陆mongodb

    /data/mongo/mongodb-linux-x86_64-2.4.12/bin/mongo

    use admin

    定义副本集配置变量

    config = { _id:"repset",

    members:[

    {_id:0,host:"x.x.x.8:27017"},

    {_id:1,host:"x.x.x.9:27017"},

    {_id:2,host:"x.x.x.10:27017"}

    ]}

    配置成功后入如图

    5247dd7b957ad427d071721468bc96cf.png

    初始化副本集

    rs.initiate(config);

    74522ee4be990d9cdd608ed5596cb853.png

    查看集群节点的状态

    rs.status();

    d149d6466e1e319623ed2984cca972eb.png

    测试副本集是否同步

    在主节点上登陆

    /data/mongo/mongodb-linux-x86_64-2.4.12/bin/mongo  127.0.0.1或者本机节点IP

    建立测试数据库

    use test;

    dd9e7d581379c8c6dbe1acd4ada93444.png

    db.testdb.insert({"demo":"demo"})

    再到其他副本机器上查看,数据已经同步。

    df7516635c6d130f8a83927fa5a2dd3b.png

    可以停掉主节点,然后看看自动选主的效果。

    《MongoDB 权威指南》(MongoDB: The Definitive Guide)英文文字版[PDF] http://www.linuxidc.com/Linux/2012-07/66735.htm

    MongoDB 的详细介绍:请点这里

    MongoDB 的下载地址:请点这里

    0b1331709591d260c1c78e86d0c51c18.png

    展开全文
  • MongoDB集群间环境迁移

    千次阅读 2017-08-21 10:25:59
    采用该文档进行MongoDB集群环境迁移,需确保 1. 两套MongoDB集群环境架构一致,且采用命令方式部署。本文档以如下架构集群MongoDB为例进行讲解MongoDB集群迁移部署。 MongoDB集群部署拓扑图   2. 两套MongoDB...

    迁移准备

    采用该文档进行MongoDB集群环境迁移,需确保

    1. 两套MongoDB集群环境架构一致,且采用命令方式部署。本文档以如下架构集群MongoDB为例进行讲解MongoDB集群迁移部署。

    MongoDB集群部署拓扑图

     

    2. 两套MongoDB软件版本一致

    迁移进行时

    2.1 上传、解压MongoDB安装包

    2.2 检验各MongoDB服务器的时间

    2.3 创建数据、日志文件

    进入MongoDB目录,执行创建数据、日志文件夹。

     

    服务器执行命令:

      #mkdir -p data

    #mkdir -p data/shard11

    #mkdir -p data/shard21

    #mkdir -p logs

     

    服务器执行命令:

      #mkdir -p data

    #mkdir -p data/shard12

    #mkdir -p data/shard23

    #mkdir -p logs

     

    服务器执行命令:

      #mkdir -p data

    #mkdir -p data/shard13

    #mkdir -p data/shard23

    #mkdir -p logs

     

    说明:shardmn,其中m代表分片编号,n代表备份编号。如上命令,共12两个分片,每个分片共2备份。如shard11,有备份shard12shard13

     

    2.4 启动数据节点

    进入MongoDBbin目录,每台服务器执行命令启动2个分片数据节点。

     

    服务器执行命令:

    #./mongodb -shardsvr -replSet shard1 -port 27017 -dbpath /app/mongodb-linux-x86_64-rhel62-3.0.4/data/shard11 -oplogSize 100 -logpath /app/mongodb-linux-x86_64-rhel62-3.0.4/logs/shard11.log  -logappend  -fork

    #./mongodb -shardsvr -replSet shard2 -port 27018 -dbpath /app/mongodb-linux-x86_64-rhel62-3.0.4/data/shard21 -oplogSize 100 -logpath /app/mongodb-linux-x86_64-rhel62-3.0.4/logs/shard21.log  -logappend  -fork

    说明:

    (1) shard1表示:分片编号,通用为shardnn为具体数字;

    (2) 27017表示:该进程使用的端口;

    (3) -dbpath后面的路径表示:分片数据文件存放的路径;

    (4) -logpath后面路径表示:分片日志文件存放路径

    (5) -logappend -fork表示:后台运行进程

     

     

    服务器执行命令:

    #./mongodb -shardsvr -replSet shard1 -port 27017 -dbpath /app/mongodb-linux-x86_64-rhel62-3.0.4/data/shard12 -oplogSize 100 -logpath /app/mongodb-linux-x86_64-rhel62-3.0.4/logs/shard12.log  -logappend  -fork

    #./mongodb -shardsvr -replSet shard2 -port 27018 -dbpath /app/mongodb-linux-x86_64-rhel62-3.0.4/data/shard22 -oplogSize 100 -logpath /app/mongodb-linux-x86_64-rhel62-3.0.4/logs/shard22.log  -logappend  -fork

     

     

    服务器执行命令:

    #./mongodb -shardsvr -replSet shard1 -port 27017 -dbpath /app/mongodb-linux-x86_64-rhel62-3.0.4/data/shard13 -oplogSize 100 -logpath /app/mongodb-linux-x86_64-rhel62-3.0.4/logs/shard13.log  -logappend  -fork

    #./mongodb -shardsvr -replSet shard2 -port 27018 -dbpath /app/mongodb-linux-x86_64-rhel62-3.0.4/data/shard23 -oplogSize 100 -logpath /app/mongodb-linux-x86_64-rhel62-3.0.4/logs/shard23.log  -logappend  -fork

     

    2.5 分配副本集Replica Set

    副本集将分片节点关联起来。

     

    只需在一台服务器上进行副本集分配命令执行。通常默认执行该命令的服务器的分配为master,其余服务器为备份。

    如在服务器1登录分片1控制台,命令 #./mongo -port 27017

    分配分片1副本集命令:

    >config = {_id: 'shard1', members: [

                              {_id: 0, host: '服务器1 IP:27017'},

                              {_id: 1, host: '服务器2 IP:27017'},

                              {_id: 2, host: '服务器3 IP:27017'}]

               }

    > rs.initiate(config);

    说明:rs.initiate(config);为初始化配置命令

     

    在服务器2登录分片2控制台,命令:#./mongo -port 27018

    进行分片2副本集命令:

    >config = {_id: 'shard2', members: [

                              {_id: 0, host: '服务器1 IP:27018'},

                              {_id: 1, host: '服务器2 IP:27018'},

                              {_id: 2, host: '服务器3 IP:27018'}]

               }

    > rs.initiate(config);

    2.6 启动配置服务

    分别在三台服务器上执行命令:

    #./mongod -configsvr -dbpath /app/mongodb-linux-x86_64-rhel62-3.0.4/config -port 20000 -logpath /app/mongodb-linux-x86_64-rhel62-3.0.4/data/config.log -logappend –fork

    说明:

    1) -dbpath后面跟着目录是配置文件存放路径

    2) -port后面跟着20000是进程使用的端口地址

    3) -logpath后面跟着目录是进程启动日志文件存放路径

    4) -logappend -fork表示:后台运行进程

     

    2.7 启动路由服务

    分别在三台服务器上执行命令:

    # ./mongos -configdb 192.168.2.33:20000,192.168.2.34:20000,192.168.2.35:20000 -port 30000 -chunkSize 5 -logpath / app /mongodb-linux-x86_64-rhel62-3.0.4/data/mongos.log -logappend –fork

     

    说明:

    1) -configdb 后面跟着三台配置服务器的IP及端口地址

    2) -port 后面跟着进程使用的端口地址

    3) -logpath 后面跟着路由进程对应日志存放地址

    4) -logappend -fork表示:后台运行进程

    2.8 加入分片

    1. 连接到其中一台服务器的mongs进程,并切换至admin数据库。

    命令:

    #./mongos -port 30000

    >use admin;

     

    2. 配置分片,本文档例子中仅有两个分片,所以执行命令:

    >db.runCommand( { addshard : "shard1/192.168.2.33:27017,192.168.2.34:27017,192.168.2.35:27017",name:"s1"} );

     

    >db.runCommand( { addshard : "shard2/192.168. 2.33:27018,192.168.2.34:27018,192.168.2.35:27018",name:"s2"} );

     

    说明:配置分片时,需更改分片相关服务器IP和端口地址

     

    3. 配置分片验证,命令:

    > db.runCommand( { listshards : 1 } );

     

    说明:如果列出了以上两个你加的shards,表示shards已经配置成功,如图所示。

     

    配置分配成功验证结果

     

     

    2.9 激活数据库

    1. 连接到其中一台服务器的mongs进程,并切换至admin数据库。

    命令:

    #./mongos -port 30000

    >use admin;

    2. 激活数据库分片,命令:

    >db.runCommand( { enablesharding : “DB_NAME” } );

     

    2.10 集合Collection分片

    1. 连接到其中一台服务器的mongs进程,并切换至admin数据库。

    命令:

    #./mongos -port 30000

    >use admin;

    2. 集合分片,命令:

    >db.runCommand( { shardcollection : "DB_NAME.COLLECTION_NAME",key : {id: 1} } );

     

    2.11 迁移数据

    将需要迁移的MongoDB –Data下的分片数据文件中的DB_NAME文件复制到对应服务器的对应相同目录下。

    如源服务器1shard11shard21文件夹中DB_NAME文件复制到目标服务器1shard11shard21文件中。

     

    2.12 添加索引

    1. 连接到其中一台服务器的mongs进程,并切换至DB_NAME数据库。

    命令:

    #./mongos -port 30000

    >use DB_NAME;

    2. 添加索引

     

    分片验证

    3.1 方法一:数据库状态验证

    1. 连接到其中一台服务器的mongs进程,并切换至DB_NAME数据库。

    命令:

    #./mongos -port 30000

    >use DB_NAME;

     

    2. 查看数据库状态,命令:

    >db.stats();

     

    说明:若数据库状态中包含全部分片,则说明数据迁移成功,如图所示。同时,既然是数据迁移,则dataSize应不为0

    3.2 方法二:集合状态验证

    1. 连接到其中一台服务器的mongs进程,并切换至DB_NAME数据库。

    命令:

    #./mongos -port 30000

    >use DB_NAME;

     

    2. 查看数据库中的集合状态,如查看EVENT集合状态命令:

    >db.EVENT.stats();

     

    说明:

    (1) 集合中shard状态为true

    (2) Count数量大于0

    (3) 有具体分片的数据信息

     

    展开全文
  • Mongodb集群搭建

    2021-09-14 15:57:41
    Mongodb集群搭建 Mongodb 下载 下载地址:https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.6.17.tgz 注:下载链接、无需访问,点开会自动下载 官网地址:...
  • mongodb集群搭建

    2019-12-11 09:25:36
    文章目录MongoDB 搭建集群部署认证集群 MongoDB 搭建集群 前提是不能有数据 在12的基础上 [root@mongodb ~]# mkdir /data/mongodb{3,4} [root@mongodb ~]# touch /data/logs/mongodb/mongodb{3,4}.log [root@mongodb...
  • docker搭建mongodb集群

    2019-11-18 11:01:03
    详细链接...docker pull mongo:4.0.0 为MongoDB集群创建独立的docker网桥 #创建容器间公用的网络 docker network create --subnet=10.1.1.0/24 mongodb0 #查看docker 下边的所有网络情况 docker netwo...
  • mongodb集群节点故障的切换方法

    千次阅读 2019-06-20 20:43:08
    官方文档https://docs.mongodb.com/v3.6/tutorial/configure-a-non-voting-replica-set-member/ 主节点全部失败了,涉及Conf...
  • MongoDB 集群搭建

    2020-07-11 23:40:15
    MongoDB 集群搭建 概念理解 从图中可以看到有四个组件:mongos、config server、shard、replica set。 mongos,数据库集群请求的入口,所有的请求都通过mongos进行协调,不需要在应用程序添加一个路由选择器,...
  • Ubuntu搭建MongoDB集群

    千次阅读 2017-12-18 22:26:51
    MongoDB集群旨在提高系统的稳定性,使用多个MongoDB存储节点,当主节点挂掉之后从节点可以立即补充进来保证系统可以正常稳定地运行。 在Kali Linux中是默认安装了MongoDB的,位于/etc/init.d/目录。 这里只在Ubuntu...
  • MongoDb集群

    2014-07-03 17:19:17
    /data/mongodbtest/mongodb-linux-x86_64-2.4.8/bin/mongod --dbpath /data/mongodbtest/replset/data --replSet repset 可以看到控制台上显示副本集还没有配置初始化信息。 [plain]   view ...
  • MongoDB集群帮助手册 一、Mongodb集群架构简介 这是一种可以水平扩展的模式,在数据量很大时特给力,实际大规模应用一般会采用这种架构去构建monodb系统。  要构建一个 MongoDB Sharding Cluster,需要三种...
  • MongoDB集群搭建

    2018-10-23 23:47:08
     * MongoDB安装包 : https://www.mongodb.com/download-center?jmp=nav#community  * MongoDB可视化工具 : https://robomongo.org/download 二,单点搭建  1,Windows单点搭建  a,点击安装文件,持续...
  • MongoDB集群——副本集

    2019-04-25 13:40:39
    MongoDB集群——副本集
  • mongodb集群配置

    2017-02-14 14:51:37
    主从设置只能起到备份的作用,因此mongo已经基本放弃此方案,建议使用副本集方案副本集方案副本集方案可以实现自动切换,可以实现读写分离等复杂方案,建议使用,下面是xxxx的配置192.168.1.10//启动mongodb ...
  • 主要介绍了详解Java 连接MongoDB集群的几种方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • mongodb集群带来的一致性问题 关键词 mongodb、集群、强一致性问题、Write Concern、事务 环境 mongoDB version: 4.0.18 mongoDB集群:一主两从(主写从读) golang version: 1.14.4 驱动库: gopkg.in/mgo.v2@v...
  • mongodb集群安装

    2019-09-13 18:55:49
    mongodb集群方式主要分为三种Replica Set / Sharding / Master-Slaver ,这里只说明最简单的集群搭建方式(生产环境),如果有多个节点可以此类推或者查看官方文档。 Replica Set 中文翻译叫做副本集。其实简单来...
  • 问题还原: 教育部平台admin查看通知公告列表无异常,切换为下级账号查看通知公告列表无异常,点击查看通知详情,无法加载,报 504 gateway time-out .超时 排查过程:登录教育部平台系统,首先登陆gateway查看接口无异常,...
  • MongoDB集群配置

    千次阅读 2019-06-30 13:21:05
    MongoDB 是一个基于【分布式文件存储】的数据库,它属于NoSQL数据库。由 C++ 语言编写。旨在为 WEB 应用提 供【可扩展】的【高性能】数据存储解决方案。 MongoDB是一个介于非系数据库和非关系数据库之间的产品,...
  • Centos 7.5安装MongoDB集群搭建实战 副本集群搭建 replicaSet mongodb cluster 一、环境准备 CentOS 7.5 3.10.0-862.el7.x86_64 mongodb 3.4.2 IP: 192.168.75.50 ​ 192.168.75.51 ​ 192.168.75.52 下载压缩包 ...
  • Windows Server 2012 R2搭建MongoDB集群 (1)MongoDB集群部署 (2)MongoDB集群数据迁移

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,210
精华内容 6,084
关键字:

mongodb集群切换