免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1404 | 回复: 0
打印 上一主题 下一主题

[MongoDB] mongodb分片和复制集搭建文档 [复制链接]

求职 : Linux运维
论坛徽章:
203
拜羊年徽章
日期:2015-03-03 16:15:432015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:57:092015小元宵徽章
日期:2015-03-06 15:58:182015年亚洲杯之约旦
日期:2015-04-05 20:08:292015年亚洲杯之澳大利亚
日期:2015-04-09 09:25:552015年亚洲杯之约旦
日期:2015-04-10 17:34:102015年亚洲杯之巴勒斯坦
日期:2015-04-10 17:35:342015年亚洲杯之日本
日期:2015-04-16 16:28:552015年亚洲杯纪念徽章
日期:2015-04-27 23:29:17操作系统版块每日发帖之星
日期:2015-06-06 22:20:00操作系统版块每日发帖之星
日期:2015-06-09 22:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-12-20 14:03 |只看该作者 |倒序浏览
搭建分片和复制集
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[0].priority = 2
cfg.members[1].priority = 1
cfg.members[2].priority = 1
rs.reconfig(cfg)



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

#机器3
cfg = rs.conf()
cfg.members[0].priority = 1
cfg.members[1].priority = 1
cfg.members[2].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" }


您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP