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、 创建数据文件存储路径
2、 创建日志文件路径
3、创建主从 key 文件,用于标识集群的私钥的完整路径,如果各个实例的 key file 内容不一
致,程序将不能正常用。
4、启动 3 个实例
5、配置及初始化 Replica Sets
6查看复制集状态
> rs.status()
还可以用 isMaster 查看 Replica Sets 状态。
rs1:PRIMARY>rs.conf()
shard1:SECONDARY> use local
switched to db local
shard1:SECONDARY> db.system.replset.find()
Master-Slave 主从复制::
只需要在某一个服务启动时加上–master 参数,而另一个服务加上–slave 与–source 参数,
即可实现同步。 MongoDB 的最新版本已不再推荐此方案。
Replica Sets 复制集::
MongoDB 在 1.6 版本对开发了新功能 replica set,这比之前的 replication 功能要强大一
些,增加了故障自动切换和自动修复成员节点,各个 DB 之间数据完全一致,大大降低了维
护成功。 auto shard 已经明确说明不支持 replication paris,建议使用 replica set, replica set
故障切换完全自动。
1、 创建数据文件存储路径
-
[root@localhost ~]# mkdir -p /data/data/r0
-
[root@localhost ~]# mkdir -p /data/data/r1
- [root@localhost ~]# mkdir -p /data/data/r2
2、 创建日志文件路径
- [root@localhost ~]# mkdir -p /data/log
3、创建主从 key 文件,用于标识集群的私钥的完整路径,如果各个实例的 key file 内容不一
致,程序将不能正常用。
-
[root@localhost ~]# mkdir -p /data/key
-
[root@localhost ~]# echo "this is rs1 super secret key" > /data/key/r0
-
[root@localhost ~]# echo "this is rs1 super secret key" > /data/key/r1
-
[root@localhost ~]# echo "this is rs1 super secret key" > /data/key/r2
-
[root@localhost ~]# chmod 600 /data/key/r*
4、启动 3 个实例
-
[root@localhost ~]# /Apps/mongo/bin/mongod --replSet rs1 --keyFile /data/key/r0 --fork --port
-
28010 --dbpath /data/data/r0 --logpath=/data/log/r0.log --logappend
-
all output going to: /data/log/r0.log
-
forked process: 6573
-
[root@localhost ~]# /Apps/mongo/bin/mongod --replSet rs1 --keyFile /data/key/r1 --fork --port
-
28011 --dbpath /data/data/r1 --logpath=/data/log/r1.log --logappend
-
all output going to: /data/log/r1.log
-
forked process: 6580
-
[root@localhost ~]# /Apps/mongo/bin/mongod --replSet rs1 --keyFile /data/key/r2 --fork --port
-
28012 --dbpath /data/data/r2 --logpath=/data/log/r2.log --logappend
-
all output going to: /data/log/r2.log
- forked process: 6585
5、配置及初始化 Replica Sets
-
[root@localhost bin]# /Apps/mongo/bin/mongo -port 28010
-
MongoDB shell version: 1.8.1
-
connecting to: 127.0.0.1:28010/test
-
> config_rs1 = {_id: 'rs1', members: [
-
... {_id: 0, host: 'localhost:28010', priority:1}, --成员 IP 及端口,最好是写ip那样就可以跨机器 , priority=1 指 PRIMARY
-
... {_id: 1, host: 'localhost:28011'},
-
... {_id: 2, host: 'localhost:28012'}]
-
... }
-
{
-
"_id" : "rs1",
-
"members" : [
-
{
-
-
"_id" : 0,
-
"host" : "localhost:28010"
-
},
-
{
-
"_id" : 1,
-
"host" : "localhost:28011"
-
},
-
{
-
"_id" : 2,
-
"host" : "localhost:28012"
-
}
-
]
-
}
-
> rs.initiate(config_rs1); --初始化配置
-
{
-
"info" : "Config now saved locally. Should come online in about a minute.",
-
"ok" : 1
- }
6查看复制集状态
> rs.status()
-
{
-
"set" : "rs1",
-
"date" : ISODate("2012-05-31T09:49:57Z"),
-
"myState" : 1,
-
"members" : [
-
{
-
"_id" : 0,
-
"name" : "localhost:28010",
-
"health" : 1, --1 表明正常; 0 表明异常
-
"state" : 1, -- 1 表明是 Primary; 2 表明是 Secondary;
-
"stateStr" : "PRIMARY", --表明此机器是主库
-
"optime" : {
-
"t" : 1338457763000,
-
"i" : 1
-
},
-
"optimeDate" : ISODate("2012-05-31T09:49:23Z"),
-
"self" : true
-
},
-
{
-
"_id" : 1,
-
"name" : "localhost:28011",
-
"health" : 1,
-
65 / 91
-
"state" : 2,
-
"stateStr" : "SECONDARY",
-
"uptime" : 23,
-
"optime" : {
-
"t" : 1338457763000,
-
"i" : 1
-
},
-
"optimeDate" : ISODate("2012-05-31T09:49:23Z"),
-
"lastHeartbeat" : ISODate("2012-05-31T09:49:56Z")
-
},
-
{
-
"_id" : 2,
-
"name" : "localhost:28012",
-
"health" : 1,
-
"state" : 2,
-
"stateStr" : "SECONDARY",
-
"uptime" : 23,
-
"optime" : {
-
"t" : 1338457763000,
-
"i" : 1
-
},
-
"optimeDate" : ISODate("2012-05-31T09:49:23Z"),
-
"lastHeartbeat" : ISODate("2012-05-31T09:49:56Z")
-
}
-
],
-
"ok" : 1
- }
还可以用 isMaster 查看 Replica Sets 状态。
-
rs1:PRIMARY> rs.isMaster()
-
{
-
"setName" : "rs1",
-
"ismaster" : true,
-
"secondary" : false,
-
"hosts" : [
-
"localhost:28010",
-
"localhost:28012",
-
"localhost:28011"
-
],
-
"maxBsonObjectSize" : 16777216,
-
"ok" : 1
- }
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/
本文详细介绍了如何通过MongoDB的ReplicaSets复制集功能来搭建一个高可用的数据库集群。主要内容包括创建数据文件存储路径、日志文件路径、主从key文件等步骤,并通过实例演示了启动三个MongoDB实例的过程,最后给出了配置及初始化复制集的方法。
918

被折叠的 条评论
为什么被折叠?



