环境准备
51~53都需要安装MongoDB服务,并设置对应的ip地址跟端口
副本集介绍
- 也称为MongoDB复制
- 指在多个服务器上存储数据副本,并实现数据同步
- 提高数据可用性、安全性、方便数据故障恢复
MongoDB复制原理
- 副本集工作过程
至少需要两个节点,其中一个是主节点,负责处理客户端请求,其余是从节点,负责复制主节点数据 - 常见搭配方式:一主一从、一主多从
- 主节点记录所有操作oplog,从节点定期轮询主节点获取获取这些操作,然后对自己的数据副本执行这些操作,从而保证从节点的数据与主节点一致
副本集实现方式
- Master-Salve主从复制
启动一台服务器时加上 “-master” 参数,做为主节点
启动其他服务器时加上“-slave” 和 “-source” 参数,做为从节点 - 主从复制的优点
从节点可以提供数据查询,降低主节点的访问压力
由从节点执行备份,避免锁定主节点数据
当主节点故障时,可快速切换到从节点,实现高可用 - Replica Sets副本集
从1.6版本开始支持,优于之前的replication
支持故障自动切换、自动修复成员节点,降低运维成本
Replica Sets副本集的结构类似高可用集群
配置Replica Sets
一、运行MongoDB服务
- 启动服务时,指定主机所在副本集名称
所有副本集成员使用相同的副本集名称 - –replSet rs1 //指定副本集名称
51~53上操作
- 修改配置文件,指定副本集
[root@ip51 ~]# mstop
[root@ip51 ~]# vim /usr/local/mongodb/etc/mongodb.conf
... ...
replSet rs1
[root@ip51 ~]# mstart
二、配置节点信息
- 在任意一台主机连接mongodb服务,执行如下操作
[root@ip51 ~]# /usr/local/mongodb/bin/mongo --host 192.168.4.51 --port 27051
> config = {
_id:"rs1",
members:[
{_id:0,host:"192.168.4.51:27051"},
{_id:1,host:"192.168.4.52:27052"},
{_id:2,host:"192.168.4.53:27053"}
]
};
- 初始化Replica Sets环境
- 执行如下命令
> rs.initiate(config)
{
"ok" : 1,
"operationTime" : Timestamp(1558755758, 1),
"$clusterTime" : {
"clusterTime" : Timestamp(1558755758, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
}
}
- 查看副本集信息
-查看状态信息
> rs.st