如何配置 mongodb 删除副本集副本集

分片与副本集配置方案;服务器:;服务器1:10.120.131.201;服务器2:10.120.131.203;服务器3:10.120.131.204;两个分片:shard1,shard2;shard1包含四个节点:10.120.131.;shard2包含四个节点:10.120.131.;系统包含三个角色:;Shardserver:mongod的实例,用于;
分片与副本集配置方案
服务器1:10.120.131.201
服务器2:10.120.131.203
服务器3:10.120.131.204
两个分片:shard1,shard2。每个分片都是一个副本集。
shard1 包含四个节点:10.120.131.201:1.131.203:1.131.204:1.131.204:10001,其中10.120.131.204:10001为仲裁节点,仲裁节点不参与数据复制,只参与投票。
shard2 包含四个节点:10.120.131.201:1.131.203:1.131.204:1.131.204:10101,其中10.120.131.204:10101为仲裁节点。
系统包含三个角色:
Shard server:mongod的实例,用于存储实际的数据块,对应着系统架构图中的两个分片(副本集)。
Config server:mongod实例,用于存储整个cluster metadata,包含了chunk块的信息。
Route server(路由):mongos实例,前端路由,客户端由此接入,让整个集群看上去像一个单一的数据库。
服务器系统架构图如下:
配置过程:
进入mongodb的文件夹中(/home/software/mongodb2.4.8)。创建data文件夹,并进入到data文件夹中。创建文件夹:shard11,shard12。分为shard1,shard2在服务器1上的数据存储文件夹。创建config文件夹,用于存储cluster metadata。
代码:mkdir data,进入data文件夹:mkdir shard11,mkdir shard12,mkdir config
进入mongodb的文件夹中(/home/software/mongodb2.4.8)。创建data文件夹,并进入到data文件夹中。创建文件夹:shard21,shard22。分为shard1,shard2在服务器2上的数据存储文件夹。创建config文件夹,用于存储cluster metadata。
代码:mkdir data,进入data文件夹:mkdir shard21,mkdir shard22,mkdir config
进入mongodb的文件夹中(/home/software/mongodb2.4.8)。创建data文件夹,并进入到data文件夹中。创建文件夹:shard31,shard32。分为shard1,shard2在服务器3上的数据存储文件夹。创建文件夹:shard31_arb,shard32_arb,分别为shard1与shard2的仲裁节点。创建config文件夹,用于存储cluster metadata。
代码:mkdir data,进入data文件夹:mkdir shard31,mkdir shard32, mkdir shard31_arb,mkdir shard32_arb,mkdir config.
配置副本集:
配置副本集shard1:
在服务器1上启动mongod:
./mongod --shardsvr --replSet shard1 --dbpath /home/software/mongodb2.4.8/data/shard11 --port 10000 --logpath /home/software/mongodb2.4.8/data/shard11.log --fork --nojournal 在服务器2上启动mongod:
./mongod --shardsvr --replSet shard1 --dbpath /home/software/mongodb2.4.8/data/shard21 --port 10000 --logpath
/home/software/mongodb2.4.8/data/shard21.log --fork Cnojournal 在服务器3上启动两个mongod:
./mongod --shardsvr --replSet shard1 --dbpath /home/software/mongodb2.4.8/data/shard31 --port 10000 --logpath /home/software/mongodb2.4.8/data/shard31.log --fork Cnojournal
./mongod --shardsvr --replSet shard1
--port --dbpath 10001 /home/software/mongodb2.4.8/data/shard31_arb
--logpath /home/software/mongodb2.4.8/data/shard31_arb.log --fork --nojournal
初始化副本集shard1:
用mongo连接任意一个mongod(仲裁节点除外):./momgo --port 10000并执行:
&config=,_id:”shard1”,members:*,_id:0,host:”10.120.131.201:10000”-,,_id:1,host:”10.120.131.203:10000”-,,_id:2,host:”10.120.131.204:10000”-,,_id:3,host:”10.120.131.204:10001,”arbiterOnly”:true-+-
&rs.initiate(config)
用同样的方法配置副本集shard2:
在服务器1上启动mongod:
./mongod --shardsvr --replSet shard2 --dbpath /home/software/mongodb2.4.8/data/shard12 --port 10100 --logpath /home/software/mongodb2.4.8/data/shard12.log --fork --nojournal
在服务器2上启动mongod:
./mongod --shardsvr --replSet shard2 --dbpath /home/software/mongodb2.4.8/data/shard22 --port 10100 --logpath /home/software/mongodb2.4.8/data/shard22.log --fork Cnojournal 在服务器3上启动两个mongod:
./mongod --shardsvr --replSet shard2 --dbpath /home/software/mongodb2.4.8/data/shard32 --port 10100 --logpath /home/software/mongodb2.4.8/data/shard32.log --fork Cnojournal
./mongod --shardsvr --replSet shard2
--port --dbpath 10101 /home/software/mongodb2.4.8/data/shard32_arb
--logpath /home/software/mongodb2.4.8/data/shard32_arb.log --fork --nojournal
初始化副本集shard1:
用mongo连接任意一个mongod(仲裁节点除外):./momgo --port 10100并执行:
&config=,_id:”shard2”,members:*,_id:0,host:”10.120.131.201:10100”-,,_id:1,host:”10.120.131.203:10100”-,,_id:2,host:”10.120.131.204:10100”-,,_id:3,host:”10.120.131.204:10101,”arbiterOnly”:true-+-
&rs.initiate(config)
配置三台config server
包含各类专业文献、高等教育、应用写作文书、文学作品欣赏、生活休闲娱乐、mongodb分片与副本集详细配置方案89等内容。 
 mongoDB-副本集搭建_计算机软件及应用_IT/计算机_专业资料。1. 安装 mongoDB ...master/conf/master.conf 对应路径要提前创建,配置文件中的路径也需要提前创建 4...  mongodb 运行中有一定概率会将旧的主库自 动从 secondary 升级为 primary 的,...mongodb分片与副本集详细... 1269人阅读 7页 免费
Mongodb 集群分片部署 2012...  本地部署mongoDB副本集学习笔记_计算机软件及应用_IT/计算机_专业资料。本地部署...(2)增加分片: db.runCommand({“addShard”:”localhost:10000”}) db.run...  Linux mongo 安装 Replica Set副本集配置_计算机软件及应用_IT/计算机_专业资料。mongo集群、副本集配置 mongodb replica set 配置高性能多服务器详解 使用 mongodb ...  10 台 Linux 机器,配置方案: 1、3 个分片 ...(一个路由节点): 192.168.100.15:40000 详细操作...化副本集 fae01(192.168.101.22)主机: /mongodb...  分片群集(sharding 配置 mongodb 分片群集(sharding cluster) 这是一种可以水平扩展的模式,在数据量很大时特给力,实际大规模应用一般会采 用这种架构去构建 monodb...  mongodb 公司真实应用环境 最新的sharding架构 分片...[other options] 解决方案: (1)http://oss.sgi....E、启动了两个副本集,初始化副本集 1、$ /mongo...  .227:8.2.126:8.2.1 27:21000 --port 20000 --logpath F:/data/mongodbtest/mongos/log/mongos.log 4、配置各个分片的副本集...  网页应用提供可扩展的高性能数据存储解决方案,并且...2 mongodb 的自动分片技术介绍 使用自动分片技术的...并且在 3.2 版本以后,配置服务器可以应用副本集机...MongoDb的副本集搭建教程(个人操作笔记)
时间: 15:37:40
&&&& 阅读:1909
&&&& 评论:
&&&& 收藏:0
标签:很多公司都在用MongoDb ,一直没有时间研究,最近好好的整了一下,做下笔记,直接上操作步骤,关于Mongodb的理论知识可以搜索其他资料,也可以联系我索取
mongoDB官方已经不建议使用主从模式了,替代方案是采用副本集的模式,主从模式其实就是一个单副本的应用,没有很好的扩展性和容错性。而副本集具有多个副本保证了容错性,就算一个副本挂掉了还有很多副本存在,并且解决了上面 第一个问题&主节点挂掉了,整个集群内会自动切换&。难怪mongoDB官方推荐使用这种模式。我们来看看mongoDB副本集的架构图:
由图可以看到客户端连接到整个副本集,不关心具体哪一台机器是否挂掉。主服务器负责整个副本集的读写,副本集定期同步数据备份,一但主节点挂掉,副本节点就会选举一个新的主服务器,这一切对于应用服务器不需要关心。我们看一下主服务器挂掉后的架构:
副本集中的副本节点在主节点挂掉后通过心跳机制检测到后,就会在集群内发起主节点的选举机制,自动选举一位新的主服务器。看起来很牛X的样子,我们赶紧操作部署一下! 官方推荐的副本集机器数量为至少3个,那我们也按照这个数量配置测试。
1、准备两台机器 192.168.176.129、192.168.176.130、192.168.176.131。 192.168.176.129
当作副本集主节点,192.168.176.130、192.168.176.131作为副本集副本节点。
2、分别在每台机器上建立mongodb副本集测试文件夹及Data目录
3、分别启动三台机器的MongoDB服务:
#cd /opt/soft/mongodb/mongodb-linux-x86_64-3.2.1/bin
#启动时指定数据文件路径 和副本集名称
#./mongod --dbpath /opt/soft/mongodb/data/ --replSet repset
4、初始化副本集  登录三台机器中的任意一台,比如:129这台
#/opt/soft/mongodb/mongodb-linux-x86_64-3.2.1/bin/mongo........日志信息省略#&&config = { _id:"repset", members:[
{_id:0,host:"192.168.176.129:27017"},
{_id:1,host:"192.168.176.130:27017"},
{_id:2,host:"192.168.176.131:27017"}]
  打印信息:
"_id" : "repset",
"members" : [
"_id" : 0,
"host" : "192.168.176.129:27017"
"_id" : 1,
"host" : "192.168.176.130:27017"
"_id" : 2,
"host" : "192.168.176.131:27017"
#初始化副本集配置
rs.initiate(config);#如果成功了返回{ "ok" : 1 }#如果出现一下信息,查看一下服务器的防火墙{&&&&&&& "ok" : 0,&&&&&&& "errmsg" : "replSetInitiate quorum check failed because not all proposed set members responded affirmatively: 192.168.176.129:27017 failed with No route to host, 192.168.176.131:27017 failed with No route to host",&&&&&&& "code" : 74}
5、查看集群状态
  到此整个副本集已经搭建完成。下面赶快测试一下吧
主节点负责写操作,所以我们在130这台机器上执行写操作
repset:PRIMARY& db.benxq.insert({"name":"zhangsan"})
在131机器上执行读操作读一下
repset:SECONDARY& db.benxq.find()#mongodb默认是从主节点读写数据的,副本节点上不允许读,需要设置副本节点可以读。
Error: error: { "ok" : 0, "errmsg" : "not master and slaveOk=false", "code" : 13435 }
repset:SECONDARY& db.getMongo().setSlaveOk(); #可以看到数据已经复制到了副本集。 repset:SECONDARY& db.benxq.find();
6、故障转移测试
&我们将130这台主节点停掉模仿服务器故障,在129上执行rs.status()
我们可以看到已经将131这台服务器选举为了新的主节点,这是我们重新启动130,就会自动的成为了副节点。
&&国之画&&&& &&
版权所有 京ICP备号-2
迷上了代码!MongoDB 已经成为市面上最知名的 NoSQL 数据库。MongoDB 是面向文档的,它的无模式设计使得它在各种各样的WEB 应用当中广受欢迎。最让我喜欢的特性之一是它的副本集(Replica Set),副本集将同一数据的多份拷贝放在一组 mongod 节点上,从而实现数据的冗余以及高可用性。
这篇教程将向你介绍如何配置一个 MongoDB 副本集。
副本集的最常见配置需要一个主节点以及多个副节点。这之后启动的复制行为会从这个主节点到其他副节点。副本集不止可以针对意外的硬件故障和停机事件对数据库提供保护,同时也因为提供了更多的节点从而提高了数据库客户端数据读取的吞吐量。
这个教程里,我们会配置一个包括一个主节点以及两个副节点的副本集。
为了达到这个目的,我们使用了3个运行在 VirtualBox 上的虚拟机。我会在这些虚拟机上安装 Ubuntu 14.04,并且安装 MongoDB 官方包。
我会在一个虚拟机实例上配置好所需的环境,然后将它克隆到其他的虚拟机实例上。因此,选择一个名为 master 的虚拟机,执行以下安装过程。
首先,我们需要给 apt 增加一个 MongoDB 密钥:
$ sudo apt-key adv --keyserver hkp://:80 --recv 7F0CEB10
然后,将官方的 MongoDB 仓库添加到 source.list 中:
# echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list
接下来更新 apt 仓库并且安装 MongoDB。
$ sudo apt-get update
$ sudo apt-get install -y mongodb-org
现在对 /etc/mongodb.conf 做一些更改
auth = true
dbpath=/var/lib/mongodb
logpath=/var/log/mongodb/mongod.log
logappend=true
keyFile=/var/lib/mongodb/keyFile
replSet=myReplica
第一行的作用是表明我们的数据库需要验证才可以使用。keyfile 配置用于 MongoDB 节点间复制行为的密钥文件。replSet 为副本集设置一个名称。
接下来我们创建一个用于所有实例的密钥文件。
$ echo -n "MyRandomStringForReplicaSet" | md5sum & keyFile
这将会创建一个含有 MD5 字符串的密钥文件,但是由于其中包含了一些噪音,我们需要对他们清理后才能正式在 MongoDB 中使用。
$ echo -n "MyReplicaSetKey" | md5sum|grep -o "[0-9a-z]/+" & keyFile
grep 命令的作用的是把将空格等我们不想要的内容过滤掉之后的 MD5 字符串打印出来。
现在我们对密钥文件进行一些操作,让它真正可用。
$ sudo cp keyFile /var/lib/mongodb
$ sudo chown mongodb:nogroup keyFile
$ sudo chmod 400 keyFile
接下来,关闭此虚拟机。将其 Ubuntu 系统克隆到其他虚拟机上。
这是克隆后的副节点1和副节点2。确认你已经将它们的MAC地址重新初始化,并且克隆整个硬盘。
请注意,三个虚拟机示例需要在同一个网络中以便相互通讯。因此,我们需要它们弄到“互联网”上去。
这里推荐给每个虚拟机设置一个静态 IP 地址,而不是使用 DHCP。这样它们就不至于在 DHCP 分配IP地址给他们的时候失去连接。
像下面这样编辑每个虚拟机的 /etc/networks/interfaces 文件。
在主节点上:
iface eth1 inet static
address 192.168.50.2
netmask 255.255.255.0
在副节点1上:
iface eth1 inet static
address 192.168.50.3
netmask 255.255.255.0
在副节点2上:
iface eth1 inet static
address 192.168.50.4
netmask 255.255.255.0
由于我们没有 DNS 服务,所以需要设置设置一下 /etc/hosts 这个文件,手工将主机名称放到此文件中。
在主节点上:
127.0.0.1 localhost primary
192.168.50.2 primary
192.168.50.3 secondary1
192.168.50.4 secondary2
在副节点1上:
127.0.0.1 localhost secondary1
192.168.50.2 primary
192.168.50.3 secondary1
192.168.50.4 secondary2
在副节点2上:
127.0.0.1 localhost secondary2
192.168.50.2 primary
192.168.50.3 secondary1
192.168.50.4 secondary2
使用 ping 命令检查各个节点之间的连接。
$ ping primary
$ ping secondary1
$ ping secondary2
配置副本集
验证各个节点可以正常连通后,我们就可以新建一个管理员用户,用于之后的副本集操作。
在主节点上,打开 /etc/mongodb.conf 文件,将 auth 和 replSet 两项注释掉。
dbpath=/var/lib/mongodb
logpath=/var/log/mongodb/mongod.log
logappend=true
#auth = true
keyFile=/var/lib/mongodb/keyFile
#replSet=myReplica
在一个新安装的 MongoDB 上配置任何用户或副本集之前,你需要注释掉 auth 行。默认情况下,MongoDB 并没有创建任何用户。而如果在你创建用户前启用了 auth,你就不能够做任何事情。你可以在创建一个用户后再次启用 auth。
修改 /etc/mongodb.conf 之后,重启 mongod 进程。
$ sudo service mongod restart
现在连接到 MongoDB master:
$ mongo &master-ip-address&:27017
连接 MongoDB 后,新建管理员用户。
& use admin
& db.createUser({
user:"admin",
重启 MongoDB:
$ sudo service mongod restart
再次连接到 MongoDB,用以下命令将 副节点1 和副节点2节点添加到我们的副本集中。
& use admin
& db.auth("admin","myreallyhardpassword")
& rs.initiate()
& rs.add ("secondary1:27017")
& rs.add("secondary2:27017")
现在副本集到手了,可以开始我们的项目了。参照
来了解如何连接到副本集。如果你想要用 Shell 来请求数据,那么你需要连接到主节点上来插入或者请求数据,副节点不行。如果你执意要尝试用副本集操作,那么以下错误信息就蹦出来招呼你了。
myReplica:SECONDARY&
myReplica:SECONDARY& show databases
T03:09:24.131+0000 E QUERY
Error: listDatabases failed:{ "note" : "from execCommand", "ok" : 0, "errmsg" : "not master" }
at Error ()
at Mongo.getDBs (src/mongo/shell/mongo.js:47:15)
at shellHelper.show (src/mongo/shell/utils.js:630:33)
at shellHelper (src/mongo/shell/utils.js:524:36)
at (shellhelp2):1:1 at src/mongo/shell/mongo.js:47
如果你要从 shell 连接到整个副本集,你可以安装如下命令。在副本集中的失败切换是自动的。
$ mongo primary,secondary1,secondary2:27017/?replicaSet=myReplica
如果你使用其它驱动语言(例如,JavaScript、Ruby 等等),格式也许不同。
希望这篇教程能对你有所帮助。你可以使用Vagrant来自动完成你的本地环境配置,并且加速你的代码。
在文章中找不到问题答案?您还可以
热门栏目订阅workming 的BLOG
用户名:workming
文章数:126
评论数:235
访问量:1136142
注册日期:
阅读量:5863
阅读量:12276
阅读量:399190
阅读量:1089331
51CTO推荐博文
(1)、针对近期出现的mongodb未授权的安全问题,导致mongodb数据会被非法访问。应安全平台部的要求,需要对所有mongodb进行鉴权设置,目前活动侧总共有4台,用于某XX产品;略过(直接从官方下载二进制包解压到“/usr/local”路径)…..#!/bin/bash##&this&script&start&and&stop&the&mongodb&daemon
##&chkconfig:&&&-&85&15
#&description:&mongodb&is&a&document&key-value&database
#&processname:&mongod
#&config:&&&&&/usr/local/mongodb/etc/mongod.conf
#&pidfile:&&&&&/usr/local/mongodb/run/mongod.pid
#&code&by&rocketzhang
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin
mongod="/usr/local/mongodb/bin/mongod"
prog=mongod
OPTIONS="--fork&--config&/usr/local/mongodb/etc/mongod.conf"
&&&&echo&-n&$"Starting&$prog......"
&&&&numactl&--interleave=all&$mongod&$OPTIONS
&&&&RETVAL=$?
&&&&[&$RETVAL&-eq&0&]
&&&&return&$RETVAL
&&&&echo&-n&$"Stopping&$prog......"
&&&&/sbin/killproc&-9&$prog
&&&&RETVAL=$?
&&&&[&$RETVAL&-eq&0&]
&&&&return&$RETVAL
case&"$1"&in
&&&&start&
&&&&sleep&1&
&&&&start&
&&&&echo&$"Usage:&$prog&{start|stop|restart}"&
&&&&exit&1
esac& (1)、账号添加# /usr/local/mongodb/bin/mongo --host XXX.XXX.XXX.XXX --port 27017& & & …..& & )# vim /usr/local/haproxy/etc/haproxy.conf……#!/bin/sh
#======================================================================
##&MongoDB副本集PRIMARY角色异常监控告警
##&code&by&rocketzhang
#======================================================================
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin
MONGO_BIN_PATH="/usr/local/mongodb/bin/mongo"
MONITOR="/usr/local/oms/agent/alarm/BusMonitorAgent"
TOKEN="fengling_mongodb"
TITLE="MongoDB副本集PRIMARY角色异常监控"
SRV_IPADDR="10.153.224.44"
SRV_PORT="27017"
##&S代表TCP协议,U代表UDP协议
PROT_OPT="S"
SCAN_FLAG=0
HOSTS_FILE="/etc/hosts"
for&((i=0;&i&3;&i++));&do&
&&&&RETVAL=`/usr/bin/nmap&-n&-s${PROT_OPT}&-p&${SRV_PORT}&${SRV_IPADDR}&|&grep&open`&
&&&&[[&-n&"${RETVAL}"&]]&&&&SCAN_FLAG=1;break&||&sleep&10
if&[[&${SCAN_FLAG}&-eq&0&]];&then&
&&&&CONTENT="MongoDB集群存在异常,27017端口不可达!"&
&&&&${MONITOR}&-c&2&-f&${TOKEN}&-t&"${TITLE}"&-i&"${CONTENT}"
CURRENT_MONGO_MASTER=`awk&'/fl./{print&$1}'&/etc/hosts`
NEW_MONGO_MASTER=`${MONGO_BIN_PATH}&--host&${SRV_IPADDR}&-ucheck_health&-p'tenmongo$2356'&admin&--quiet&--eval&"printjson(rs.status())"&|&grep&-B&3&PRIMARY&|&awk&-F&':'&'/name/{print&$2}'&|&sed&'s/&"//'`
if&[[&"${NEW_MONGO_MASTER}"&!=&"${CURRENT_MONGO_MASTER}"&]];&then&
&&&&sed&-i&'/fl./d'&${HOSTS_FILE}&
&&&&echo&"${NEW_MONGO_MASTER}&&&&fl."&&&&${HOSTS_FILE}&
&&&&/sbin/service&nscd&restart&&/dev/null&2&&1&&
&&&&CONTENT="MongoDB副本集PRIMARY角色已自动切换,请尽快确认!"&
&&&&${MONITOR}&-c&2&-f&${TOKEN}&-t&"${TITLE}"&-i&"${CONTENT}"
fi&&提取密码:levr本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)&>&&>&&>&&>&mongodb分片与副本集详细配置方案
mongodb分片与副本集详细配置方案
上传大小:255KB
该文档详细讲述了对三个服务器的mongodb进行副本集与分片的部署。并给出测试方案和架构图。
嵌到我的页面
<input type="text" value="">
综合评分:4.4(18位用户评分)
所需积分:0
下载次数:52
审核通过送C币
创建者:zhizh
创建者:aotumemedazhao1996
课程推荐相关知识库
上传者其他资源上传者专辑
数据库热门标签
VIP会员动态
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
android服务器底层网络模块的设计方法
所需积分:0
剩余积分:720
您当前C币:0
可兑换下载积分:0
兑换下载分:
兑换失败,您当前C币不够,请先充值C币
消耗C币:0
你当前的下载分为234。
mongodb分片与副本集详细配置方案
会员到期时间:
剩余下载次数:
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:

我要回帖

更多关于 mongodb副本集搭建 的文章

 

随机推荐