mongo分片的配置

# 连接
mongo 172.16.206.34:27000

use admin

# config变量
config = {_id:"shard1",members:[{_id:0,host:"172.16.206.34:27000"},{_id:1,host:"172.16.206.36:27000"},{_id:2,host:"172.16.206.47:27000",arbiterOnly:true}]} 

# 初始化副本集
rs.initiate(config)

# 查看分区状态
rs.status()
------------------------------------------------------------------


# 连接
mongo 172.16.206.34:25000

use admin

# config变量
config = {_id:"shard2",members:[{_id:0,host:"172.16.206.34:25000"},{_id:1,host:"172.16.206.36:25000",arbiterOnly:true},{_id:2,host:"172.16.206.47:25000"}]} 

# 初始化副本集
rs.initiate(config)

# 查看分区状态
rs.status()

----------------------------------------------------------------------------------------

# 连接
mongo 172.16.206.34:35000
use admin

# config变量
config = {_id:"shard3",members:[{_id:0,host:"172.16.206.34:35000"},{_id:1,host:"172.16.206.36:35000",arbiterOnly:true},{_id:2,host:"172.16.206.47:35000"}]} 

----------------------------------------------------------------
# 初始化副本集
rs.initiate(config)

# 查看分区状态
rs.status()

#config server 服务

# 连接
mongo 172.16.206.34:20000


config = { _id: "configs", members: [ {_id : 0, host : "172.16.206.34:20000"},{_id : 1, host : "172.16.206.36:20000"},{_id : 2, host : "172.16.206.47:20000"}] }   
# 查看分区状态
rs.status()

mongo 172.16.206.34:30000


sh.addShard("shard1/172.16.206.34:27000,172.16.206.36:27000,172.16.206.47:27000")
sh.addShard("shard2/172.16.206.34:25000,172.16.206.36:25000,172.16.206.47:25000")
sh.addShard("shard3/172.16.206.34:35000,172.16.206.36:35000,172.16.206.47:35000")

#查看主分片

rs.status()

进入主分片里移除从分片

#移除

rs.remove("172.16.206.34:27000");

#更改权重,后再把主降为从 #注意[ ]按照顺序从0、1、2开始
cfg= rs.conf();
cfg.members[1].priority=2;
rs.reconfig(cfg);

#备份

mongodump -h 172.16.101.179 -d data -o /var/data/


#还原

mongorestore --port 30000 --host 172.16.206.34 --drop /var/data/

db.runCommand( { enablesharding : "data" } )

 

#导入和导出:


mongoexport -h 172.16.206.34:30000 -d data -c claimBinding -o claimBinding.json
mongoimport -h 172.16.206.34:30000 --collection claimBindingv3 --db data --file /opt/claimBindingv3.json

 

可以看到对于未启动分片的数据库,可以看出我们随便创建的数据库的集合,他可以随机分布在不同的片上,mongo用这种机制实现主的平均分布,实现数据库 的均衡。
扩展一下,对于分片通常实验范围分片和hash分片,分片具体看业务情况的。而且分片以后是不能直接更改的,除非删除数据库或者collection,停业务实验mongodump重新导数据,这个代价太大,所以分片时候要谨慎。

范围分片:

1,适合普通范围查询,可以优化到让热查询定位到某个片,数据集中取出避免数据分散而走网络取数据

2,最好给分片键建立序列,实践证明依据序列查找比全片所有chunk查找快的多

3,缺点在于,如果shardkey有明显递增(或者递减)趋势,则新插入的文档多会分布到同一个chunk,无法扩展写的能力

hash分片:

1,适合大规模插入,由于范围平均可以充分利用整个集群的性能

2,适合高并发,集群的各个集群平均分担压力,

3,不能高效的服务范围查询,所有的范围查询要分发到后端所有的Shard才能找出满足条件的文档

 

#查询集合claimBinding的数量

db.getCollection('claimBinding').find({"createDate":/2017-07-03/}).count()
 

#删除集合claimBinding的数量

db.getCollection('claimBinding').remove({"createDate":/2017-07-03/})
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值