mongodb 副本集学习

原创 2015年11月20日 14:51:05
机器内存一定大于4G 要不然会失败
linux下的安装管理
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.4.tgz
tar -zxvf mongodb-linux-x86_64-3.0.4.tgz
mv  mongodb-linux-x86_64-3.0.4 mongodb
创建一个mongodb的文件夹
mkdir -p /data/app/mongodb
mkdir -p /data/app/mongodb/db
mkdir -p /data/app/mongodb/log
mkdir -p /data/app/mongodb/config
创建配置文件
vim /data/app/mongodb/mongodb.conf
port=27017                //端口
dbpath=/home/kkm/mongodb/db    //数据库存放地方
logpath=/home/kkm/mongodb/log/mongodb.log    //日志文件地址
logappend=true        //日志追加的方式
fork=true        //以守护进程的方式运行MongoDB,创建服务器进程
auth=true        //启用验证
replSet=mktest
其他的见别的文件

启动mongodb
/home/kkm/mongodb/bin/mongod -f /home/kkm/mongodb/config/mongodb.conf


然后进入任意一个机器的shell下
./bin/mongo
config={"_id":"mktest","members":[{"_id":0,"host":"xxx.xxx.146.220:27017"},{"_id":1,"host":"xxx.xxx.146.144:27017"},{"_id":2,"host":"xxxx.xxx.148.211:27017"}]}
rs.initiate(config)
如果出现结果 ok=1 那么就成功了
db.person.insert({"name":"mkk"})
在另外两台机器上
db.person.find();
如果出现错误  { "$err" : "not master and slaveOk=false", "code" : 13435 }
在上面配置
rs.slaveOk();
缺点是每次进入shell都需要这个命令。。可以用以下方案解决
vim ~/.mongorc.js 每次打开shell都会自动加载这个文件

rs.slaveOk();


mongodb 副本集 多台机器中同一时刻只有一台是用于写操作,这为mongoDB提供了数据一致性的保障.担当Primary角色的机器能把读操作分发给slave机器

修改副本集
rs.add("server-4:27017")
rs.remove("server-1:27017")
重新配置副本集时 主节点会退化成普通节点,以便接受新的配置,然后会恢复,这个期间副本集中暂时没有主节点 之后会恢复正常
修改配置信息
var config=rs.config()
config.members[1].host="server-2:27017"

rs.reconfig(config)


选举仲裁者
当剩下的可用节点数是偶数的时候 这时候就需要仲裁者投票了
如果可能 尽量在副本集中使用奇数个数的数据成员 而不要使用仲裁者

优先级 优先级用于表示一个成员渴望成为主节点的程序 范围是0-100 默认是1  优先级为0的永远不能成为主节点
rs.add({"_id":4,"host":"xxx","priority":1.5}) 添加一个优先级为1.5的成员
如果设置成功。。那么之前默认为1的主节点就会自动退位,这个节点就会成为新的主节点,但是如果数据不是最新的 那么需要等数据更新完成之后才会成为主节点

隐藏成员
隐藏成员不会作为复制源
var config=rs.config()
config.members[2].hidden = 0
config.members[2].priority=0
rs.reconfig(config)

延迟备份节点
主要是为了防止不小心删除主数据库,延迟备份节点比主节点延迟一定的时间 秒  如果不小心删除了主数据库 可以在这个时间内把数据恢复过来
slaveDelay

创建索引
有时候 备份节点并不需要与主节点拥有相同的索引,甚至可以没有索引。可以使用 buildIndex : false 阻止备份创建索引
另外这个选项是需要成员的优先级为0



从应用程序链接到副本集

等待写入复制
如果希望不管发生什么都将写入操作保存到副本集中,那么必须要确保写入操作被同步到了副本集的 大多数
使用getLastError命令检查写入是否成功,也可以使用这个命令来确保写入操作被复制到备份节点
db.runCommand({"getLastError":1,"w":"majority"})
假设在执行这个命令的时候 只有主节点和一个仲裁节点可以用。那么主节点就无法将这个写入操作复制到副本集中的任何成员,getlasterror并不知道需要等待多久,所以会一直等待下去
db.runCommand({"getLastError":1,"w":"majority","wtimeout":1000})
设置getlasterror等待1000秒
通常使用w来控制写入速度,mongodb的写入速度太快,主节点上执行完毕之后,备份节点来不及跟上。
定期调用getlasterror把w的参数值设置成大于1的值  如果w的值只1的话 相当于没有设置这个参数

副本集只允许在主节点上进行写操作
如果考虑写入之后马上读取 并且负载均衡的话 应该使用 分片


副本集管理
单机启动 主要是把这个主节点重新用另外一个端口启动,那么这个副本集就会重新选择一个主节点。。然后在操作完成之后把这个节点重新加入到副本集中 那么它会自动与其他的副本集中的节点进行同步

副本集最多只能拥有12个成员

主节点降为备份节点 并维持60秒
rs.stepDown(60)

复制单个数据库的情况下 可以使用主从模式   或者需要11台以上的备份节点
主从模式可以切换成副本集模式
副本集模式也可以模仿主从模式



MongoDB:副本集的配置

MongoDB学习记录(一):副本集的配置使用副本集的原因 数据安全性 数据的高可用性(读写分离) 灾备恢复 维护方便 。。。 mongodb的副本集优势与mysql的副本集相比,mongodb副本集...
  • u011041412
  • u011041412
  • 2017年08月11日 15:05
  • 418

mongodb replset副本集部署 优先级设置priority

设置mongodb的副本集方式部署优先级问题
  • luoni186
  • luoni186
  • 2017年08月18日 14:14
  • 148

一边搭建一边理解MongoDB副本集(分布于两个或多个数据中心的副本集)

一边搭建一边理解MongoDB副本集(分布于两个或多个数据中心的副本集)作者:链上研发-175405 时间:2017-01-21概览尽管副本集提供了对于单节点故障的基础保护,那些位于同一个数据中心...
  • fang_sh_lianjia
  • fang_sh_lianjia
  • 2017年01月21日 16:50
  • 574

一边搭建一边理解MongoDB副本集(副本集协议版本)

一边搭建一边理解MongoDB副本集(副本集协议版本) MongoDB提供了副本集协议0(pv0)和副本集协议1(pv1): pv0降低了使用写关注w:1回滚的可能性。但是,pv0导致在某些网络...
  • fang_sh_lianjia
  • fang_sh_lianjia
  • 2017年02月05日 14:29
  • 275

mongodb副本集删除方法

mongodb副本集删除方法 起因:由于要搭建一个mongodb的测试环境,所以从原来的一台服务器上克隆了一个过来,上面有三个mongodb实例,组成了一个副本集。 副本集的设置也一起copy过来了,...
  • huwei2003
  • huwei2003
  • 2015年09月14日 16:42
  • 6821

MongoDb的副本集测试

1.正确安装MongoDb 2, 创建3个虚拟机,分别是wzq-mongo1, wzq-mongo2, wzq-mongo3. 其中三个虚拟机分别对应的IP如下 wzq-mongo1  - 》 ...
  • u013298318
  • u013298318
  • 2016年08月24日 15:42
  • 617

MongoDB3.2副本集配置

终于把副本集配置完成了,网上的资料太乱了,等弄好了再看官网才发现官网写的最清晰和简洁 推荐官网的副本集配置:https://docs.mongodb.com/manual/tutorial/deplo...
  • rainyspring4540
  • rainyspring4540
  • 2016年09月19日 18:28
  • 977

MongoDB 副本集+分片 架构部署

Replica Set + Sharding  配置部署准备工作架构设计 需要三台机器(racdb,host8,host9):数据节点,sharding2片每个sharding为Replic Set方...
  • lichangzai
  • lichangzai
  • 2016年03月18日 23:52
  • 6322

MongoDB 副本集及其工作原理

一、工作原理 1.   MongoDB 2.6版本开始推荐使用副本集,对主从复制已经不再推荐. 2.   副本集至少需要3个, 可以3个全部做副本集, 也可以让其中一个做仲裁. 3.   副本集中只有...
  • m582445672
  • m582445672
  • 2015年11月24日 09:23
  • 2222

Mongodb副本集配置

一:概念  通俗的讲副本集就是用多台机器进行同一数据的异步同步,从而使多台机器拥有同一数据的多个副本,并且当主库当掉时在不需要用户干预的情况下自动切换其他备份服务器做主库。而且还可以利用副本服务器...
  • YABIGNSHI
  • YABIGNSHI
  • 2015年07月16日 11:52
  • 1488
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mongodb 副本集学习
举报原因:
原因补充:

(最多只允许输入30个字)