Mongodb----部署副本集 实现读写分离

使用软件:

xshell7 vmware16 centos8 nosql booster

1 部署副本集

推荐方案:

为了降低资源分配,这里仅使用一台服务器,但是分配3个端口(27017、27018、27019)来分别实现 主节点、副本节点、和仲裁节点的功能。副本集各服务器的基本信息及角色分配如下

|----------|----------------|------|----------|
| 虚拟机 | ip地址 | 成员角色 | 主机名 |
| nosql_01 | 192.168.22.100 | 主节点 | Server01 |
| nosql_02 | 192.168.22.100 | 副本节点 | server01 |
| nosql_03 | 192.168.22.100 | 仲裁节点 | server01 |

所有节点的存放数据和日志的目录请放在/usr/local/mongodb/replica_sets路径下:

1.创建主节点

操作代码:

#1、主节点,建立存放数据和日志的目录(代码粘贴下方):

复制代码
mkdir -p /usr/local/mongodb/replica_sets/myrs_27017/logs \ & mkdir -p
/usr/local/mongodb/replica_sets/myrs_27017/data/db

#2、新建或修改配置文件(代码粘贴下方):

复制代码
vi /usr/local/mongodb/replica_sets/myrs_27017/mongod.conf

#3、mongod.conf配置文件中的内容,副本集的名称使用姓名全拼+rs,例如replSetName:

LiMingrs(代码粘贴下方):

复制代码
systemLog:
#MongoDB发送所有日志输出的目标指定为文件
##The path of the log file to which mongod or mongos should send all
diagnostic logging information
destination: file
#mongod或mongos应向其发送所有诊断日志记录信息的日志文件的路径
path: "/usr/local/mongodb/replica_sets/myrs_27017/logs/mongologs.log"
#当mongos或mongod实例重新启动时,mongos或mongod会将新条目附加到现有日志文件的末尾。
logAppend: true
storage:
#mongod实例存储其数据的目录。storage.dbPath设置仅适用于mongod。
##The directory where the mongod instance stores its data.Default Value is
"/data/db".
dbPath: "/usr/local/mongodb/replica_sets/myrs_27017/data/db"
journal:
#启用或禁用持久性日志以确保数据文件保持有效和可恢复。
enabled: true
processManagement:
#启用在后台运行mongos或mongod进程的守护进程模式。
fork: true
#指定用于保存mongos或mongod进程的进程ID的文件位置,其中mongos或mongod将写入其PID
pidFilePath: "/usr/local/mongodb/replica_sets/myrs_27017/logs/mongod.pid"
net:
#服务实例绑定所有IP,有副作用,副本集初始化的时候,节点名字会自动设置为本地域名,而不是ip
#bindIpAll: true
#服务实例绑定的IP

bindIp: localhost,192.168.22.100
#bindIp
#绑定的端口,默认是27017
port: 27017
replication:
#副本集的名称
replSetName: wuweixianrs

#4、启动节点服务:

复制代码
mongod -f /usr/local/mongodb/replica_sets/myrs_27017/mongod.conf

2.创建副本节点:

#1、副本节点,建立存放数据和日志的目录(代码粘贴下方):

复制代码
mkdir -p /usr/local/mongodb/replica_sets/myrs_27018/logs \ & mkdir -p /usr/local/mongodb/replica_sets/myrs_27018/data/db

#2、新建或修改配置文件(代码粘贴下方):

复制代码
 vi /usr/local/mongodb/replica_sets/myrs_27018/mongod.conf

#3、mongod.conf配置文件中的内容,副本集的名称使用姓名全拼+rs,例如replSetName: LiMingrs(代码粘贴下方):

复制代码
systemLog:
#MongoDB发送所有日志输出的目标指定为文件
##The path of the log file to which mongod or mongos should send all
diagnostic logging information
destination: file
#mongod或mongos应向其发送所有诊断日志记录信息的日志文件的路径
path: "/usr/local/mongodb/replica_sets/myrs_27018/logs/mongologs.log"
#当mongos或mongod实例重新启动时,mongos或mongod会将新条目附加到现有日志文件的末尾。
logAppend: true
storage:
#mongod实例存储其数据的目录。storage.dbPath设置仅适用于mongod。
##The directory where the mongod instance stores its data.Default Value is
"/data/db".
dbPath: "/usr/local/mongodb/replica_sets/myrs_27018/data/db"
journal:
#启用或禁用持久性日志以确保数据文件保持有效和可恢复。
enabled: true
processManagement:
#启用在后台运行mongos或mongod进程的守护进程模式。
fork: true
#指定用于保存mongos或mongod进程的进程ID的文件位置,其中mongos或mongod将写入其PID
pidFilePath: "/usr/local/mongodb/replica_sets/myrs_27018/logs/mongod.pid"
net:
#服务实例绑定所有IP,有副作用,副本集初始化的时候,节点名字会自动设置为本地域名,而不是ip
#bindIpAll: true
#服务实例绑定的IP
bindIp: localhost,192.168.22.100
#bindIp
#绑定的端口,默认是27018
port: 27018
replication:
#副本集的名称
replSetName: wuweixianrs

#4、启动节点服务:

复制代码
mongod -f /usr/local/mongodb/replica_sets/myrs_27018/mongod.conf

3.创建仲裁节点:

#1、仲裁节点,建立存放数据和日志的目录(代码粘贴下方):

复制代码
 mkdir -p /usr/local/mongodb/replica_sets/myrs_27019/logs \ & mkdir -p /usr/local/mongodb/replica_sets/myrs_27019/data/db

#2、新建或修改配置文件(代码粘贴下方):

复制代码
 vi /usr/local/mongodb/replica_sets/myrs_27019/mongod.conf

#3、mongod.conf配置文件中的内容,副本集的名称使用姓名全拼+rs,例如replSetName: LiMingrs(代码粘贴下方):

复制代码
systemLog:
#MongoDB发送所有日志输出的目标指定为文件
##The path of the log file to which mongod or mongos should send all
diagnostic logging information
destination: file
#mongod或mongos应向其发送所有诊断日志记录信息的日志文件的路径
path: "/usr/local/mongodb/replica_sets/myrs_27019/logs/mongologs.log"
#当mongos或mongod实例重新启动时,mongos或mongod会将新条目附加到现有日志文件的末尾。
logAppend: true
storage:
#mongod实例存储其数据的目录。storage.dbPath设置仅适用于mongod。
##The directory where the mongod instance stores its data.Default Value is
"/data/db".
dbPath: "/usr/local/mongodb/replica_sets/myrs_27019/data/db"
journal:
#启用或禁用持久性日志以确保数据文件保持有效和可恢复。
enabled: true
processManagement:
#启用在后台运行mongos或mongod进程的守护进程模式。
fork: true
#指定用于保存mongos或mongod进程的进程ID的文件位置,其中mongos或mongod将写入其PID
pidFilePath: "/usr/local/mongodb/replica_sets/myrs_27019/logs/mongod.pid"
net:
#服务实例绑定所有IP,有副作用,副本集初始化的时候,节点名字会自动设置为本地域名,而不是ip
#bindIpAll: true
#服务实例绑定的IP
bindIp: localhost,192.168.22.100
#bindIp
#绑定的端口,默认是27019
port: 27019
replication:
#副本集的名称
replSetName: wuweixianrs

#4、启动节点服务:

复制代码
 mongod -f /usr/local/mongodb/replica_sets/myrs_27019/mongod.conf

4.启动服务

执行 ps -ef|grep mongod 查看端口是否已启动服务

5.初始化配置副本集和主节点

使用客户端命令连接任意一个节点,但这里尽量要连接主节点(27017节点):

复制代码
mongo --port=27017

6.查看副本集的配置内容:

复制代码
rs.conf()

7.查看副本集状态

8.添加副本从节点

复制代码
rs.add("192.168.22.100:27018")

9.添加仲裁从节点

复制代码
rs.addArb("192.168.22.100:27019"

2 副本集操作

副本集的数据读写操作

目标:测试三个不同角色的节点的数据读写情况。
1.登录主节点27017 使用mongo shell 登录主节点27017,写入和读取数据:
复制代码
mongo --host=192.168.22.100 --port=27017
2.登录从节点27018:

使用mongo shell 登录从节点,读取测试数据

复制代码
mongo --host=192.168.22.100 --port=27018
相关推荐
张璐月2 小时前
mysql join语句、全表扫描 执行优化与访问冷数据对内存命中率的影响
数据库·mysql
全干engineer4 小时前
ClickHouse 入门详解:它到底是什么、优缺点、和主流数据库对比、适合哪些场景?
数据库·clickhouse
Hellyc6 小时前
基于模板设计模式开发优惠券推送功能以及对过期优惠卷进行定时清理
java·数据库·设计模式·rocketmq
lifallen6 小时前
Paimon LSM Tree Compaction 策略
java·大数据·数据结构·数据库·算法·lsm-tree
{⌐■_■}10 小时前
【Kafka】登录日志处理的三次阶梯式优化实践:从同步写入到Kafka多分区批处理
数据库·分布式·mysql·kafka·go
isNotNullX10 小时前
数据中台架构解析:湖仓一体的实战设计
java·大数据·数据库·架构·spark
睿思达DBA_WGX13 小时前
由 DB_FILES 参数导致的 dg 服务器无法同步问题
运维·数据库·oracle
袋鼠云数栈14 小时前
使用自然语言体验对话式MySQL数据库运维
大数据·运维·数据库·后端·mysql·ai·数据治理·数栈·data+ai
阿里云大数据AI技术14 小时前
数据 + 模型 驱动 AI Native 应用发展
大数据·数据库·人工智能