MongoDB Replica Sets测试
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,之前采用Master-Slave模式的时候,一旦Master停掉,Java客户端就会报异常,这个时候已经没有Master了,Slave不会自动接管Master Replica Sets 也是一种Mas
千家信息网最后更新 2026年11月02日MongoDB Replica Sets测试之前采用Master-Slave模式的时候,一旦Master停掉,Java客户端就会报异常,这个时候已经没有Master了,Slave不会自动接管Master Replica Sets 也是一种Master-Slave,但它更健壮,一旦Master停掉后,将会在Slave中选举一个作为Master,这种方式也是官方推荐的。可以参考http://www.mongodb.org/display/DOCS/Replica+Sets 测试Replica Sets非常简单,在单台服务器上,建了三个用户来测试。 为了简化测试,先把启动脚本写好 #!/bin/sh #filename start.sh #usage sh start.sh port if [ $# != 1 ] ; then
echo "USAGE: $0 [port]"
exit 1;
fi
MONGODB_HOME=$HOME/work/mongodb
DATA_PATH=$MONGODB_HOME/data
LOG_PATH=$MONGODB_HOME/logs/mongodb.log
MONGODB_PORT=$1
$MONGODB_HOME/bin/mongod --rest --replSet=testset --dbpath=$DATA_PATH --port=$MONGODB_PORT --fork --logpath=$LOG_PATH
用户一:db1 >sh start.sh 30000 用户一:db2 >sh start.sh 40000 此时,两个用户下的mongodb没有任何关系,日志文件输出 Fri Aug 5 23:35:01 [startReplSets] replSet can't get local.system.replset config from self or any seed (EMPTYCONFIG)
Fri Aug 5 23:35:01 [startReplSets] replSet info you may need to run replSetInitiate -- rs.initiate() in the shell 意思是还没初始化,现在我们来初始化两个mongodb,使之建立master-slave关系 在db1下 >./mongo --port=30000
MongoDB shell version: 1.8.2
connecting to: 127.0.0.1:30000/test
>use admin
>cfg={
"_id" : "myset",
"version" : 1,
"members" : [
{
"_id" : 0,
"host" : "10.16.46.113:30000"
},
{
"_id" : 1,
"host" : "10.16.46.113:40000"
}
]}
>rs.initiate(cfg) 稍等片刻,在db1的日志里就可以看到如下信息,表明db1上的mongodb已经成为master Fri Aug 5 23:43:05 [rs Manager] replSet info electSelf 0
Fri Aug 5 23:43:05 [rs Manager] replSet PRIMARY 在控制台中通过 rs.status() 查看它们之间的关系 现在来往集群中添加一个mongodb 在用户三:db3中启动mongodb >sh start.sh 50000 起好后 在master中将db3的mongodb加到集群中 testset:PRIMARY>rs.add("10.16.46.113:50000")
稍等片刻,通过rs.status()查看集群中的节点 测试master停机的情况,看一下java客户端调用情况,停掉后客户端会有异常日志,但并没有像之前的master-slave那样报错 通过rs.status(),另外一个节点已经成为PRIMARY服务节点
echo "USAGE: $0 [port]"
exit 1;
fi
MONGODB_HOME=$HOME/work/mongodb
DATA_PATH=$MONGODB_HOME/data
LOG_PATH=$MONGODB_HOME/logs/mongodb.log
MONGODB_PORT=$1
$MONGODB_HOME/bin/mongod --rest --replSet=testset --dbpath=$DATA_PATH --port=$MONGODB_PORT --fork --logpath=$LOG_PATH
用户一:db1 >sh start.sh 30000 用户一:db2 >sh start.sh 40000 此时,两个用户下的mongodb没有任何关系,日志文件输出 Fri Aug 5 23:35:01 [startReplSets] replSet can't get local.system.replset config from self or any seed (EMPTYCONFIG)
Fri Aug 5 23:35:01 [startReplSets] replSet info you may need to run replSetInitiate -- rs.initiate() in the shell 意思是还没初始化,现在我们来初始化两个mongodb,使之建立master-slave关系 在db1下 >./mongo --port=30000
MongoDB shell version: 1.8.2
connecting to: 127.0.0.1:30000/test
>use admin
>cfg={
"_id" : "myset",
"version" : 1,
"members" : [
{
"_id" : 0,
"host" : "10.16.46.113:30000"
},
{
"_id" : 1,
"host" : "10.16.46.113:40000"
}
]}
>rs.initiate(cfg) 稍等片刻,在db1的日志里就可以看到如下信息,表明db1上的mongodb已经成为master Fri Aug 5 23:43:05 [rs Manager] replSet info electSelf 0
Fri Aug 5 23:43:05 [rs Manager] replSet PRIMARY 在控制台中通过 rs.status() 查看它们之间的关系 现在来往集群中添加一个mongodb 在用户三:db3中启动mongodb >sh start.sh 50000 起好后 在master中将db3的mongodb加到集群中 testset:PRIMARY>rs.add("10.16.46.113:50000")
稍等片刻,通过rs.status()查看集群中的节点 测试master停机的情况,看一下java客户端调用情况,停掉后客户端会有异常日志,但并没有像之前的master-slave那样报错 通过rs.status(),另外一个节点已经成为PRIMARY服务节点
用户
测试
客户
客户端
日志
节点
集群
两个
情况
时候
服务
健壮
三个
中将
之间
信息
官方
意思
控制台
文件
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
上海睿民互联网科技有限公司
互联网属科技
今日互联网科技
科技类互联网
互联网科技英文
互联网科技排名
深圳齐家互联网科技
致聘互联网科技
亿账通互联网科技
四个字互联网科技公司取名
老年人脱离互联网科技的作文
云创客互联网科技公司
常德市电业局互联网科技部
河南猎农互联网科技有限公司
民营互联网公司国防科技
互联网公司黑科技创始人
四川互联网展示科技馆设计
全球科技与互联网公司市值变化
湖北辰鑫科技互联网
互联网科技大会大佬
互联网科技海报
圆梦互联网科技
互联网金融科技创新
人人互联网科技是培训
阿大互联网科技有限公司
四川互联网展示科技馆设计
山东蛋芒互联网科技有限公司
互联网金融金融科技
每日互联网科技新闻
科技发展第三阶段互联网时代