MongoDB Replica Sets测试
发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,之前采用Master-Slave模式的时候,一旦Master停掉,Java客户端就会报异常,这个时候已经没有Master了,Slave不会自动接管Master Replica Sets 也是一种Mas
千家信息网最后更新 2025年02月04日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安全错误
数据库的锁怎样保障安全
数据库一致性报错
软件开发技术评价
狗策划服务器怎么样
数据库获取系统日期时间
人脸识别服务器有用吗
戴尔服务器机房标准
数据库复制整个表
ado访问数据库原理图
管理系统用什么数据库
西集镇网络安全产业园近况
企业数据管理硬盘服务器群晖
关键词钢琴谱软件开发
电商专业数据库
DNS服务器有哪些安全吗
甘肃省网络安全审判
益阳软件开发报价
甲骨文数据库多大
持续网络安全红蓝对抗攻防平台
入选网络安全征文
智能3d软件开发
什么样的程序没有数据库
网络安全技术1级
数据库删除的数据可以找回吗
服装工序工价数据库
finebi添加本地数据库表
安卓pc软件开发
什么查重数据库有往届本科论文
oracl数据库游标的使用
海康视威sip服务器地址
软件开发有几种常用的网络图