首页新闻找找看学习计划

Windows 环境MongoDB3.4 分片失败

0
[已解决问题] 解决于 2018-06-01 10:17

近期网站访问量比较大,阿里云服务器的CPU被mongo.exe用完了,准备使用Mongodb分片技术,把数据库分在两个阿里云服务器上,网上搜了一些教程,配置过程比较顺利,但是最后写入的时候,只写入了其中一个分片,没用到另一个分片,请大家帮忙看一下,配置信息如下:

 

启用两个副本集:

mongod --shardsvr --replSet shard-a --dbpath "C:\mongo\data\rs-a-1" --port 3000 --logpath "C:\mongo\log\rs-a-1.log" --nojournal --serviceName "mongodb_rs_1" --serviceDisplayName "mongodb_rs_1" --install

 

 

mongod --shardsvr --replSet shard-a --dbpath "C:\mongo\data\rs-a-2" --port 3001 --logpath "C:\mongo\log\rs-a-2.log" --nojournal  --serviceName "mongodb_rs_2" --serviceDisplayName "mongodb_rs_2" --install

 

mongod --shardsvr --replSet shard-a --dbpath "C:\mongo\data\rs-a-3" --port 3002 --logpath "C:\mongo\log\rs-a-3.log" --nojournal  --serviceName "mongodb_rs_3" --serviceDisplayName "mongodb_rs_3" --install

 

连接3000,初始化副本集配置,命令如下:

mongo 127.0.0.1:3000

config = { _id:"shard-a", members:[

                     {_id:0,host:"localhost:3000"},

                     {_id:1,host:"localhost:3001"},

                     {_id:2,host:"localhost:3002",arbiterOnly:true}

                ]

         }

 

rs.initiate(config);
mongod --shardsvr --replSet shard-b --dbpath "C:\mongo\data\rs-b-2" --port 30101 --logpath "C:\mongo\log\rs-b-2.log" --nojournal  --serviceName "mongodb_rs_b2" --serviceDisplayName "mongodb_rs_b2" --install

 

mongod --shardsvr --replSet shard-b --dbpath "C:\mongo\data\rs-b-3" --port 30102 --logpath "C:\mongo\log\rs-b-3.log" --nojournal  --serviceName "mongodb_rs_b3" --serviceDisplayName "mongodb_rs_b3" --install

 

连接30100,初始化副本集配置,命令如下:

mongo 127.0.0.1:30100

 

config = { _id:"shard-b", members:[

                     {_id:0,host:"localhost:30100"},

                     {_id:1,host:"localhost:30101"},

                     {_id:2,host:"localhost:30102",arbiterOnly:true}

                ]

         }

 

rs.initiate(config);

启用配置服务器:

mongod --configsvr --replSet config-a --dbpath "C:\mongo\data\config-1" --port 27019 --logpath "C:\mongo\log\config-1.log"  --serviceName "mongodb_config_1" --serviceDisplayName "mongodb_config_1" --install

 

 

mongod --configsvr  --replSet config-a --dbpath "C:\mongo\data\config-2" --port 27020 --logpath "C:\mongo\log\config-2.log"  --serviceName "mongodb_config_2" --serviceDisplayName "mongodb_config_2" --install

 

mongod --configsvr  --replSet config-a --dbpath "C:\mongo\data\config-3" --port 27021 --logpath "C:\mongo\log\config-3.log"   --serviceName "mongodb_config_3" --serviceDisplayName "mongodb_config_3" --install

 

 

连接27019,初始化副本集配置,命令如下:

mongo 127.0.0.1: 27019

 

rs.initiate(

  {

    _id: "config-a",

    configsvr: true,

    members: [

      { _id : 0, host : "127.0.0.1:27019" },

      { _id : 1, host : "127.0.0.1:27020" },

      { _id : 2, host : "127.0.0.1:27021" }

    ]

  }

)

开启Mongos

mongos --configdb config-a/127.0.0.1:27019,localhost:27020,localhost:27021 --logpath "C:\mongo\log\mongos.log" --port 40005  --serviceName "mongos-a" --serviceDisplayName "mongos-a" --install

配置Sharding

连接40005,命令如下:

mongo 127.0.0.1: 40005

 

sh.addShard( "shard-a/localhost:3000")

 

sh.addShard( "shard-b/localhost:30100")

 

#查看分片服务器的配置

db.runCommand( { listshards : 1 } );

#内容输出

{

        "shards" : [

                {

                        "_id" : "shard-a",

                        "host" : "shard-a/localhost:3000,localhost:3001",

                        "state" : 1

                },

                {

                        "_id" : "shard-b",

                        "host" : "shard-b/localhost:30100,localhost:30101",

                        "state" : 1

                }

        ],

        "ok" : 1

}

指定数据库分片

#指定testliu分片生效

sh.enableSharding("testliu")

 

#指定数据库里需要分片的集合和片键

sh.shardCollection("testliu.accounts", {"name":1} )

我们设置testliu的accounts表需要分片,根据 id 自动分片到 shard-a ,shard-b 上面去。要这样设置是因为不是所有mongodb 的数据库和表 都需要分片!

#插入测试数据
use testliu

for (var i = 1; i <= 100000; i++)db.accounts.insert({name:i,"test1":"testval1"});

查看分片结果:只分到了shard-a

命令查看:db.accounts.stats();

 

chesterdotchen的主页 chesterdotchen | 小虾三级 | 园豆:542
提问于:2018-05-31 11:38

大家帮忙看一下~~

伊辛伊忆 1年前

有没有人帮忙看一下???

伊辛伊忆 1年前
< >
分享
最佳答案
0

这个配置发现是没有问题的,造成这个问题的原因是因为数据量比较小,测了一下1000000数据,这个配置是起作用的。

chesterdotchen | 小虾三级 |园豆:542 | 2018-06-01 10:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册