1.安装副本集介绍
副本集(Replica Set)是一组MongoDB实例组成的集群,由一个主(Primary)服务器和多个备份(Secondary)服务器构成。通过Replication,将数据的更新由Primary推送到其他实例上,在一定的延迟之后,每个MongoDB实例维护相同的数据集副本。通过维护冗余的数据库副本,能够实现数据的异地备份,读写分离和自动故障转移。
也就是说如果主服务器崩溃了,备份服务器会自动将其中一个成员升级为新的主服务器。使用复制功能时,如果有一台服务器宕机了,仍然可以从副本集的其他服务器上访问数据。如果服务器上的数据损坏或者不可访问,可以从副本集的某个成员中创建一份新的数据副本。
早期的MongoDB版本使用master-slave,一主一从和MySQL类似,但slave在此架构中为只读,当主库宕机后,从库不能自动切换为主。目前已经淘汰master-slave模式,改为副本集,这种模式下有一个主(primary),和多个从(secondary),只读。支持给它们设置权重,当主宕掉后,权重最高的从切换为主。在此架构中还可以建立一个仲裁(arbiter)的角色,它只负责裁决,而不存储数据。此架构中读写数据都是在主上,要想实现负载均衡的目的需要手动指定读库的目标server。
官方文档地址:https://docs.mongodb.com/manual/replication/
2.mongodb副本集搭建
由于在本地虚拟机中,机器有限,搭建伪集群模拟
首先安装启动三个mongod进程 端口分别是:27017,27108,27019
具体步骤如下:
2.1 依次启动mongodb服务
①解压
tar zxvf mongodb-linux-x86_64-rhel62-3.6.3.tgz
②修改名称
mv mongodb-linux-x86_64-rhel62-3.6.3 mongodb1
③创建相应的文件夹
cd mongodb1
mkdir data //数据目录
mkdir logs //日志目录
mkdir conf // 配置文件目录
cd conf
touch mongo.conf //新建配置文件
|
④启动mongod服务
cd mongodb1
./bin/mongod -f conf/mongo.conf
至此mongodb1就启动起来了,依次启动mongodb2,mongodb3(注意修改暴露端口)
2.2 副本集配置
服务器启动之后,进入任意一个节点的命令行,将三个的实例关联起来
进入mongodb1的客户端:
cd mongodb1
./bin/mongo
|
初始化副本集的配置
|
当初始化配置信息后,可以明显的看到mongodb的命令行发生了变化,会显示出当前节点所属的副本集名称和节点类型。
再次进去mongodb1客户端:
发现mongodb1作为了主节点
至此,mongodb的副本集配置已经完成了,接下来是测试副本集是否可用
3.测试
3.1查看副本集状态
|
3.2 查看主节点信息
|
3.3 数据测试
插入100条数据
|
进入副本节点查看数据是否同步
|
当我们要查看从节点数据时,发现出错,这是因为从节点默认情况下是拒绝读取的,因此需开启读取功能
|
接着再查看数据,发现已经同步了
|