简述:副本集合(Replica Sets),是一个基于主/从复制机制的复制功能,但增加了自动故障转移和恢复特性。一个集群最多可以支持7个服务器,并且任意节点都可以是主节点。所有的写操作都被分发到主节点,而读操作可以在任何节点上进行。
环境:CentOS 5.5 x64
md01 10.0.0.11
md02 10.0.0.12
md03 10.0.0.14
把以上主机名对应IP 添加到hosts文件
方法一:设置优先级
启动各节点:
md01
/elain
/apps
/mongodb
/bin
/mongod
--rest
--replSet elain
/md01:
27017
--master
--fork
--port
27017
--dbpath
/elain
/data
/mongodb
/db
/
--logpath
/elain
/logs
/mongodb
/mongodb.log
md02
/elain
/apps
/mongodb
/bin
/mongod
--rest
--replSet elain
/md02:
27017
--fork
--port
27017
--dbpath
/elain
/data
/mongodb
/db
/
--logpath
/elain
/logs
/mongodb
/mongodb.log
md03
/elain
/apps
/mongodb
/bin
/mongod
--rest
--replSet elain
/md03:
27017
--fork
--port
27017
--dbpath
/elain
/data
/mongodb
/db
/
--logpath
/elain
/logs
/mongodb
/mongodb.log
初始化节点:
md01:(登录其中任何一个节点操作皆可)
mongo
--port
27017
>rs.initiate
(
{
_id :
"elain",
members :
[
{_id :
1, host :
"md01:27017", priority:
2
},
{_id :
2, host :
"md02:27017", priority:
3
},
{_id :
3, host :
"md03:27017", priority:
4
},
]
}
);
#priority 是设置优先级的,默认优先级为1,可以是1-1000的数字
注:通常在同一个交换机上,同一个网内,通常使用优先级来设置 副本集就已经足够使用了
方法二:添加仲裁节点(这里设置在md02):
启动各节点:
md01
/elain
/apps
/mongodb
/bin
/mongod
--rest
--replSet elain
/md01:
27017
--fork
--port
27017
--dbpath
/elain
/data
/mongodb
/db
/
--logpath
/elain
/logs
/mongodb
/mongodb.log
md02
/elain
/apps
/mongodb
/bin
/mongod
--rest
--replSet elain
/md02:
27017
--fork
--port
27017
--dbpath
/elain
/data
/mongodb
/db
/
--logpath
/elain
/logs
/mongodb
/mongodb.log
md03
/elain
/apps
/mongodb
/bin
/mongod
--rest
--replSet elain
/md03:
27017
--fork
--port
27017
--dbpath
/elain
/data
/mongodb
/db
/
--logpath
/elain
/logs
/mongodb
/mongodb.log
#启动仲裁节点
在md02上
mkdir
/elain
/data
/mongodb
/arb
/elain
/apps
/mongodb
/bin
/mongod
--fork
--rest
--replSet elain
--dbpath
/elain
/data
/mongodb
/arb
--port
27015
--logpath
/elain
/logs
/mongodb
/mongodb.log
初始化节点:
md01:(登录其中任何一个节点操作皆可)
> rs.initiate
(
{
_id :
"elain",
members :
[
{_id :
1, host :
"md01:27017"
},
{_id :
2, host :
"md02:27017"
},
{_id :
3, host :
"md03:27017"
},
{_id :
4, host :
"md02:27015",
"arbiterOnly":
true
},
]
}
);
#验证
也可浏览:http://10.0.0.11:28017/_replSet 查看状态
#设置从库可读(从库上执行)
查看副本集状态
>rs.status
(
)
>user
local;
>rs.isMaster
(
)
>db.system.replset.find
(
)
查看当前主库:
>;db.
$cmd.findOne
(
{ismaster:
1
}
);