MongoDB Replica Sets测试
发表于:2024-10-11 作者:千家信息网编辑
千家信息网最后更新 2024年10月11日,之前采用Master-Slave模式的时候,一旦Master停掉,Java客户端就会报异常,这个时候已经没有Master了,Slave不会自动接管Master Replica Sets 也是一种Mas
千家信息网最后更新 2024年10月11日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安全错误
数据库的锁怎样保障安全
京东互联网科技有限公司
汽车车载网络技术配图
网络安全反诈演讲
关系数据库中的除法
一调数据库地类代码符号
制作软件开发流程图
上海智慧养老管理平台软件开发
燃烧的远征火锤服务器
江西少儿编程平台软件开发
软件开发什么资源最重要
广州市泓泽网络技术有限公
服务器正版系统
数据库如何添加一个代码
分布式测控网络技术讲解
如何上传数据库的文件
荣耀全明星服务器爆满怎么办
陕西地道的计算机网络技术
电脑方舟服务器模组介绍
网络安全工作四个坚持
数据库实数类型
平安软件开发面试多久有结果
河南奥江网络技术
网络安全意识有关文
论文数据库被盗下载追责
数据库开发认证
学软件开发用什么手机好
电脑开机提示数据库被打开
软件开发是属于0税率还是
广州万睿网络技术有限公司
全军网络安全宣传周