千家信息网

mongodb复制集的实现

发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,复制集(Replica Sets),是一个基于主/从复制机制的复制功能,进行同一数据的异步同步,从而使多台机器拥有同一数据的都多个副本,由于有自动故障转移和恢复特性,当主库宕机时不需要用户干预的情况下
千家信息网最后更新 2025年01月31日mongodb复制集的实现

复制集(Replica Sets),是一个基于主/从复制机制的复制功能,进行同一数据的异步同步,从而使多台机器拥有同一数据的都多个副本,由于有自动故障转移和恢复特性,当主库宕机时不需要用户干预的情况下自动切换到其他备份服务器上做主库,一个集群最多可以支持7个服务器,并且任意节点都可以是主节点。所有的写操作都被分发到主节点,而读操作可以在任何节点上进行,实现读写分离,提高负载。

资源有限测试一个VM开3个实例:

环境:centos7.0

192.168.1.21:20011 P

192.168.1.21:20012 S

192.168.1.21:20013 A

mongodb verson:3.2

搭建过程:

1、下载包、并解压

2、添加相关的目录文件

[root@localhost mongodb27017]# ll

总用量 8

drwxr-xr-x. 2 root root 4096 12月 17 00:59 bin

drwxr-xr-x. 2 root root 30 12月 17 10:47 conf

drwxr-xr-x 4 root root 4096 12月 17 11:19 data

drwxr-xr-x. 2 root root 20 12月 17 01:13 key

drwxr-xr-x. 2 root root 23 12月 17 10:20 logs

#3个实例配置一样

3、解压包下bin目录下的所有文件到cp到当前的创建的bin目录下

4、3个实例的配置文件一致


[root@localhost conf]# cat mongodb27017.conf

port=20011#每个实例端口,根据实际来配置

dbpath=/export/mongodb27017/data #数据目录

logpath=/export/mongodb27017/logs/mongod.log #日志目录

fork=true

logappend=true

#keyFile=/export/mongodb27017/key/mongodb#后面介绍

nohttpinterface=true

replSet=mongodb ##复制集的名字,

5、启动3个实例:


/export/mongodb27018/bin/mongod -f /export/mongodb27018/conf/mongodb27018.conf

/export/mongodb27019/bin/mongod -f /export/mongodb27019/conf/mongodb27019.conf

/export/mongodb27017/bin/mongod -f /export/mongodb27017/conf/mongodb27017.conf

#需要把解压包bin目录下文件分别拷贝到这3个启动目录下,或者一个作为basedir也可以,其他分开

6、配置复制集

/export/mongodb27017/bin/mongo --port 20011#根据自己实际的定义,进入数据库

1、配置成员的关系:

config = {_id:"mongodb", members:[{_id:0,host:"192.168.1.21:20011", priority : 3}]} (给了优先级为3,mongodb为复制集的名)

2、初始化:

>rs.initiate(config);

3、添加备节点、仲裁节点


rs.add("192.168.1.21:20012") 添加备节点

rs.addArb("192.168.1.21:20013") 添加仲裁节点

rs.status()#查看状态

rs.conf()#查看副本集成员及其优先级(看好成员的顺序,优先级从1-100,越大的优先级越高)


config=rs.conf() 进行优先级设置

config.members[0].priority = 3 设置主节点优先级为3

config.members[1].priority = 2 设置备节点优先级为2

config.members[2].priority = 1 设置仲裁节点优先级为1

rs.remove("ip:port") 移除已经存在的成员

rs.reconfig(config) 保存配置,生效

7、设置备节点为slave

mongodb:SECONDARY> show dbs

2016-12-17T12:26:22.621+0800 E QUERY [thread1] Error: listDatabases failed:{ "ok" : 0, "errmsg" : "not master and slaveOk=false", "code" : 13435 } :

登陆到20012实例上执行:rs.slaveOk()

8、测试主节点宕机是否能够切换

总结:

mongoDB的主从模式其实就是一个单副本的应用,没有很好的扩展性和容错性。而副本集具有多个副本保证了容错性,就算一个副本挂掉了还有很多副本存在,并且解决了上面第一个问题"主节点挂掉了,整个集群内会自动切换",如果节点挂了,它会重新选举新的主节点。对于普通的业务能够满足,但高并发的话,复制集是无法满足,就需要shard的,实现集群高可用,可以借助LVS或者其他。





节点 优先级 副本 目录 实例 配置 数据 文件 成员 集群 仲裁 切换 多个 实际 容错性 服务器 容错 服务 测试 普通 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 信息网络安全监察这个专业如何 网络安全对密码的描述正确的是 台湾软件开发工作待遇 数据库科德 java软件开发工程师就业分析 神武怎么看服务器等级 数据库怎么查询某个月 流媒体服务器开发 mysql返回数据库列表 斗破苍穹手游服务器有什么区别 深圳共进电子软件开发怎么样 计算机软件开发的过程 网络安全比赛指比赛什么内容 优质软件开发服务好的商家 摩莎串口服务器找不到COM口 服务器什么时候更新一次 MQ实现ES与数据库同步 电话是网络技术吗 深圳市智科网络技术有限公司 网络技术的评价标准 手机移动网络服务器有问题 数据库技术三级2019 应急资源数据库 安卓软件开发的架构是什么 灌云进口网络技术排名靠前 中科院宁波软件开发中心 软件开发需求审核 河南惠普服务器虚拟化设计云空间 saoml怎么添加服务器 游戏更新出现与服务器连接被重置
0