【MongoDB】MongoDB 2.6.5 版本 测试用Replset部署

来源:互联网 发布:cms色彩管理系统下载 编辑:程序博客网 时间:2024/06/05 02:14

【前言】MongoDB权威指南给的方式完全不能用,导致Replica Set的两章进行不下去了。在网上找过一些单机部署方案也不行。从官网找了一篇介绍如何部署测试ReplSet的方法,链接 大体都没错,但是有几个细节需要注意。我在这里一一讲述一下。


【环境】操作系统:windows-xp 32bit, MongoDB版本:2.6.5


【部署】在本机上解压缩MongoDB包,到目录E:\mongodb\replset下面


  • 进入到bin目录后,创建3个文件夹,分别是 r0_0, r0_1, r0_2。在r0_0目录下创建两个目录log和db,同样在r0_1,r0_2下分别创建两个目录log和db

  • 然后在bin下面写3个脚本文件,用来启动Replica Set的三个成员:

runRepal0.bat
mongod --port 27017 --replSet rep0 --smallfiles --oplogSize 128 --serviceName testDB --logpath./r0_0/log/r0_0.log  --journal --logappend  --dbpath./r0_0/db
pause


runRepal1.bat
mongod --port 27018 --replSet rep0 --smallfiles --oplogSize 128 --serviceName testDB --logpath./r0_1/log/r0_1.log  --journal --logappend  --dbpath./r0_1/db
pause


runRepal2.bat
mongod --port 27019 --replSet rep0 --smallfiles --oplogSize 128 --serviceName testDB --logpath./r0_2/log/r0_2.log  --journal --logappend  --dbpath./r0_2/db
pause

【caution】这三个脚本是在3个不同的port上启用mongod实例,并且他们的db文件夹不能相同。这里一定要在同一个/bin/目录下运行这3个脚本,否则添加不了secondes!--dbpath 指定的目标目录可以不在/bin/之下


分别运行这三个脚本。


  • 在dos shell下进入到E:\mongodb\replset\bin 目录下,运行mongo --port 27017进入mongo shell。在mongo shell中运行 rs.initiate()生成 Replica Set

屏幕上可能的返回如下

> rs.initiate()
{
        "info2" : "no configuration explicitly specified -- making one",
        "me" : "A20002287:27017",
        "info" : "Config now saved locally.  Should come online in about a minut
e.",
        "ok" : 1
}


此时默认是配置好了的,如果不放心可以运行一下rs.conf()


  • 现在添加seconds

rs.add("A20002287:27018")

rs.add("A20002287:27019")

【caution】这里的主机名,一定要和上面initiate()打印出的"me"中主机名一致。在windows中这个是计算机名,在linux中是其他的网络标示符,无论如何,这里保持一致即可。在windows下如果写成127.0.0.1:27018 或者 localhost:27018都会添加失败。在linux中,根据情况再看,总之按initiate()给的主机名没错。

添加成功会直接返回{"ok" : 1}


  • 然后调rs.conf() 可以看到状态,也可以调rs.status()看更详细的状态。

rep0:PRIMARY> rs.add("A20002287:27018")
{ "ok" : 1 }
rep0:PRIMARY> rs.add("A20002287:27019")
{ "ok" : 1 }
rep0:PRIMARY> rs.conf()
{
        "_id" : "rep0",
        "version" : 3,
        "members" : [
                {
                        "_id" : 0,
                        "host" : "A20002287:27017"
                },
                {
                        "_id" : 1,
                        "host" : "A20002287:27018"
                },
                {
                        "_id" : 2,
                        "host" : "A20002287:27019"
                }
        ]
}

【客户端连接】

部署好了之后,用Java驱动来连接这个Replica Set的时候,需要指定成员列表,像下面这样:

 MongoClient mongoClient = new MongoClient(Arrays.asList(   new ServerAddress("localhost", 27017),   new ServerAddress("localhost", 27018),   new ServerAddress("localhost", 27019)));
如果只用默认的连接方式,比如

MongoClient mongoClient = new MongoClient("localhost");当27017不是Master的时候,会throw error com.mongodb.CommandFailureException: { "serverUsed" : "localhost:27017" , "note" : "from execCommand" , "ok" : 0.0 , "errmsg" : "not master"}从而连接不上。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 生完小孩肚子瘦不下来怎么办 胆子小一个人在家里都害怕怎么办 怀了双胞胎两个宝宝很挤怎么办 飞机无人陪护如果接机延误该怎么办 过年要坐火车回家 狗狗怎么办 一岁八个月宝宝小腿弯怎么办 2岁宝不愿意坐马桶拉屎怎么办 宝宝两岁多肺炎出院还老咳嗽怎么办 去外国机场买机票不会说外语怎么办 坐飞机不能带的物品办理托运怎么办 深圳外地户口儿童要办身份证怎么办 网上订票错写了护照号怎么办 国航 在智能火车票订飞机票订反了怎么办 办社保卡的时候填错地址怎么办 两个人住酒店只有一张身份证怎么办 农村社保卡信息错了说改不了怎么办 社保卡与原医保卡信息错误怎么办 学校发的社保卡丢了怎么办 魔棒工具选中选区后再怎么办 微信每次打开都出现月球图案怎么办 仙人掌的刺扎手里弄不出来怎么办 保险交满15年领了一年死了怎么办 狗咬了出了点血怎么办 被小狗咬到了吃了海鲜怎么办 想给一个人道歉又不敢说怎么办 被尘封的故事中魔法师不见了怎么办 宝骏5602挡升3挡有点卡怎么办 剥开的榴莲没熟壳又扔了怎么办 视频播放器激活码设备超限了怎么办 ai如何把右边菜单栏隐藏了怎么办 矫正牙齿粘牙齿的胶掉了怎么办 3m双面胶生产的时候胶不干怎么办 新房赠送面积没地热想接地热怎么办 教育网注册报名的用户名忘了怎么办 艺术生校考通过文化没过本线怎么办 想做主持人 但不是播音专业怎么办 微信登录版本最低登录不上怎么办 所录微课的视频声音小是怎么办 电脑开机黑屏只有光标在闪怎么办 联想家悦重装系统时驱动缺失怎么办 ps做到一半电脑重启了怎么办