龙行博客

走路看风景,经历看人生,岁月留痕迹,人生留轨迹,17的历史,18的豪情,时间的匆忙,人生的风景,放开心胸往前走,成功再远行,放开理想往前走,梦想再行动。
现在位置:首页 > 杂货分享 > 个人随笔 > mongodb副本集群分片实现

mongodb副本集群分片实现

龙行    个人随笔    2019-1-14    178    0评论    本文已被百度收录点击查看详情
三台服务器  分别是 130,131,132
注意:在做分片的时候,要避免Shard在同一台主机上,这样就没办法实现分片。
安装mongodb
https://www.mongodb.com/download-center/community   linux最新版
上传到服务器解压
tar -xzvf mongodb-linux-x86_64-4.0.5.tgz    我的是4.0版本
解压之后放在 /usr/local/mongodb/下面

集群规划:mongos不存储数据只需要创建日志目录即可
除了conf和mongos   每个目录下分别创建data,log两个目录 
__________________________________________________________
130                 | 131                   |               132                |
conf(配置文件目录)   |     conf                |               conf               |
config(配置服务器目录)  |     config |    config      |
mongos(路由目录)        |     mongos     |    mongos      |
shard1(PRIMARY)主       |    shard1(从)  | shard1(仲)     |
shard2(SECONDARY)从     | shard2(主)  | shard2(从)     |
shard3(ARBITER)仲     |    shard3(仲)  | shard3(主)     |
__________________________________________________________|

如上每个服务器一份
端口规划
配置服务器端口: 10000
mongos路由端口: 20000
shard1端口:  30000
shard2端口:  40000
shard3端口:  50000

配置环境变量

vim /etc/profile
# 内容
export PATH=$PATH:/usr/local/mongodb/bin
# 使立即生效
source /etc/profile

______________________________________________________________________________
config server配置    130,131,132 各配置一份保存在/usr/local/mongodb/conf/下面,内容不需更改
#vi /usr/local/mongodb/conf/config.conf
## 配置文件内容
pidfilepath = /usr/local/mongodb/config/log/configsrv.pid
dbpath = /usr/local/mongodb/config/data
logpath = /usr/local/mongodb/config/log/congigsrv.log
logappend = true
 
bind_ip = 0.0.0.0
port = 10000
fork = true
 
#declare this is a config db of a cluster;
configsvr = true
 
#副本集名称
replSet=configs
 
#设置最大连接数
maxConns=20000
_____________________________________________________

#三台服务器都启动config
bin>./mongod -f /usr/local/mongodb/conf/config.conf

看到success字样就启动成功,然后选台机器登陆
bin>./mongo --port 10000
初始化副本集

config = { _id : "configs",members : [{_id : 0, host : "192.168.216.130:10000" },{_id : 1, host : "192.168.216.131:10000" },{_id : 2, host : "192.168.216.132:10000" }]}
rs.initiate(config)   //初始化副本集
rs.status()     //查看副本集状态
rs.conf()    //查看副本集配置
________________________________________________________________

上面配置完毕.接下来配置 分片副本集

_______________________________________________________________

#vi /usr/local/mongodb/conf/shard1.conf
pidfilepath = /usr/local/mongodb/shard1/log/shard1.pid
dbpath = /usr/local/mongodb/shard1/data
logpath = /usr/local/mongodb/shard1/log/shard1.log
logappend = true
 
bind_ip = 0.0.0.0
port = 30000
fork = true
 
#打开web监控
#httpinterface=true
#rest=true
 
#副本集名称
replSet=shard1
 
#declare this is a shard db of a cluster;
shardsvr = true
 
#设置最大连接数
maxConns=20000
___________________________________________________________
bin>./mongod -f /usr/local/mongodb/conf/shard1.conf    同样三台都启动
登陆任意一台服务器配置副本集
bin>./mongo --port 30000
config = { _id : "shard1",members : [{_id : 0, host : "192.168.216.130:30000" },{_id : 1, host : "192.168.216.131:30000" }]}
rs.initiate(config)
rs.addArb("192.168.216.132:30000")   132 shard1成为仲裁节点

手动配置节点优先级值最大的就是主节点(当前配置是默认操作哪个服务器哪个就是主节点,下面手动配置主节点)
节点优先级测试,假设值是0,那么不能成为primay  
通过改动priority的值来实现(默认的优先级是1(0-100)。priority的值设的越大,就优先成为主)
1)PRIMARY> config=rs.conf()
2)PRIMARY>config.members[3].priority = 3
3)PRIMARY> rs.reconfig(config)

_shard1  shard2如shard1配置相似只需更改端口,主,从,仲配置_如上图___________________________________________________

___________________mongos配置(同样三台都这样配置)_____________
#vi /usr/local/mongodb/conf/mongos.conf

#内容
pidfilepath = /usr/local/mongodb/mongos/log/mongos.pid
logpath = /usr/local/mongodb/mongos/log/mongos.log
logappend = true
 
bind_ip = 0.0.0.0
port = 20000
fork = true
 
#监听的配置服务器,只能有1个或者3个 configs为配置服务器(config)的副本集名字
副本集名称/ip:端口
configdb = configs/192.168.216.130:10000,192.168.216.131:10000,192.168.216.132:10000
 
#设置最大连接数
maxConns=20000

启用三台服务器的mongos
bin>./mongos -f /usr/local/mongodb/conf/mongos.conf

___________________________所有配置完毕______接下来分片____________________

登录任意mongos服务器
bin>./mongo --port 20000
mongos> use admin
mongos> sh.addShard("shard1/192.168.216.130:30000,192.168.216.131:30000,192.168.216.132:30000")
mongos> sh.addShard("shard2/192.168.216.130:40000,192.168.216.131:40000,192.168.216.132:40000")
mongos> sh.addShard("shard3/192.168.216.130:50000,192.168.216.131:50000,192.168.216.132:50000")

这种写法也可以
#shard1为副本集name,s1为shard的name。maxsize貌似指一个分片大小,向更明显看到分片效果请设小:如4。单位为m
db.runCommand( { addshard : “shard1/192.168.216.130:30000,192.168.216.131:30000,192.168.216.132:30000″,name:”s1″,maxsize:20480} );
db.runCommand( { addshard : “shard2/192.168.216.130:40000,192.168.216.131:40000,192.168.216.132:40000″,name:”s2″,maxsize:20480} );
db.runCommand( { addshard : “shard3/192.168.216.130:50000,192.168.216.131:50000,192.168.216.132:50000″,name:”s3″,maxsize:20480} );

这个步骤常用命令
db.runCommand( { removeshard : “shard2/192.168.216.130:40000,192.168.216.131:40000,192.168.216.132:40000”} );   //移除
db.runCommand( { listshards : 1 } )    //查看sharding信息

mongos> sh.status()

#注意:分片的功能是需要手动开启才能实现的:sh.enableSharding("库名")、sh.shardCollection("库名.集合名",{"key":1})
mongos> sh.enableSharding("testdb(库名)")
mongos> sh.shardCollection('testdb.users',{uid:1})   库名.集合,{片键(字段名)}
然后进入testdb  use testdb
mongos> for(i=1;i<=200000;i++) db.users.insert({uid:i,name:'lx',age:23})  # 生成20W条数据,并且通过uid来进行分片  和上面uid对应

然后就可以去另一台服务器上查看数据
mongos> db.users.count()
200000

__________________________________________________________________________
mongos> sh.setBalancerState(false)   #关闭均衡器
mongos> db.settings.find({"_id" : "balancer"})
{ "_id" : "balancer", "stopped" : true}


mongos> sh.setBalancerState(true)    #开启均衡器
mongos> db.settings.find({"_id" : "balancer"})
{ "_id" : "balancer", "stopped" : false}


mongos> sh.stopBalancer()             #关闭均衡器
Waiting for active hosts...
Waiting for active host mongo2:30000 to recognize new settings... (ping : Mon Jul 27 2015 16:08:33 GMT+0800 (CST))
Waiting for the balancer lock...
Waiting again for active hosts after balancer is off...
mongos> db.settings.find({"_id" : "balancer"})
{ "_id" : "balancer", "stopped" : true}


mongos> sh.startBalancer()               #开启均衡器
mongos> db.settings.find({"_id" : "balancer"})
{ "_id" : "balancer", "stopped" : false}


评论一下 分享本文 赞助站长

赞助站长X

扫码赞助站长
联系站长
龙行博客
  • 版权申明:此文如未标注转载均为本站原创,自由转载请表明出处《龙行博客》。
  • 本文网址:https://www.liaotaoo.cn/156.html
  • 上篇文章:运行netstat,提示未找到这个命令
  • 下篇文章:VMware Workstation 14.1.3 官方中文正式版 安装教程
  • mongodb
挤眼 亲亲 咆哮 开心 想想 可怜 糗大了 委屈 哈哈 小声点 右哼哼 左哼哼 疑问 坏笑 赚钱啦 悲伤 耍酷 勾引 厉害 握手 耶 嘻嘻 害羞 鼓掌 馋嘴 抓狂 抱抱 围观 威武 给力
提交评论

清空信息
关闭评论
快捷导航
联系博主
在线壁纸
给我留言
光羽影视
音乐欣赏
返回顶部