1. 前言
随着数据量的逐年增加,单个数据库已经不能满足高并发、海量数据存储的需求,主从架构应运而生。MongoDB主从架构是常用的一种,本文将介绍如何进行MongoDB主从搭建。
2. 主从概述
2.1 主从架构是什么
主从架构是由一个主节点和多个从节点组成的数据复制集群。主节点负责接受客户端请求,从节点负责同步主节点的数据。主节点可以执行写操作,从节点只能执行读操作,实现了分布式数据访问和高可用性。
2.2 主从架构优势
主从架构有着较好的读写分离和数据冗余备份的特点。同时,如果主节点发生故障,可以通过从节点自动选举出新的主节点,提高了系统的可用性。
2.3 主从架构缺陷
主从架构有一定的延迟,因为从节点必须等待主节点的操作完成后才能同步数据。同时,主从架构也存在单点故障的问题,如果主节点发生故障,需要从节点选举新的主节点,期间服务可能会中断。
3. MongoDB主从搭建
3.1 安装MongoDB
在进行MongoDB主从搭建之前,需要先安装MongoDB。
以Ubuntu系统为例,安装命令如下:
sudo apt-get install mongodb
3.2 配置主从节点
在配置主从节点之前,需要先了解以下几个概念:
主节点:接受客户端请求,写入操作。
从节点:从主节点同步数据,只能读取数据。
副本集:由主节点和从节点组成的复制集群。
Oplog:操作日志,记录所有主节点的写操作。
步骤如下:
创建主节点配置文件mongod_primary.conf,配置文件内容如下:
port=27017
dbpath=/data/mongodb/primary
logpath=/var/log/mongodb/primary/mongo.log
logappend=true
oplogSize=1000
fork=true
replSet=myReplicaSet
其中,port为端口号,dbpath为数据存储目录,logpath为日志文件存储目录,oplogSize为日志文件大小,fork为后台运行。
replSet为副本集名称,所有主从节点的副本集名称必须相同。
创建从节点配置文件mongod_secondary1.conf,配置文件内容如下:
port=27018
dbpath=/data/mongodb/secondary1
logpath=/var/log/mongodb/secondary1/mongo.log
logappend=true
fork=true
replSet=myReplicaSet
创建从节点配置文件mongod_secondary2.conf,配置文件内容如下:
port=27019
dbpath=/data/mongodb/secondary2
logpath=/var/log/mongodb/secondary2/mongo.log
logappend=true
fork=true
replSet=myReplicaSet
启动主节点并进入MongoDB交互界面,执行以下代码:
mongo
rs.initiate()
依次启动从节点,进入MongoDB交互界面,执行以下代码:
rs.add("127.0.0.1:27018")
rs.add("127.0.0.1:27019")
4. 测试主从复制
4.1 写入数据
在主节点MyPrimary创建数据库mydb,并添加一个数据记录。
mongo
use mydb
db.myCollection.insertOne({"name":"mongoDB"})
4.2 读取数据
在从节点MySecondary1和MySecondary2中读取mydb数据库中的数据,如果从节点同步数据成功,可以在从节点中查询到刚才写入的数据记录。
mongo 127.0.0.1:27018
use mydb
db.myCollection.find().pretty()
mongo 127.0.0.1:27019
use mydb
db.myCollection.find().pretty()
5. 总结
本文详细介绍了如何进行MongoDB主从搭建,并进行测试。主从架构的优点在于可以实现高可用性和读写分离,但同时也存在一定的延迟和单点故障的问题。