设为首页 收藏本站
查看: 929|回复: 0

[经验分享] mongdb 副本集

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-12-2 09:40:22 | 显示全部楼层 |阅读模式
二,mongo  副本集
副本集也是一个主从的同步,不过他支持主从的自动切换
这里的master不是固定的,因为副本集会根据选举来决定谁是master,而且,当一个master挂掉以后,会进行重新选举,选出新master,踢掉挂掉的机器
配置步骤:
hostname   rac1.example.com   192.168.78.130
hostname   rac2.example.com   192.168.78.131
首先每个机器的/etc/hosts 文件中,都有服务器ip对应的主机名
步骤一:
在130上
启动mongo:
. [iyunv@rac1 bin]# ./mongod --dbpath=/root/data --logpath=/root/data/mongo.log --logappend --fork --port=10001  --replSet test/rac1.example.com:10001
forked process: 6661
all output going to: /root/data/mongo.log
child process started successfully, parent exiting
在131上:
[iyunv@rac2 bin]# ./mongod --dbpath=/root/data --logpath=/root/data/mongo.log --logappend --fork --port=10002 --replSet test/rac2.example.com:10002
forked process: 5617
all output going to: /root/data/mongo.log
child process started successfully, parent exiting
下面进行初始化
> use admin
switched to db admin
> db.runCommand({"replSetInitiate":{"_id":"test","member":[{"_id":1,"host":"rac1.example.com:10001"},{"_id":2,"host":"rac2.example.com:10002"}]}})
如果在这里报错了,是因为没有初始化成功,我们需要使用rs.initiate() 进行初始化
> rs.initiate()
{
        "info2" : "no configuration explicitly specified -- making one",
        "me" : "rac1.example.com:10001",
        "info" : "Config now saved locally.  Should come online in about a minute.",
        "ok" : 1
}
成功后,我们查看一下,会发现提示符已经变化了,提示符的前面test表示这个副本集的名字,后面表示primary
test:PRIMARY> use local     
switched to db local
test:PRIMARY> show dbs
local   0.140625GB
pincer  0.0625GB
test:PRIMARY> show collections
oplog.$main
oplog.rs
slaves
system.indexes
system.replset
通过system.replset去查看状态
test:PRIMARY> db.system.replset.find()
{ "_id" : "test", "version" : 1, "members" : [ { "_id" : 0, "host" : "rac1.example.com:10001" } ] }
这里可以看到,这里只有一个member  rac1  但是rac2不见了
我们去rac2 机器上,发现这里还是没有加入,  
通过rs命令,我们去rac1上执行
新加,则用rs.add("rac2.example.com:10002"))
}
test:PRIMARY> rs.add("rac2.example.com:10002")
然后过一会,发现rac2上的状态变了
test:STARTUP2>
test:SECONDARY>
通过提示符,可以看到状态从startup 变成secondary了
然后再查看一下状态
test:SECONDARY> rs.status()
{
        "set" : "test",
        "date" : ISODate("2013-08-08T02:24:07Z"),
        "myState" : 2,
        "syncingTo" : "rac1.example.com:10001",
        "members" : [
                {
                        "_id" : 0,
                        "name" : "rac1.example.com:10001",
                        "health" : 1,
                        "state" : 1,
                        "stateStr" : "PRIMARY",
                        "uptime" : 54,
                        "optime" : Timestamp(1376785130000, 1),
                        "optimeDate" : ISODate("2013-08-18T00:18:50Z"),
                        "lastHeartbeat" : ISODate("2013-08-08T02:24:05Z"),
                        "pingMs" : 1
                },
                {
                        "_id" : 1,
                        "name" : "rac2.example.com:10002",
                        "health" : 1,
                        "state" : 2,
                        "stateStr" : "SECONDARY",
                        "uptime" : 1514,
                        "optime" : Timestamp(1376785130000, 1),
                        "optimeDate" : ISODate("2013-08-18T00:18:50Z"),
                        "self" : true
                }
        ],
        "ok" : 1
}
也可以使用一下方法初始化
cfg={"_id":1,members:[{"_id":1,"host":"rac1.example.com:10001"},{"_id":2,"host":"rac2.example.com:10002"}]}
rs.initiate(cfg)
新加,则用rs.add("rac2.example.com:10002"))
下面做个自动切换,到130 上去关闭mongo
test:PRIMARY> use admin
switched to db admin
test:PRIMARY> db.shutdownServer()
Sun Aug 18 08:46:45 DBClientCursor::init call() failed
Sun Aug 18 08:46:45 query failed : admin.$cmd { shutdown: 1.0 } to: 127.0.0.1:10001
server should be down...
Sun Aug 18 08:46:45 trying reconnect to 127.0.0.1:10001
Sun Aug 18 08:46:45 reconnect 127.0.0.1:10001 failed couldn't connect to server 127.0.0.1:10001
> exit
bye
然后到131上,过1分总登陆上去
[iyunv@rac2 bin]# ./mongo rac2.example.com:10002/admin
MongoDB shell version: 2.2.2
connecting to: rac2.example.com:10002/admin
test:PRIMARY>
这时提示符都已经变成primary了,可以在这里插入和查询了
从下面可以看到,rac1的statestr变成了"SECONDARY"
test:PRIMARY> rs.status()
{
        "set" : "test",
        "date" : ISODate("2013-08-08T02:58:19Z"),
        "myState" : 1,
        "members" : [
                {
                        "_id" : 0,
                        "name" : "rac1.example.com:10001",
                        "health" : 1,
                        "state" : 2,
                        "stateStr" : "SECONDARY",
                        "uptime" : 374,
                        "optime" : Timestamp(1376786436000, 1),
                        "optimeDate" : ISODate("2013-08-18T00:40:36Z"),
                        "lastHeartbeat" : ISODate("2013-08-08T02:58:18Z"),
                        "pingMs" : 1
                },
                {
                        "_id" : 1,
                        "name" : "rac2.example.com:10002",
                        "health" : 1,
                        "state" : 1,
                        "stateStr" : "PRIMARY",
                        "uptime" : 3566,
                        "optime" : Timestamp(1376786436000, 1),
                        "optimeDate" : ISODate("2013-08-18T00:40:36Z"),
                        "self" : true
                }
        ],
        "ok" : 1
}
也可以使用一下方法初始化
cfg={"_id":1,members:[{"_id":1,"host":"rac1.example.com:10001"},{"_id":2,"host":"rac2.example.com:10002"}]}
rs.initiate(cfg)



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-146167-1-1.html 上篇帖子: mongodb常用基本管理命令 下篇帖子: mongdb 主从搭建
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表