Replica sets复制集的搭建

本文详细介绍了如何通过MongoDB的ReplicaSets复制集功能来搭建一个高可用的数据库集群。主要内容包括创建数据文件存储路径、日志文件路径、主从key文件等步骤,并通过实例演示了启动三个MongoDB实例的过程,最后给出了配置及初始化复制集的方法。
MongoDB 高可用可用分两种:
Master-Slave 主从复制::
只需要在某一个服务启动时加上–master 参数,而另一个服务加上–slave 与–source 参数,
即可实现同步。 MongoDB 的最新版本已不再推荐此方案。
Replica Sets 复制集::
MongoDB 在 1.6 版本对开发了新功能 replica set,这比之前的 replication 功能要强大一
些,增加了故障自动切换和自动修复成员节点,各个 DB 之间数据完全一致,大大降低了维
护成功。 auto shard 已经明确说明不支持 replication paris,建议使用 replica set, replica set
故障切换完全自动。


1、 创建数据文件存储路径

  1. [root@localhost ~]# mkdir -p /data/data/r0
  2. [root@localhost ~]# mkdir -p /data/data/r1
  3. [root@localhost ~]# mkdir -p /data/data/r2


2、 创建日志文件路径

  1. [root@localhost ~]# mkdir -p /data/log


3、创建主从 key 文件,用于标识集群的私钥的完整路径,如果各个实例的 key file 内容不一
致,程序将不能正常用。

  1. [root@localhost ~]# mkdir -p /data/key
  2. [root@localhost ~]# echo "this is rs1 super secret key" > /data/key/r0
  3. [root@localhost ~]# echo "this is rs1 super secret key" > /data/key/r1
  4. [root@localhost ~]# echo "this is rs1 super secret key" > /data/key/r2
  5. [root@localhost ~]# chmod 600 /data/key/r*


4、启动 3 个实例

  1. [root@localhost ~]# /Apps/mongo/bin/mongod --replSet rs1 --keyFile /data/key/r0 --fork --port
  2. 28010 --dbpath /data/data/r0 --logpath=/data/log/r0.log --logappend
  3. all output going to: /data/log/r0.log
  4. forked process: 6573
  5. [root@localhost ~]# /Apps/mongo/bin/mongod --replSet rs1 --keyFile /data/key/r1 --fork --port
  6. 28011 --dbpath /data/data/r1 --logpath=/data/log/r1.log --logappend
  7. all output going to: /data/log/r1.log
  8. forked process: 6580
  9. [root@localhost ~]# /Apps/mongo/bin/mongod --replSet rs1 --keyFile /data/key/r2 --fork --port
  10. 28012 --dbpath /data/data/r2 --logpath=/data/log/r2.log --logappend
  11. all output going to: /data/log/r2.log
  12. forked process: 6585


5、配置及初始化 Replica Sets

  1. [root@localhost bin]# /Apps/mongo/bin/mongo -port 28010
  2. MongoDB shell version: 1.8.1
  3. connecting to: 127.0.0.1:28010/test
  4. > config_rs1 = {_id: 'rs1', members: [
  5. ... {_id: 0, host: 'localhost:28010', priority:1}, --成员 IP 及端口,最好是写ip那样就可以跨机器 , priority=1 指 PRIMARY
  6. ... {_id: 1, host: 'localhost:28011'},
  7. ... {_id: 2, host: 'localhost:28012'}]
  8. ... }
  9. {
  10. "_id" : "rs1",
  11. "members" : [
  12. {

  13. "_id" : 0,
  14. "host" : "localhost:28010"
  15. },
  16. {
  17. "_id" : 1,
  18. "host" : "localhost:28011"
  19. },
  20. {
  21. "_id" : 2,
  22. "host" : "localhost:28012"
  23. }
  24. ]
  25. }
  26. > rs.initiate(config_rs1); --初始化配置
  27. {
  28. "info" : "Config now saved locally. Should come online in about a minute.",
  29. "ok" : 1
  30. }



6查看复制集状态
> rs.status()

  1. {
  2. "set" : "rs1",
  3. "date" : ISODate("2012-05-31T09:49:57Z"),
  4. "myState" : 1,
  5. "members" : [
  6. {
  7. "_id" : 0,
  8. "name" : "localhost:28010",
  9. "health" : 1, --1 表明正常; 0 表明异常
  10. "state" : 1, -- 1 表明是 Primary; 2 表明是 Secondary;
  11. "stateStr" : "PRIMARY", --表明此机器是主库
  12. "optime" : {
  13. "t" : 1338457763000,
  14. "i" : 1
  15. },
  16. "optimeDate" : ISODate("2012-05-31T09:49:23Z"),
  17. "self" : true
  18. },
  19. {
  20. "_id" : 1,
  21. "name" : "localhost:28011",
  22. "health" : 1,
  23. 65 / 91
  24. "state" : 2,
  25. "stateStr" : "SECONDARY",
  26. "uptime" : 23,
  27. "optime" : {
  28. "t" : 1338457763000,
  29. "i" : 1
  30. },
  31. "optimeDate" : ISODate("2012-05-31T09:49:23Z"),
  32. "lastHeartbeat" : ISODate("2012-05-31T09:49:56Z")
  33. },
  34. {
  35. "_id" : 2,
  36. "name" : "localhost:28012",
  37. "health" : 1,
  38. "state" : 2,
  39. "stateStr" : "SECONDARY",
  40. "uptime" : 23,
  41. "optime" : {
  42. "t" : 1338457763000,
  43. "i" : 1
  44. },
  45. "optimeDate" : ISODate("2012-05-31T09:49:23Z"),
  46. "lastHeartbeat" : ISODate("2012-05-31T09:49:56Z")
  47. }
  48. ],
  49. "ok" : 1
  50. }


还可以用 isMaster 查看 Replica Sets 状态。

  1. rs1:PRIMARY> rs.isMaster()
  2. {
  3. "setName" : "rs1",
  4. "ismaster" : true,
  5. "secondary" : false,
  6. "hosts" : [
  7. "localhost:28010",
  8. "localhost:28012",
  9. "localhost:28011"
  10. ],
  11. "maxBsonObjectSize" : 16777216,
  12. "ok" : 1
  13. }



rs1:PRIMARY>rs.conf()
shard1:SECONDARY> use local
switched to db local
shard1:SECONDARY> db.system.replset.find()


 





来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29096438/viewspace-1800171/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29096438/viewspace-1800171/

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值