单机的缺点
- 单机部署MongoDB时,一旦进程发生故障或者服务宕机,业务将直接不可用。
- 单机情况下,一旦服务器上的磁盘发生损坏,数据很有可能会直接丢失,导致业务发生瘫痪,公司遭遇严重损失。
基于这两个原因,单机版并不适用于生产环境。生产环境需要更多的副本保证数据的安全性,同时在服务故障的情况下,自动进行恢复,达到服务的高可用。
副本集的作用
- 提升数据安全性,自动提供故障转移
- 可以进行读写分离,提升数据库并发读的访问能力,减轻单机负载
副本集的创建
示例中,所有成员都在同一个数据中心,为192.168.1.20,192.168.1.21,192.168.1.22。
(由于处于同一数据中心,如果中心不可用,则服务不能正常运转,生产环境中可以将两台服务器放在同一数据中心,这样只要主中心正常,就可以提供服务)
副本集选择主节点时,需要大多数节点的支持,这里的大多数定义为“一半以上的成员“。因此在副本集遭遇故障、异常的情况下如何保证“大多数”。基于该因素会有不同的拓扑结构。
拉取mongoDB镜像
docker pull mongo:4.4
创建配置文件
replication:
replSetName: "ant"
net:
bindIp: 0.0.0.0
port: 27017
security:
authorization: enabled
keyFile: /data/keyFile/mongo.keyfile
<