1. 规划副本集架构
- 作用:确定副本集成员的数量、角色(主节点、从节点、仲裁节点)以及每个成员的部署位置。合理规划有助于确保副本集的高可用性、数据一致性和性能。例如,一个典型的三节点副本集可以由一个主节点、一个从节点和一个仲裁节点组成,这样在主节点故障时,从节点能快速接管成为新主节点。
2. 初始化配置文件
- 创建配置文件:在每个MongoDB成员节点对应的服务器上创建配置文件,例如
mongod.conf
。
- 作用:配置文件用于指定MongoDB实例的各种参数,使实例按预期运行。
- 配置基本参数:
systemLog.path
:指定日志文件路径,如/var/log/mongodb/mongod.log
。
- 作用:方便定位和排查运行过程中出现的问题,记录实例运行时的各种事件和错误信息。
storage.dbPath
:指定数据存储路径,如/var/lib/mongodb
。
- 作用:确定数据库文件存储位置,保证数据的持久化存储。
net.bindIp
:指定绑定的IP地址,通常设为服务器的IP,如192.168.1.100
,也可设为0.0.0.0
监听所有网络接口。
- 作用:决定实例可以接受哪些IP地址的连接请求,保证网络访问的安全性和正确性。
net.port
:指定端口号,默认27017
。
- 作用:用于客户端与MongoDB实例通信,不同实例需使用不同端口号以避免冲突。
- 配置副本集相关参数:添加
replication
配置块,例如:
replication:
replSetName: myReplSet
- 作用:
replSetName
指定副本集名称,所有要加入该副本集的节点必须使用相同的副本集名称,以此来标识和管理副本集成员。
3. 启动成员节点
- 依次启动每个成员节点:使用配置文件启动MongoDB实例,例如在Linux系统下执行
mongod -f /etc/mongod.conf
。
- 作用:使MongoDB实例按照配置文件的设定开始运行,准备加入副本集。
4. 初始化副本集
- 连接到其中一个节点:使用
mongo
命令行工具连接到副本集中的任意一个节点,如mongo --host 192.168.1.100 --port 27017
。
- 作用:建立与MongoDB实例的交互会话,以便执行副本集初始化操作。
- 初始化副本集配置:在mongo shell中执行初始化命令,例如:
rs.initiate({
_id: "myReplSet",
members: [
{ _id: 0, host: "192.168.1.100:27017" },
{ _id: 1, host: "192.168.1.101:27017" },
{ _id: 2, host: "192.168.1.102:27017" }
]
})
- 作用:
_id
指定副本集名称,与配置文件中的replSetName
一致;members
数组列出了副本集的所有成员节点信息,此命令告知MongoDB哪些节点属于该副本集,并选举出初始主节点。
5. 添加仲裁节点(如果需要)
- 连接到主节点:在mongo shell中连接到当前副本集的主节点。
- 添加仲裁节点:执行添加仲裁节点命令,例如:
rs.addArb("192.168.1.103:27017")
- 作用:仲裁节点不存储数据,只参与主节点选举,添加仲裁节点可影响选举结果,确保在部分节点故障时能顺利选出新主节点,增强副本集的稳定性。