Mongdb replica sets 复制集高可用方案

三台副本集组成sets高可用方案

ip1:192.168.3.10

ip1:192.168.3.11

ip1:192.168.3.12


三台分别创建keyfile 文件,keyfile文件用于集中服务器之间认证通信,服务器之间通信是通过keyfile认证的,效率高,外部API调用(PHP)还是通过auth认证的

echo "mongodb keyfile for sets" > /home/keyfile/ky


三台启动:

mongod --port=27017 --dbpath=/home/mongodb/data --logpath=/home/mongodb/logs/logs  --replSet rs1 --keyfile=/home/keyfile/ky  --directoryperdb

###--replSet rs1  名称rs1 重点, 

启动时可以不使用 --auth参数,因为使用了 --keyFile就必须验证,也就是隐含了 --auth。但是--auth并不隐含 --keyFile。

启动完后

mongo 连接任意一台主机

use admin

rs1={_id:'rs1',members:[{_id:0,host:'192.168.3.10:27017',priority:10},{_id:1,host:'192.168.3.11:27017',prority:9},{_id:2,host:'192.168.3.12',prority:8}]}

###prority 优先级,优先级越高,发生故障升主机率越大

rs.initiate(rs1)

rs.status()

###rs.primary即证明此台服务器是主


动态增加删除

rs.add("localhost:28013") ,使用rs.status()查看下rs的状态。

rs.remove("localhost:28014")  ##删除时必须集群内全部正常在线,否则删除出错


###mongodb默认取优先级最高的一台做为主服务器,当主服务器挂掉,剩下的正常服务器中优先级最高的一台自动升为主服务器,不过当只剩下最后一台从服务器正常时,从服务器不能升为主服务器

主服务器有读写权限,从服务器默认没有任何权限,不过可以在从服务器运行

db.getMongo().setSlaveOk()

从库可以读,分担主库的压力


replset中最少要三台服务器,mongodb采用奇怪的切换方式,三台只能两台可用,若连续两台都挂了,第三台只能读数据,不能自动提升为主服务器,如果4台组成replset,也最多只有两台可用,第三四台也不能自动提升为主服务器,只有replset五台服务器时才有三台可用,

这个mongodb比较蛋疼,利用率太低了,比较浪费机器,mongodb的切换策略是剩下的正常机器一定要比已挂掉的机器数目多才能切换过去,少于或者相等都不行,如4台只能用两台,挂了两台后第三台是没法切换过去的,五台可利用三台,六台也只能用三台,七台可利用4台,太蛋疼了!!!



PHP高可用连接

$m = new MongoClient("mongodb://192.168.3.10:27017,192.168.3.11:27017,192.168.3.12:27017/?replicaSet=rs1");
$db=$m->test;
$col=$db->aa;
$col->insert(array('333'=>'3333'));

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值