mongodb分片集群无副本

#环境交代:
系统:虚拟机centos6.5
mongo版本:mongodb-linux-x86_64-rhel62-3.6.2.tgz 
下载地址:链接:https://pan.baidu.com/s/1bQQ_61imOwO26DQhp3p7aA 
                 提取码:6v8q
集群节点:192.168.52.11,192.168.52.12,192.168.52.13
分片:192.168.52.11:27001,192.168.52.12:27001,192.168.52.13:27001
配置服务:192.168.52.11:21000,192.168.52.12:21000,192.168.52.13:21000
路由:192.168.52.11:20000,192.168.52.12:20000,192.168.52.13:20000
副本集:每个分片只有一个副本集,没有冗余备份。

#解压安装包
tar -xvf mongodb-linux-x86_64-rhel62-3.6.2.tgz 
mv mongodb-linux-x86_64-rhel62-3.6.2.tgz /data/mongodb

#创建相关目录
以下两个目录每个节点都需要:
    mkdir -p /data/mongodb/configSvr/{log,data,conf}
    mkdir -p /data/mongodb/mongos/{log,data,conf}
    #创建空白log文件
    touch -f /data/mongodb/configSvr/log/conf.log
    touch -f /data/mongodb/mongos/log/mongos.log
以下几个目录分别创建在各节点:
    节点1建目录
    mkdir -p /data/mongodb/shard1/{log,data,conf}
    touch -f /data/mongodb/shard1/log/shard.log
    节点2建目录
    mkdir -p /data/mongodb/shard2/{log,data,conf}
    touch -f /data/mongodb/shard2/log/shard.log
    节点3建目录
    mkdir -p /data/mongodb/shard3/{log,data,conf}
    touch -f /data/mongodb/shard3/log/shard.log

#创建认证文件,然后拷贝到各节点的/data/mongodb/目录,设置权限600(注意:各个节点使用的是同一份认证文件!)
openssl rand -base64 745 > /data/mongodb/keyfile
想办法将认证文件复制到各个节点上。
设置每个节点认证文件的权限
chmod 600 /data/mongodb/keyfile
----------------------------------------------------------------配置服务
--所有节点配置服务器配置文件(keyFile配置先注释掉,不然要设计认证比较麻烦)
cat > /data/mongodb/configSvr/conf/conf.conf <<EOF
dbpath = /data/mongodb/configSvr/data/
logpath = /data/mongodb/configSvr/log/conf.log
logappend = true
bind_ip = 0.0.0.0
port = 21000
fork = true
#declare this is a config db of a cluster;
configsvr = true
replSet = configs
maxConns = 100
#keyFile = /data/mongodb/keyfile
EOF

--启动所有节点配置服务
cd /data/mongodb/bin/
./mongod -f /data/mongodb/configSvr/conf/conf.conf

--登陆任意一台配置服务
cd /data/mongodb/bin/
./mongo 192.168.52.11:21000

--初始化副本集
use admin
rs.initiate({_id : "configs",members : [{_id : 0, host : "192.168.52.11:21000" },{_id : 1, host : "192.168.52.12:21000" },{_id : 2, host : "192.168.52.13:21000" }]})
--查看初始化副本集是否初始化成功
rs.status()

----------------------------------------------------------------分片1
--分片1配置文件
cat > /data/mongodb/shard1/conf/shard.conf <<EOF
dbpath = /data/mongodb/shard1/data/
logpath = /data/mongodb/shard1/log/shard.log
logappend = true
bind_ip = 0.0.0.0
port = 27001
fork = true
replSet = shard1
#declare this is a shard db of a cluster;
shardsvr = true
maxConns = 100
#keyFile = /data/mongodb/keyfile
EOF

cd /data/mongodb/bin/
./mongod -f /data/mongodb/shard1/conf/shard.conf

cd /data/mongodb/bin/
./mongo --port 27001

use admin
rs.initiate({_id : "shard1",members : [{_id : 0, host : "192.168.52.11:27001" }]});
rs.status()

----------------------------------------------------------------分片2
cat > /data/mongodb/shard2/conf/shard.conf <<EOF
dbpath = /data/mongodb/shard2/data/
logpath = /data/mongodb/shard2/log/shard.log
logappend = true
bind_ip = 0.0.0.0
port = 27001
fork = true
replSet = shard2
#declare this is a shard db of a cluster;
shardsvr = true
maxConns = 100
#keyFile=/data/mongodb/keyfile
EOF

cd /data/mongodb/bin/
./mongod -f /data/mongodb/shard2/conf/shard.conf

cd /data/mongodb/bin/
./mongo --port 27001

use admin
rs.initiate({_id : "shard2",members : [{_id : 0, host : "192.168.52.12:27001" }]});
rs.status()
----------------------------------------------------------------分片3
cat > /data/mongodb/shard3/conf/shard.conf <<EOF
dbpath = /data/mongodb/shard3/data/
logpath = /data/mongodb/shard3/log/shard.log
logappend = true
bind_ip = 0.0.0.0
port = 27001
fork = true
replSet = shard3
#declare this is a shard db of a cluster;
shardsvr = true
maxConns = 100
#keyFile = /data/mongodb/keyfile
EOF

cd /data/mongodb/bin/
./mongod -f /data/mongodb/shard3/conf/shard.conf

cd /data/mongodb/bin/
./mongo --port 27001

use admin
rs.initiate({_id : "shard3",members : [{_id : 0, host : "192.168.52.13:27001" }]})
rs.status()

---------------------------------------------------------------- 路由
cat > /data/mongodb/mongos/conf/mongos.conf <<EOF
logpath = /data/mongodb/mongos/log/mongos.log
logappend = true
bind_ip = 0.0.0.0
port = 20000
fork = true
configdb = configs/192.168.52.11:21000,192.168.52.12:21000,192.168.52.13:21000
maxConns = 100
#keyFile = /data/mongodb/keyfile
EOF

cd /data/mongodb/bin/
./mongos -f /data/mongodb/mongos/conf/mongos.conf

---------------------------------------------------------------- 创建用户(创建用户一定是在路由上创建)
cd /data/mongodb/bin
./mongo --port 20000

use admin
db.createUser({user:"root",pwd:"root",roles:[{role:"root",db :"admin"}]})
db.auth({user:"root",pwd:"root"})
use test
db.createUser({user:"test",pwd:"test",roles:[{role:"readWrite",db :"test"}]})
db.auth({user:"test",pwd:"test"})
---------------------------------------------------------------- 重启集群,放开认证文件
停止所有mongo服务:
    killall mongos
    killall mongod

放开认证文件配置
    #keyFile = /data/mongodb/keyfile
按照顺序启动集群:
    启动所有配置服务
    启动所有分片服务
    启动所有路由服务
---------------------------------------------------------------- 启用分片
cd /data/mongodb/bin
./mongo --port 20000

use admin
db.auth({user:"root",pwd:"root"})
sh.addShard("shard1/192.168.52.11:27001");
sh.addShard("shard2/192.168.52.12:27001");
sh.addShard("shard3/192.168.52.13:27001");
查看分片
sh.status()

---------------------------------------------------------------- 指定数据库和集合分片策略
use admin
db.auth({user:"root",pwd:"root"})
db.runCommand( { enablesharding :"test"});
db.runCommand( { shardcollection : "test.table1",key : {id: "hashed"} } )

---------------------------------------------------------------- 测试验证
use test
db.auth({user:"test",pwd:"test"})

for (var i = 1; i <= 10000; i++) db.table1.save({id:i,"test1":"testval1"});

db.table1.find().count()
db.table1.stats()

至此分片集群无副本环境已经搭建完成!
-------------------------------------------------------------------------------------------------------------------------------------------------------
另外,关于均衡器的问题,集群搭建完成后,均衡器默认是开启的,如果觉得用不到,或者嫌占用资源,可以停掉。

use admin
db.auth({user:"root",pwd:"root"})
use config
查看均衡器状态
sh.getBalancerState()
查看均衡器当前是否工作
sh.status()

设置均衡器状态:
开启/关闭 balancer
sh.setBalancerState(true)
sh.setBalancerState(false)

如果需要均衡器,可以考虑设置均衡器运行时间窗口。网上这方便的帖子很多,在此不作赘述。

本文可能有不少不足之处,还请路过的客官不吝赐教。^_^

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值