数据库

 首页 > 数据库 > MongoDB > MongoDB数据库如何配置分片sharding

MongoDB数据库如何配置分片sharding

分享到:
【字体:
导读:
         摘要:MongoDB的sharding功能mongodb的端口是否启动,默认是28017,在启动服务器时,可以通过--port来指定ShardServer:mongod实例,用于存储实际的数据块,实际生产环境中一个shardserver角色可由几台机器组个一个relicaset承担,防止主机单点故障ConfigSer...

MongoDB数据库如何配置分片sharding

MongoDB的sharding功能

mongodb的端口是否启动,默认是28017,在启动服务器时,可以通过--port来指定

Shard Server: mongod实例,用于存储实际的数据块,实际生产环境中一个shard server角色可由几台机器组个一个relica set承担,防止主机单点故障

Config Server: mongod实例,存储了整个Cluster Metadata,其中包括chunk信息。

Route Server: mongos实例,前端路由,客户端由此接入,且让整个集群看上去像单一数据库,前端应用可以透明使用。

如里shard是单台服务器,用>db.runCommand( { addshard :“[:]”} )这样的命令加入,如果shard是replica sets,用replicaSetName/[:port][,serverhostname2[:port],…]这样的命令

常用命令:

        Show  dbs                     显示数据库名

        show  collections             显示当前数据库中的集合集

        show  users                   显示当前数据库的用户

        show  profile                显示最后系统用时大于1ms的系统概要

        use                 切换到数据库

测试环境:

server1 server2 server3分别运行下面两行命令来启动mongodb

./mongod --fork --shardsvr --port 10001 --dbpath=/var/data/shard1/ --logpath=/var/data/shard1/log.log --replSet shard1 --rest

./mongod --fork --shardsvr --port 10002 --dbpath /var/data/shard2/ --logpath /var/data/shard2/log.log --replSet shard2 --rest

选三台中任何一台机器运行如下命令,设置主从:

./mongo  --port=10001

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

                          {_id: 0, host: '10.10.10.219:10001'},

                          {_id: 1, host: '10.10.10.214:10001'},

                          {_id: 2, host: '10.10.10.213:10001', arbiterOnly: true}

]}

> rs.initiate(config);初始化

./mongod Cport=10002

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

                          {_id: 0, host: '10.10.10.214:10002'},

                          {_id: 1, host: '10.10.10.219:10002'},

                          {_id: 2, host: '10.10.10.213:10002', arbiterOnly: true}

]}

rs.initiate(config);初始化

rs.status()   查看状态。

配置config

三台机器上都配或者只配一台都可以:config需要单独的数据存储位置和日志

./mongod --fork --configsvr --port 20000 --dbpath /var/data/config/ --logpath /var/data/config/log.log --rest

配置用于客户前端接入的路由:

注:第一次运行mongos指定多个config可能会有问题,第一次运行mongos连接一个config。kill掉后在运行多个就没有问题了

./mongos Cconfigdb 10.10.10.219:20000,10.10.10.214:20000,10.10.10.213:20000 Cport 30000 CchunkSize 50 Clogpath /home/mongodb/data/mongos.log Clogappend Cfork

创建分片:

在mongos服务器上创建分片:

./mongo --port=40000  (mongos端口)

usr admin  必须切换到admin数据库下面,默认登录进去后是test数据库

db.runCommand( { addshard : 'shard1/10.10.10.219:10001,10.10.10.214:10001,10.10.10.213:10001',name:"s2",maxsize:20480} );

db.runCommand( { addshard : 'shard2/10.10.10.219:10002,10.10.10.214:10002,10.10.10.213:10002',name:"s2",maxsize:20480} );

db.runCommand( { enablesharding: "" } );配置数据库允许分片

db.runCommand({ shardcollection:'test.data', key:{_id:1} })  配置collection的shard key

db.printSharingStatus();  查看整个集群的分片情况

db.runCommand({listshards:1});查看节点列表,如果能看到其他节点则配置成功

查看mongodb中replica set的状态

查看Replica Set的状态,执行rs.status()即可

>  rs.status()

        "set" : "shard1",

        "date" : "Wed Nov 17 2010 19:45:13 GMT+0800 (CST)",

        "myState" : 1,

        "members" : [

                {

                        "_id" : 0,

                        "name" : "localhost.localdomain:10001",

                        "health" : 1,

                        "state" : 1,

                        "self" : true

                },

                {

                        "_id" : 1,

                        "name" : "10.10.10.214:10001",

                        "health" : 0,

                        "state" : 2,

                        "uptime" : 0,

                        "lastHeartbeat" : "Tue Nov 16 2010 02:36:41 GMT+0800 (CST)",

                        "errmsg" : "connect/transport error"

                },

                {

                        "_id" : 2,

                        "name" : "10.10.10.213:10001",

                        "health" : 1,

                        "state" : 2,

                        "uptime" : 150190,

                        "lastHeartbeat" : "Wed Nov 17 2010 19:45:12 GMT+0800 (CST)"

                }

        ],

        "ok" : 1

其中,health为1表明服务器正常,0表明服务器down了

state为1表明是Primary,2表明是Secondary,3是Recovering,7是Arbiter,8是Down

如果想在Secondary上find数据,需要先执行以下命令:

db.getMongo().setSlaveOk();
db.suv.find().count()

修改mongodb中replica set的配置

#增加新的成员
rs.add("192.168.95.210:10000");
#增加新的选举成员
rs.addArb("192.168.95.216:10001");

MongoDB数据库如何配置分片sharding
分享到:
MongoDB数据库服务启动时指定dbpath路径
MongoDB数据库服务启动时指定dbpath路径 Update:2013-7-12 mongodb-win32-x86_64-2.4.5 已经修正了这个错误,不需要在命令行最后再添加一个反斜杠了。 ======================================================= 版本:mongodb-win32-x86_64-2.2.1  今天在Win7下安装MongoDB的时候,发现把它作为一个服务安装...
MongoDB数据库的分片和主从配置
MongoDB数据库的分片和主从配置 有三台机器:A、B、C(三个主从复制,两个分片) 1、分别在 A、B、C 三台机器上启动 两个分片、主从服务,命令如下:  bin/mongod --shardsvr --replSet shard1 --port 27017 --dbpath /data/shard1_1 --logpath /data/shard1_1/shard1_1.log --logappend --fork 注意修改...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……