MongoDB分片

`环境准备

ip 服务 192.168.5.111 shard1-master shard2-slave shard3-仲裁 192.168.5.112 shard2-master shard3-slave shard1-仲裁 192.168.5.113 shard3-master shard1-slave shard2-仲裁 192.168.5.151 mongos 192.168.5.152 mongos 192.168.5.111 config-server 192.168.5.112 config-server 192.168.5.113 config-server

服务 端口 shard1 29001 shard2 29002 shard3 29003

mongos 27017 config 28000

1.创建目录 把mongodb解压到/data1/bin

配置环境变量export PATH=$PATH:/opt/mongodb/bin

2.创建目录 shard-server mkdir -p /opt/mongodb/{shard1,shard2,shard3}/{data,log}

config-server mkdir -p /opt/mongodb/configsvr/{data,log}

mongos-server mkdir -p /opt/mongodb/mongos/{data,log}

  1. 启动3台config-server 必须是奇数台

/opt/mongodb/bin/mongod --configsvr --dbpath /opt/mongodb/configsvr/data --fork --logpath /opt/mongodb/configsvr/log/configsvr.log --logappend --port 28000

  1. 启动2台mongos-server

/opt/mongodb/bin/mongos --configdb 192.168.5.111:28000,192.168.5.112:28000,192.168.5.113:28000 --port 27017 --fork --logpath /opt/mongodb/mongos/log/mongos.log

禁用NUMA 第一次先正常启动,第二次加numactl启动 numactl --interleave=all mongod [ options ]

  1. 配置各个分片的副本集

在每个mongod server 分别设置分片1服务器及副本集shard1
参数 --chunkSize 100 默认是64MB,取值范围是1 MB 到 1024 MB

numactl --interleave=all /opt/mongodb/bin/mongod --shardsvr --replSet shard1 --port 29001 --dbpath /opt/mongodb/shard1/data --logpath /opt/mongodb/shard1/log/shard1.log --fork --journal --oplogSize 5000 --storageEngine wiredTiger --directoryperdb --wiredTigerDirectoryForIndexes --wiredTigerCacheSizeGB 2 --wiredTigerCollectionBlockCompressor zlib --wiredTigerJournalCompressor zlib

numactl --interleave=all /opt/mongodb/bin/mongod --shardsvr --replSet shard2 --port 29002 --dbpath /opt/mongodb/shard2/data --logpath /opt/mongodb/shard2/log/shard2.log --fork --journal --oplogSize 5000 --storageEngine wiredTiger --directoryperdb --wiredTigerDirectoryForIndexes --wiredTigerCacheSizeGB 2 --wiredTigerCollectionBlockCompressor zlib --wiredTigerJournalCompressor zlib

numactl --interleave=all /opt/mongodb/bin/mongod --shardsvr --replSet shard3 --port 29003 --dbpath /opt/mongodb/shard3/data --logpath /opt/mongodb/shard3/log/shard3.log --fork --journal --oplogSize 5000 --storageEngine wiredTiger --directoryperdb --wiredTigerDirectoryForIndexes --wiredTigerCacheSizeGB 2 --wiredTigerCollectionBlockCompressor zlib --wiredTigerJournalCompressor zlib

================================================================================================= ip 服务 192.168.5.111 shard1-master shard2-slave shard3-仲裁 192.168.5.112 shard2-master shard3-slave shard1-仲裁 192.168.5.113 shard3-master shard1-slave shard2-仲裁

ID靠前的为主

#设置第一个分片副本集 mongo --port 29001

#使用admin数据库 use admin

#定义副本集配置 config = { _id:"shard1", members:[ {_id:0,host:"192.168.5.111:29001"}, {_id:1,host:"192.168.5.113:29001"}, {_id:2,host:"192.168.5.112:29001",arbiterOnly:true} ] }

rs.initiate(config) 注意:最后不要加分号

#设置第二个分片副本集 mongo --port 29002

#使用admin数据库 use admin

#定义副本集配置 config = { _id:"shard2", members:[ {_id:0,host:"192.168.5.112:29002"}, {_id:1,host:"192.168.5.111:29002"}, {_id:2,host:"192.168.5.113:29002",arbiterOnly:true} ] }

rs.initiate(config)

=================================================================================================

#设置第三个分片副本集 mongo --port 29003

#使用admin数据库 use admin

#定义副本集配置 config = { _id:"shard3", members:[ {_id:0,host:"192.168.5.113:29003"}, {_id:1,host:"192.168.5.112:29003"}, {_id:2,host:"192.168.5.111:29003",arbiterOnly:true} ] }

rs.initiate(config)

=================================================================================================

  1. 使分片生效 连接到mongos

mongo 192.168.5.151:27017 use admin

串联mongos与分配副本集

db.runCommand( { addshard : "shard1/192.168.5.111:29001,192.168.5.112:29001,192.168.5.113:29001"});

db.runCommand( { addshard : "shard2/192.168.5.111:29002,192.168.5.112:29002,192.168.5.113:29002"});

db.runCommand( { addshard : "shard3/192.168.5.111:29003,192.168.5.112:29003,192.168.5.113:29003"});

#查看分片服务器的配置 db.runCommand( { listshards : 1 } )

#查看集群信息 sh.status() 或 db.printShardingStatus()

参数说明: 第一:shards 分成三片,shard1 shard2 shard3 第二:databases: partitioned表示是否分区 第三:chunks: 分成了一段。都在shard0000

  1. 创建t2库users集合分片 use t2

创建索引 db.users.ensureIndex({"username":1})

标识数据库t2可以启用分片,但实际上并没有进行分片 sh.enableSharding("t2")

sh.shardCollection("t2.users",{"username":1})

for (var i=0; i<100; i++) { db.users.insert({"username" : "user"+i, "created_at" : new Date()}); } 单行方式 for (var i=0; i<10000; i++) { db.users.insert({"username" : "user"+i, "created_at" : new Date()}); }

======================================================================== 标识数据库testdb可以启用分片,但实际上并没有进行分片 sh.enableSharding("testdb")

查看分片信息 sh.status() sh.status({verbose:true}) 查看分片详细信息

#再对集合进行分片,name字段是片键 sh.shardCollection("testdb.table1",{"name":1})

#插入数据 use testdb for (var i = 1; i <= 10; i++) { db.table1.save({id:i,"test1":"testval1"}) }

#查看集合table1分片分布情况 db.table1.stats()

#查看数据库分片状态 需要先选择一个数据库 use db1 db.stats()

db.runCommand( { shardcollection : "testdb.table1",key : {id: 1} } )

书上的for for (var i=0; i<100000; i++) { db.user.insert({"username" : "user"+i, "created_at" : new Date()}); }

db.user.count()

========================================================================

安装失败清理数据

mongod-server

rm -rf /opt/mongodb/shard1/data/* rm -rf /opt/mongodb/shard2/data/* rm -rf /opt/mongodb/shard3/data/* rm -rf /opt/mongodb/shard1/log/* rm -rf /opt/mongodb/shard2/log/* rm -rf /opt/mongodb/shard3/log/*

config-server rm -rf /opt/mongodb/configsvr/data/* rm -rf /opt/mongodb/configsvr/log/*

mongos-server rm -rf /opt/mongodb/mongos/data/* rm -rf /opt/mongodb/mongos/log/* `

转载于:https://my.oschina.net/direnjie/blog/751174

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值