mongodb 集群包含副本集群,主从集群以及分片集群,分片集群比较复杂,这里测试我采用了三台机器,交差部署

blog地址:http://www.cnblogs.com/caoguo

一 .环境:
#mongo1:
#172.31.100.97

#mongo2:
#172.31.100.81

#mongo3:
#172.31.100.82

#mongo1 and mongo2,mongo3

二 .基本安装

yum install ntp
#add
#restrict 172.31.100.0//etc/init.d/iptables stop && chkconfig iptables off
setenforce && echo "SELINUX=disabled" >/etc/selinux/config #edit /etc/crontab
*/ * * * * root ntpdate 172.31.100.97 wget http://downloads.mongodb.org/linux/mongodb-linux-x86_64-2.6.7.tgz?_ga=1.235705353.941929558.1425604443
tar zxvf mongodb-linux-x86_64-2.6..tgz
mv mongodb-linux-x86_64-2.6. /usr/local/mongodb
ln -sf /usr/local/mongodb/bin/* /usr/sbin/
ln -sf /usr/local/mongodb/bin/mongod /usr/sbin/mongoc
ln -sf /usr/local/mongodb/bin/mongod /usr/sbin/mongod1
ln -sf /usr/local/mongodb/bin/mongod /usr/sbin/mongod2
ln -sf /usr/local/mongodb/bin/mongod /usr/sbin/mongod3 mkdir -p /data/mongodb/config/{data,log}
mkdir -p /data/mongodb/mongos/log
mkdir -p /data/mongodb/shard{1..3}/{data,log}
mkdir -p /etc/mongod openssl rand -base64 753 >/etc/mongod/keyfile
chmod 600 /etc/mongod/keyfile
echo '#建立mongo1 and mongo2,mongo3配置服务'

cat >/etc/mongod/mongoc.conf <<EOF
#bind_ip=192.168.1.201
port=
fork=true
logappend=true
dbpath=/data/mongodb/config/data
pidfilepath=/var/run/mongoc.pid
#keyFile=/etc/mongod/keyfile
logpath=/data/mongodb/config/log/config.log
configsvr=true
EOF echo '#create mongos' cat >/etc/mongod/mongos.conf<<EOF
port=
configdb=172.31.100.97:,172.31.100.82:,172.31.100.81:
fork=true
#keyFile=/etc/mongod/keyfile
logpath=/data/mongodb/mongos/log/mongos.log
EOF echo '#create shard' cat >/etc/mongod/mongod1.conf<<EOF
port=
shardsvr=true
replSet=shard1
dbpath=/data/mongodb/shard1/data
logpath=/data/mongodb/shard1/log/shard1.log
#keyFile=/etc/mongod/keyfile
fork=true
nojournal=true
oplogSize=
EOF cat >/etc/mongod/mongod2.conf<<EOF
port=
shardsvr=true
replSet=shard2
dbpath=/data/mongodb/shard2/data
logpath=/data/mongodb/shard2/log/shard2.log
#keyFile=/etc/mongod/keyfile
fork=true
nojournal=true
oplogSize=
EOF cat >/etc/mongod/mongod3.conf<<EOF
port=
shardsvr=true
replSet=shard3
dbpath=/data/mongodb/shard3/data
logpath=/data/mongodb/shard3/log/shard3.log
#keyFile=/etc/mongod/keyfile
fork=true
nojournal=true
oplogSize=
EOF
touch /etc/init.d/mongoc
touch /etc/init.d/mongos
touch /etc/init.d/mongod{..}
chmod /etc/init.d/mongo*
#/etc/init.d/mongoc stop && \
/etc/init.d/mongos stop && \
/etc/init.d/mongod1 stop && \
/etc/init.d/mongod2 stop && \
/etc/init.d/mongod3 stop && \
netstat -ntlp|grep mongo #/etc/init.d/mongoc start && \
/etc/init.d/mongos start && \
/etc/init.d/mongod1 start && \
/etc/init.d/mongod2 start && \
/etc/init.d/mongod3 start && \
netstat -ntlp|grep mongo #/etc/init.d/mongoc restart && \
/etc/init.d/mongos restart && \
/etc/init.d/mongod1 restart && \
/etc/init.d/mongod2 restart && \
/etc/init.d/mongod3 restart && \
netstat -ntlp|grep mongo

三 .配置

[root@Centos ~]# mongo localhost:/admin
#复本集一(连到主节点上去操作)
> rs.initiate({"_id":"shard1",
"members":[
{"_id":, "host":"172.31.100.97:3100",priority:},
{"_id":, "host":"172.31.100.82:3100"},
{"_id":, "host":"172.31.100.81:3100"}
]
}) > rs.status() #复本集二
[root@Centos ~]# mongo localhost:/admin
> rs.initiate({"_id":"shard2",
"members":[
{"_id":, "host":"172.31.100.97:3200"},
{"_id":, "host":"172.31.100.82:3200",priority:},
{"_id":, "host":"172.31.100.81:3200"}
]
}) > rs.status() #复本集三
[root@Centos ~]# mongo localhost:/admin
> rs.initiate({"_id":"shard3",
"members":[
{"_id":, "host":"172.31.100.97:3300"},
{"_id":, "host":"172.31.100.82:3300"},
{"_id":, "host":"172.31.100.81:3300", priority:}
]
}) > rs.status() #添加副本
shard1:PRIMARY> rs.remove("172.31.100.81:3100")
shard1:PRIMARY> rs.add("172.31.100.81:3100") #移除分片
db.runCommand( { removeshard: "shard1" } ) #mongos加入分片主机
[root@Centos ~]# mongo localhost:/admin
mongos> db.runCommand({ addshard : "shard1/172.31.100.97:3100,172.31.100.82:3100,172.31.100.81:3100"});
mongos> db.runCommand({ addshard : "shard2/172.31.100.97:3200,172.31.100.82:3200,172.31.100.81:3200"});
mongos> db.runCommand({ addshard : "shard3/172.31.100.97:3300,172.31.100.82:3300,172.31.100.81:3300"});
mongos> db.runCommand({ listshards : } ); #允许数据库分片
mongos> db.runCommand({"enablesharding" : "seller"}) #设置集合分片
mongos> db.runCommand({"shardcollection" : "seller.person", "key" : {"_id" : }}) #设置用户验证
mongos> show dbs
admin (empty)
config .016GB
mongos> db
admin
mongos> db.addUser('admin','fffR3q!P97scxxxx')
WARNING: The 'addUser' shell helper is DEPRECATED. Please use 'createUser' instead
Successfully added user: { "user" : "admin", "roles" : [ "root" ] } sed -i 's/^#keyFile/keyFile/g' /etc/mongod/mongoc.conf
sed -i 's/^#keyFile/keyFile/g' /etc/mongod/mongos.conf
sed -i 's/^#keyFile/keyFile/g' /etc/mongod/mongod1.conf
sed -i 's/^#keyFile/keyFile/g' /etc/mongod/mongod2.conf
sed -i 's/^#keyFile/keyFile/g' /etc/mongod/mongod3.conf
grep keyFile /etc/mongod/mongo*

四 .测试

############################
# 数据测试 ###
############################ #插入数据
mongos> use seller > db.person.insert({"name":"jack","age":})
> db.person.insert({"name":"joe","age":}) #批量插入数据
#for (var i = ; i <= ; i++)db.person.save({id:i,name:"username"+i,age:i}); #删除所有数据
#db.person.remove() #查看数据分布
db.person.stats()
db.person.getShardDistribution() #查询数据
> db.person.find({"name":"joe"})
{ "_id" : ObjectId("53150a14d39c963b140c6f6a"), "name" : "joe", "age" : } #更新数据
> db.person.update({"name":"joe"},{"name":"joe","age":})
> db.person.find({"name":"joe"})
{ "_id" : ObjectId("53150a14d39c963b140c6f6a"), "name" : "joe", "age" : } #移除数据
> db.person.remove({"name":"joe"})
> db.person.find()
{ "_id" : ObjectId("53150a0cd39c963b140c6f69"), "name" : "jack", "age" : }
> db.person.remove()
> db.person.find()
> db.person.count() #查看块大小
db.settings.find() #设置块大小
db.settings.save( { _id:"chunksize", value: <sizeInMB> } ) #空间压缩
db.repairDatabase() #压缩指定collection,这最好停止写数据,且只能在副本节点操作
db.person.runCommand("compact");
db.runCommand({compact : 'person');

由于启动脚本比较多我放在最后:

/etc/init.d/mongoc 

vi /etc/init.d/mongoc
#!/bin/bash
#
# mongodb This shell script takes care of starting and stopping
#
# chkconfig: -
### END INIT INFO # Source function library.
. /etc/init.d/functions prog=mongoc
lockfile=/var/lock/subsys/$prog
config=/etc/mongod/mongoc.conf
start() { # Start daemons.
echo -n $"Starting $prog: "
daemon $prog --config $config $OPTIONS
RETVAL=$?
echo
[ $RETVAL -eq ] && touch $lockfile
return $RETVAL
} stop() {
echo -n $"Shutting down $prog: "
killproc $prog
RETVAL=$?
echo
[ $RETVAL -eq ] && rm -f $lockfile
return $RETVAL
} # See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status $prog
;;
restart|force-reload)
stop
start
;;
*)
echo $"Usage: $0 {start|stop|status|restart|try-restart|force-reload}"
exit
esac

/etc/init.d/mongos

vi /etc/init.d/mongos
#!/bin/bash
#
# mongodb This shell script takes care of starting and stopping
#
# chkconfig: -
### END INIT INFO # Source function library.
. /etc/init.d/functions prog=mongos
lockfile=/var/lock/subsys/$prog
config=/etc/mongod/mongos.conf
start() { # Start daemons.
echo -n $"Starting $prog: "
daemon $prog --config $config $OPTIONS
RETVAL=$?
echo
[ $RETVAL -eq ] && touch $lockfile
return $RETVAL
} stop() {
echo -n $"Shutting down $prog: "
killproc $prog
RETVAL=$?
echo
[ $RETVAL -eq ] && rm -f $lockfile
return $RETVAL
} # See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status $prog
;;
restart|force-reload)
stop
start
;;
*)
echo $"Usage: $0 {start|stop|status|restart|try-restart|force-reload}"
exit
esac

/etc/init.d/mongod1

vi /etc/init.d/mongod1
#!/bin/bash
#
# mongodb This shell script takes care of starting and stopping
#
# chkconfig: -
### END INIT INFO # Source function library.
. /etc/init.d/functions prog=mongod1
lockfile=/var/lock/subsys/$prog
config=/etc/mongod/mongod1.conf
start() { # Start daemons.
echo -n $"Starting $prog: "
daemon $prog --config $config $OPTIONS
RETVAL=$?
echo
[ $RETVAL -eq ] && touch $lockfile
return $RETVAL
} stop() {
echo -n $"Shutting down $prog: "
killproc $prog
RETVAL=$?
echo
[ $RETVAL -eq ] && rm -f $lockfile
return $RETVAL
} # See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status $prog
;;
restart|force-reload)
stop
start
;;
*)
echo $"Usage: $0 {start|stop|status|restart|try-restart|force-reload}"
exit
esac

/etc/init.d/mongod2

#!/bin/bash
#
# mongodb This shell script takes care of starting and stopping
#
# chkconfig: -
### END INIT INFO # Source function library.
. /etc/init.d/functions prog=mongod2
lockfile=/var/lock/subsys/$prog
config=/etc/mongod/mongod2.conf
start() { # Start daemons.
echo -n $"Starting $prog: "
daemon $prog --config $config $OPTIONS
RETVAL=$?
echo
[ $RETVAL -eq ] && touch $lockfile
return $RETVAL
} stop() {
echo -n $"Shutting down $prog: "
killproc $prog
RETVAL=$?
echo
[ $RETVAL -eq ] && rm -f $lockfile
return $RETVAL
} # See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status $prog
;;
restart|force-reload)
stop
start
;;
*)
echo $"Usage: $0 {start|stop|status|restart|try-restart|force-reload}"
exit
esac

/etc/init.d/mongod3

#!/bin/bash
#
# mongodb This shell script takes care of starting and stopping
#
# chkconfig: -
### END INIT INFO # Source function library.
. /etc/init.d/functions prog=mongod3
lockfile=/var/lock/subsys/$prog
config=/etc/mongod/mongod3.conf
start() { # Start daemons.
echo -n $"Starting $prog: "
daemon $prog --config $config $OPTIONS
RETVAL=$?
echo
[ $RETVAL -eq ] && touch $lockfile
return $RETVAL
} stop() {
echo -n $"Shutting down $prog: "
killproc $prog
RETVAL=$?
echo
[ $RETVAL -eq ] && rm -f $lockfile
return $RETVAL
} # See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status $prog
;;
restart|force-reload)
stop
start
;;
*)
echo $"Usage: $0 {start|stop|status|restart|try-restart|force-reload}"
exit
esac

mongodb分片集群安装教程的更多相关文章

  1. 搭建MongoDB分片集群

    在部门服务器搭建MongoDB分片集群,记录整个操作过程,朋友们也可以参考. 计划如下: 用5台机器搭建,IP分别为:192.168.58.5.192.168.58.6.192.168.58.8.19 ...

  2. 分布式文档存储数据库之MongoDB分片集群

    前文我们聊到了mongodb的副本集以及配置副本集,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13953598.html:今天我们来聊下mongodb的分片 ...

  3. MongoDB分片集群原理、搭建及测试详解

    随着技术的发展,目前数据库系统对于海量数据的存储和高效访问海量数据要求越来越高,MongoDB分片机制就是为了解决海量数据的存储和高效海量数据访问而生. MongoDB分片集群由mongos路由进程( ...

  4. mongodb分片集群

    第一章 1.mongodb 分片集群解释和目的 一组Mongodb复制集,就是一组mongod进程,这些进程维护同一个数据集合.复制集提供了数据冗余和高等级的可靠性,这是生产部署的基础. 第二章 1. ...

  5. TiDB和MongoDB分片集群架构比较

    此文已由作者温正湖授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 最近阅读了TiDB源码的说明文档,跟MongoDB的分片集群做了下简单对比. 首先展示TiDB的整体架构 M ...

  6. 网易云MongoDB分片集群(Sharding)服务已上线

    此文已由作者温正湖授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. MongoDB sharding cluster(分片集群)是MongoDB提供的数据在线水平扩展方案,包括 ...

  7. MongoDB 分片集群实战

    背景 在如今的互联网环境下,海量数据已随处可见并且还在不断增长,对于如何存储处理海量数据,比较常见的方法有两种: 垂直扩展:通过增加单台服务器的配置,例如使用更强悍的 CPU.更大的内存.更大容量的磁 ...

  8. CentOS7+Docker+MangoDB下部署简单的MongoDB分片集群

    简单的在Docker上快速部署MongoDB分片集群 前言 文中使用的环境如下 OS:CentOS Linux release 7.5.1804 (Core) Docker:Docker versio ...

  9. Windows 搭建MongoDB分片集群(二)

    在本篇博客中我们主要讲描述分片集群的搭建过程.配置分片集群主要有两个步骤,第一启动所有需要的mongod和mongos进程.第二步就是启动一个mongos与集群通信.下面我们一步步来描述集群的搭建过程 ...

随机推荐

  1. JAVA之中出现无法加载主类的情况解决方法

    j今天打代码的时候出现了无法加载主类的情况,我就收集了一些,java无法加载主类的方法 ava无法加载主类解决办法 今天启动项目,又遇到找不到或无法加载主类的情况,清除项目后无法编译,class文件下 ...

  2. 【CV论文阅读】Network in Network

    目的: 通过用Mlpconv层来替代传统的conv层,可以学习到更加抽象的特征.传统卷积层通过将前一层进行了线性组合,然后经过非线性激活得到(GLM),作者认为传统卷积层的假设是基于特征的线性可分.而 ...

  3. 1.4-动态路由协议OSPF⑥

    OSPF Network Type/网络类型     (Run Mode/运行模式) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 物理 ...

  4. VIM学习笔记 比较文件(diff)

    比较 可以从命令行调用以下命令,来打开两个文件进行比较: vim -d file1 file2 如果已经打开了文件file1,那么可以在Vim中用以下命令,再打开另一个文件file2进行比较: :di ...

  5. research plan1111

    Hello prof.Choi 感谢您的来电,与您的这次通话我已经期盼了很久.我来做个自我介绍,我叫陈飞,今年27岁了,是河北地质大学计算机科学专业的本科毕业生.我非常想提高自己的学历,现在经过刘老师 ...

  6. Selenium在Jenkins中的配置

    //  Goals and options -Dmode="" -DuseGrid="true" -Dhub=${Hub} -DbrowserType=${Br ...

  7. XAML实例教程系列 - 开篇(一)

    XAML实例教程系列 - 开篇 2012-05-14 11:47 by jv9, 5588 阅读, 8 评论, 收藏, 编辑 去年,曾答应银光中国论坛的朋友推出一个关于XAML语言实例教程系列,帮助学 ...

  8. HDU4336:Card Collector

    题意 有n张卡片,每一次 有pi的概率买到第i张卡.求买到所有卡的期望购买次数. n<=20 解析 Solution 1:大力状压(就是步数除以方案数) #include<iostream ...

  9. [Swift通天遁地]八、媒体与动画-(7)实现多个动画的顺序播放效果

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  10. GIT分支的一些开发心得

    从本地的master分支创建新的分支 $ git checkout -b dev Switched to a new branch 'dev' 上面那条命令可以分为两步 $ git branch de ...