lyhabc 发表于 2015-12-20 14:03

mongodb分片和复制集搭建文档

搭建分片和复制集
http://www.cnblogs.com/MYSQLZOUQI/

1、建立相关目录和文件
#机器1
mkdir -p /data/replset0/data/rs0
mkdir -p /data/replset0/log
mkdir -p /data/replset0/config
touch /data/replset0/config/rs0.conf
touch/data/replset0/log/rs0.log

mkdir -p /data/replset1/data/rs1
mkdir -p /data/replset1/log
mkdir -p /data/replset1/config
touch /data/replset1/config/rs1.conf
touch/data/replset1/log/rs1.log


mkdir -p /data/replset2/data/rs2
mkdir -p /data/replset2/log
mkdir -p /data/replset2/config
touch /data/replset2/config/rs2.conf
touch/data/replset2/log/rs2.log

mkdir -p /data/db_config/data/config0
mkdir -p /data/db_config/log/
mkdir -p /data/db_config/config/
touch /data/db_config/log/config0.log
touch /data/db_config/config/cfgserver0.conf





#机器2
mkdir -p /data/replset0/data/rs0
mkdir -p /data/replset0/log
mkdir -p /data/replset0/config
touch /data/replset0/config/rs0.conf
touch/data/replset0/log/rs0.log

mkdir -p /data/replset1/data/rs1
mkdir -p /data/replset1/log
mkdir -p /data/replset1/config
touch /data/replset1/config/rs1.conf
touch/data/replset1/log/rs1.log

mkdir -p /data/replset2/data/rs2
mkdir -p /data/replset2/log
mkdir -p /data/replset2/config
touch /data/replset2/config/rs2.conf
touch/data/replset2/log/rs2.log

mkdir -p /data/db_config/data/config1
mkdir -p /data/db_config/log/
mkdir -p /data/db_config/config/
touch /data/db_config/log/config1.log
touch /data/db_config/config/cfgserver1.conf




#机器3
mkdir -p /data/replset0/data/rs0
mkdir -p /data/replset0/log
mkdir -p /data/replset0/config
touch /data/replset0/config/rs0.conf
touch/data/replset0/log/rs0.log

mkdir -p /data/replset1/data/rs1
mkdir -p /data/replset1/log
mkdir -p /data/replset1/config
touch /data/replset1/config/rs1.conf
touch/data/replset1/log/rs1.log

mkdir -p /data/replset2/data/rs2
mkdir -p /data/replset2/log
mkdir -p /data/replset2/config
touch /data/replset2/config/rs2.conf
touch/data/replset2/log/rs2.log


mkdir -p /data/db_config/data/config2
mkdir -p /data/db_config/log/
mkdir -p /data/db_config/config/
touch /data/db_config/log/config2.log
touch /data/db_config/config/cfgserver2.conf


2、配置复制集配置文件
#机器1
vi /data/replset0/config/rs0.conf
journal=true
port=4000
replSet=rsshard0
dbpath = /data/replset0/data/rs0
shardsvr = true
oplogSize = 100
pidfilepath = /usr/local/mongodb/mongodb0.pid
logpath = /data/replset0/log/rs0.log   
logappend = true
profile = 1
slowms = 5
fork = true


vi /data/replset1/config/rs1.conf
journal=true
port=4001
replSet=rsshard1
dbpath = /data/replset1/data/rs1
shardsvr = true
oplogSize = 100
pidfilepath =/usr/local/mongodb/mongodb1.pid
logpath = /data/replset1/log/rs1.log
logappend = true
profile = 1
slowms = 5
fork = true


vi/data/replset2/config/rs2.conf
journal=true
port=4002
replSet=rsshard2
dbpath = /data/replset2/data/rs2
shardsvr = true
oplogSize = 100
pidfilepath =/usr/local/mongodb/mongodb2.pid
logpath = /data/replset2/log/rs2.log   
logappend = true
profile = 1
slowms = 5
fork = true


#机器2
vi /data/replset0/config/rs0.conf
journal=true
port=4000
replSet=rsshard0
dbpath = /data/replset0/data/rs0
shardsvr = true
oplogSize = 100
pidfilepath = /usr/local/mongodb/mongodb0.pid
logpath = /data/replset0/log/rs0.log   
logappend = true
profile = 1
slowms = 5
fork = true


vi /data/replset1/config/rs1.conf
journal=true
port=4001
replSet=rsshard1
dbpath = /data/replset1/data/rs1
shardsvr = true
oplogSize = 100
pidfilepath =/usr/local/mongodb/mongodb1.pid
logpath = /data/replset1/log/rs1.log
logappend = true
profile = 1
slowms = 5
fork = true


vi/data/replset2/config/rs2.conf
journal=true
port=4002
replSet=rsshard2
dbpath = /data/replset2/data/rs2
shardsvr = true
oplogSize = 100
pidfilepath =/usr/local/mongodb/mongodb2.pid
logpath = /data/replset2/log/rs2.log   
logappend = true
profile = 1
slowms = 5
fork = true



#机器3
vi /data/replset0/config/rs0.conf
journal=true
port=4000
replSet=rsshard0
dbpath = /data/replset0/data/rs0
shardsvr = true
oplogSize = 100
pidfilepath = /usr/local/mongodb/mongodb0.pid
logpath = /data/replset0/log/rs0.log   
logappend = true
profile = 1
slowms = 5
fork = true


vi /data/replset1/config/rs1.conf
journal=true
port=4001
replSet=rsshard1
dbpath = /data/replset1/data/rs1
shardsvr = true
oplogSize = 100
pidfilepath =/usr/local/mongodb/mongodb1.pid
logpath = /data/replset1/log/rs1.log
logappend = true
profile = 1
slowms = 5
fork = true


vi/data/replset2/config/rs2.conf
journal=true
port=4002
replSet=rsshard2
dbpath = /data/replset2/data/rs2
shardsvr = true
oplogSize = 100
pidfilepath =/usr/local/mongodb/mongodb2.pid
logpath = /data/replset2/log/rs2.log   
logappend = true
profile = 1
slowms = 5
fork = true



3、启动复制集
#三台机器都启动mongodb
/usr/local/mongodb/bin/mongod --config/data/replset0/config/rs0.conf
/usr/local/mongodb/bin/mongod --config/data/replset1/config/rs1.conf
/usr/local/mongodb/bin/mongod --config/data/replset2/config/rs2.conf

/usr/local/mongodb/bin/mongod --config/data/replset0/config/rs0.conf
/usr/local/mongodb/bin/mongod --config/data/replset1/config/rs1.conf
/usr/local/mongodb/bin/mongod --config/data/replset2/config/rs2.conf

/usr/local/mongodb/bin/mongod --config/data/replset0/config/rs0.conf
/usr/local/mongodb/bin/mongod --config/data/replset1/config/rs1.conf
/usr/local/mongodb/bin/mongod --config/data/replset2/config/rs2.conf







4、设置复制集
#机器1
mongo --port 4000   
use admin
config = { _id:"rsshard0", members:[
{_id:0,host:"192.168.1.155:4000"},
{_id:1,host:"192.168.14.221:4000"},
{_id:2,host:"192.168.14.198:4000"}]
}
rs.initiate(config);
rs.conf()


#机器2
mongo --port 4001   
use admin
config = { _id:"rsshard1", members:[
{_id:0,host:"192.168.1.155:4001"},
{_id:1,host:"192.168.14.221:4001"},
{_id:2,host:"192.168.14.198:4001"}]
}
rs.initiate(config);
rs.conf()


#机器3
mongo --port 4002
use admin
config = { _id:"rsshard2", members:[
{_id:0,host:"192.168.1.155:4002"},
{_id:1,host:"192.168.14.221:4002"},
{_id:2,host:"192.168.14.198:4002"}]
}
rs.initiate(config);
rs.conf()


#机器1
cfg = rs.conf()
cfg.members.priority = 2
cfg.members.priority = 1
cfg.members.priority = 1
rs.reconfig(cfg)



#机器2
cfg = rs.conf()
cfg.members.priority = 1
cfg.members.priority = 2
cfg.members.priority = 1
rs.reconfig(cfg)

#机器3
cfg = rs.conf()
cfg.members.priority = 1
cfg.members.priority = 1
cfg.members.priority = 2
rs.reconfig(cfg)




5、配置config服务器
#机器1
vi /data/db_config/config/cfgserver0.conf
journal=true
pidfilepath = /data/db_config/config/mongodb.pid
dbpath = /data/db_config/data/config0
directoryperdb = true
configsvr = true
port = 5000
logpath =/data/db_config/log/config0.log
logappend = true
fork = true


#机器2
vi /data/db_config/config/cfgserver1.conf
journal=true
pidfilepath = /data/db_config/config/mongodb.pid
dbpath = /data/db_config/data/config1
directoryperdb = true
configsvr = true
port = 5000
logpath =/data/db_config/log/config1.log
logappend = true
fork = true



#机器3
vi /data/db_config/config/cfgserver2.conf
journal=true
pidfilepath = /data/db_config/config/mongodb.pid
dbpath = /data/db_config/data/config2
directoryperdb = true
configsvr = true
port = 5000
logpath =/data/db_config/log/config2.log
logappend = true
fork = true


#机器1
/usr/local/mongodb/bin/mongod --config/data/db_config/config/cfgserver0.conf
#机器2
/usr/local/mongodb/bin/mongod --config/data/db_config/config/cfgserver1.conf
#机器3
/usr/local/mongodb/bin/mongod --config/data/db_config/config/cfgserver2.conf


6、配置mongos路由服务器 三台机器都要执行
mkdir -p /data/mongos/log/
touch /data/mongos/log/mongos.log
touch /data/mongos/mongos.conf


vi /data/mongos/mongos.conf
#configdb = 192.168.1.155:5000,192.168.14.221:5000,192.168.14.198:5000   
configdb = 192.168.1.155:5000
port = 6000
chunkSize = 1
logpath =/data/mongos/log/mongos.log
logappend = true
fork = true




mongos--config /data/mongos/mongos.conf


7、添加分片
mongo 192.168.1.155:6000//连接到第一台


#添加分片,不能添加arbiter节点
sh.addShard("rsshard0/192.168.1.155:4000,192.168.14.221:4000,192.168.14.198:4000")
sh.addShard("rsshard1/192.168.1.155:4001,192.168.14.221:4001,192.168.14.198:4001")
sh.addShard("rsshard2/192.168.1.155:4002,192.168.14.221:4002,192.168.14.198:4002")

#查看状况
sh.status();
--- Sharding Status ---
sharding version: {
    "_id" : 1,
    "minCompatibleVersion" : 5,
    "currentVersion" : 6,
    "clusterId" : ObjectId("565eac6d8e75f6a7d3e6e65e")
}
shards:
    {"_id" : "rsshard0","host" : "rsshard0/192.168.1.155:4000,192.168.14.198:4000,192.168.14.221:4000" }
    {"_id" : "rsshard1","host" : "rsshard1/192.168.1.155:4001,192.168.14.198:4001,192.168.14.221:4001" }
    {"_id" : "rsshard2","host" : "rsshard2/192.168.1.155:4002,192.168.14.198:4002,192.168.14.221:4002" }
balancer:
    Currently enabled:yes
    Currently running:no
    Failed balancer rounds in last 5 attempts:0
    Migration Results for the last 24 hours:
      No recent migrations
databases:
    {"_id" : "admin","partitioned" : false,"primary" : "config" }


   
   
   
#声明库和表要分片
mongos> use admin
mongos> db.runCommand({enablesharding:"testdb"})
mongos> db.runCommand( { shardcollection : "testdb.books", key : { id : 1 } } )



#测试
use testdb
mongos> for (var i = 1; i <= 20000; i++){db.books.save({id:i,name:"ttbook",sex:"male",age:27,value:"test"})}
   
   
#查看分片统计
db.books.stats()




-------------------------------------------------------------------------------------------------------------------------------------
db.books.stats()
{
    "sharded" : true,
    "paddingFactorNote" : "paddingFactor is unused and unmaintained in 3.0. It remains hard coded to 1.0 for compatibility only.",
    "userFlags" : 1,
    "capped" : false,
    "ns" : "testdb.books",
    "count" : 20000,
    "numExtents" : 11,
    "size" : 2240000,
    "storageSize" : 5595136,
    "totalIndexSize" : 1267280,
    "indexSizes" : {
      "_id_" : 678608,
      "id_1" : 588672
    },
    "avgObjSize" : 112,
    "nindexes" : 2,
    "nchunks" : 5,
    "shards" : {
      "rsshard0" : {
            "ns" : "testdb.books",
            "count" : 9443,
            "size" : 1057616,
            "avgObjSize" : 112,
            "numExtents" : 5,
            "storageSize" : 2793472,
            "lastExtentSize" : 2097152,
            "paddingFactor" : 1,
            "paddingFactorNote" : "paddingFactor is unused and unmaintained in 3.0. It remains hard coded to 1.0 for compatibility only.",
            "userFlags" : 1,
            "capped" : false,
            "nindexes" : 2,
            "totalIndexSize" : 596848,
            "indexSizes" : {
                "_id_" : 318864,
                "id_1" : 277984
            },
            "ok" : 1,
            "$gleStats" : {
                "lastOpTime" : Timestamp(0, 0),
                "electionId" : ObjectId("565975792a5b76c2553522a5")
            }
      },
      "rsshard1" : {
            "ns" : "testdb.books",
            "count" : 10549,
            "size" : 1181488,
            "avgObjSize" : 112,
            "numExtents" : 5,
            "storageSize" : 2793472,
            "lastExtentSize" : 2097152,
            "paddingFactor" : 1,
            "paddingFactorNote" : "paddingFactor is unused and unmaintained in 3.0. It remains hard coded to 1.0 for compatibility only.",
            "userFlags" : 1,
            "capped" : false,
            "nindexes" : 2,
            "totalIndexSize" : 654080,
            "indexSizes" : {
                "_id_" : 351568,
                "id_1" : 302512
            },
            "ok" : 1,
            "$gleStats" : {
                "lastOpTime" : Timestamp(0, 0),
                "electionId" : ObjectId("565eac15357442cd3ead5103")
            }
      },
      "rsshard2" : {
            "ns" : "testdb.books",
            "count" : 8,
            "size" : 896,
            "avgObjSize" : 112,
            "numExtents" : 1,
            "storageSize" : 8192,
            "lastExtentSize" : 8192,
            "paddingFactor" : 1,
            "paddingFactorNote" : "paddingFactor is unused and unmaintained in 3.0. It remains hard coded to 1.0 for compatibility only.",
            "userFlags" : 1,
            "capped" : false,
            "nindexes" : 2,
            "totalIndexSize" : 16352,
            "indexSizes" : {
                "_id_" : 8176,
                "id_1" : 8176
            },
            "ok" : 1,
            "$gleStats" : {
                "lastOpTime" : Timestamp(0, 0),
                "electionId" : ObjectId("565eab094c148b20ecf4b442")
            }
      }
    },
    "ok" : 1
   
   
    sh.status()
--- Sharding Status ---
sharding version: {
    "_id" : 1,
    "minCompatibleVersion" : 5,
    "currentVersion" : 6,
    "clusterId" : ObjectId("565eac6d8e75f6a7d3e6e65e")
}
shards:
    {"_id" : "rsshard0","host" : "rsshard0/192.168.1.155:4000,192.168.14.198:4000,192.168.14.221:4000" }
    {"_id" : "rsshard1","host" : "rsshard1/192.168.1.155:4001,192.168.14.198:4001,192.168.14.221:4001" }
    {"_id" : "rsshard2","host" : "rsshard2/192.168.1.155:4002,192.168.14.198:4002,192.168.14.221:4002" }
balancer:
    Currently enabled:yes
    Currently running:no
    Failed balancer rounds in last 5 attempts:0
    Migration Results for the last 24 hours:
      No recent migrations
databases:
    {"_id" : "admin","partitioned" : false,"primary" : "config" }
    {"_id" : "test","partitioned" : false,"primary" : "rsshard0" }
    {"_id" : "testdb","partitioned" : true,"primary" : "rsshard0" }
      testdb.books
            shard key: { "id" : 1 }
            chunks:
                rsshard0    2
                rsshard1    2
                rsshard2    1
            { "id" : { "$minKey" : 1 } } -->> { "id" : 2 } on : rsshard1 Timestamp(2, 0)
            { "id" : 2 } -->> { "id" : 10 } on : rsshard2 Timestamp(3, 0)
            { "id" : 10 } -->> { "id" : 4691 } on : rsshard0 Timestamp(4, 1)
            { "id" : 4691 } -->> { "id" : 9453 } on : rsshard0 Timestamp(3, 3)
            { "id" : 9453 } -->> { "id" : { "$maxKey" : 1 } } on : rsshard1 Timestamp(4, 0)
    {"_id" : "aaaa","partitioned" : false,"primary" : "rsshard0" }


页: [1]
查看完整版本: mongodb分片和复制集搭建文档