(学习自黑马)
下载对应linux版本MongoDB
源码下载地址:https://www.mongodb.com/download-center#community
目前在一台服务器开三个端口模拟三个mongodb,
配置一个主节点27017,
一个从节点27018,
一个仲裁者27019
配置主节点,副节点,仲裁节点
(下面的创建文件一共有三份,通过不同的端口号实现 , 将配置文件的端口修改成对应节点端口即可,注意路径也要跟着修改)
#创建文件log日志文件data数据文件 conf配置文件
mkdir -p /mongodb/replica_sets/myrs_{端口号}/log \ &
mkdir -p /mongodb/replica_sets/myrs_{端口号}/data/db
vim /mongodb/replica_sets/myrs_{端口号}/mongod.conf
mongod.conf文件内容
systemLog:
destination: file
path: "/mongodb/replica_sets/myrs_{端口号}/log/mongod.log"
logAppend: true
storage:
dbPath: "/mongodb/replica_sets/myrs_{端口号}/data/db"
journal:
#启用或禁用持久性日志以确保数据文件保持有效和可恢复。
enabled: true
processManagement:
#启用在后台运行mongos或mongod进程的守护进程模式。
fork: true
#指定用于保存mongos或mongod进程的进程ID的文件位置,其中mongos或mongod将写入其PID
pidFilePath: "/mongodb/replica_sets/myrs_{端口号}/log/mongod.pid"
net:
#服务实例绑定所有IP,有副作用,副本集初始化的时候,节点名字会自动设置为本地域名,而不是ip
#bindIpAll: true
#服务实例绑定的IP 本机ip
bindIp: localhost,192.168.0.252 #bindIp
#绑定的端口
port: {端口号}
replication:
#副本集的名称
replSetName: myrs
启动mongodb: (三个都要启动)
/{你上传的mongodb路径}/mongod -f
/mongodb/replica_sets/myrs_{端口号}/mongod.conf
查看启动状态 出现三个服务代表启动成功
ps -ef | grep 'mongo'
[root@CentOS7 ~]# ps -ef | grep 'mongo'
root 27598 1 0 10:15 ? 00:00:17 /application/mongoBD/mongodb/bin/mongod -f /mongodb/replica_sets/myrs_27017/mongod.conf
root 29589 1 0 10:59 ? 00:00:06 /application/mongoBD/mongodb/bin/mongod -f /mongodb/replica_sets/myrs_27018/mongod.conf
root 30045 1 0 11:08 ? 00:00:04 /application/mongoBD/mongodb/bin/mongod -f /mongodb/replica_sets/myrs_27019/mongod.conf
进入主节点,这时使用show dbs命令会报错需要执行初始化副本集
rs.initiate()
执行完成后, show dbs 命令成功
添加从节点
rs.add("192.168.0.252:27018")
查看状态
rs.status()
members里面即为集群配置
"members" : [
{
"_id" : 0,
"name" : "192.168.0.252:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 4840,
"optime" : {
"ts" : Timestamp(1678332988, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2023-03-09T03:36:28Z"),
"syncingTo" : "",
"syncSourceHost" : "",
"syncSourceId" : -1,
"infoMessage" : "",
"electionTime" : Timestamp(1678331608, 1),
"electionDate" : ISODate("2023-03-09T03:13:28Z"),
"configVersion" : 2,
"self" : true,
"lastHeartbeatMessage" : ""
},
{
"_id" : 1,
"name" : "192.168.0.252:27018",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 40,
"optime" : {
"ts" : Timestamp(1678332988, 1),
"t" : NumberLong(1)
},
"optimeDurable" : {
"ts" : Timestamp(1678332988, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2023-03-09T03:36:28Z"),
"optimeDurableDate" : ISODate("2023-03-09T03:36:28Z"),
"lastHeartbeat" : ISODate("2023-03-09T03:36:34.887Z"),
"lastHeartbeatRecv" : ISODate("2023-03-09T03:36:34.099Z"),
"pingMs" : NumberLong(0),
"lastHeartbeatMessage" : "",
"syncingTo" : "192.168.0.252:27017",
"syncSourceHost" : "192.168.0.252:27017",
"syncSourceId" : 0,
"infoMessage" : "",
"configVersion" : 2
}
]
添加仲裁节点
rs.addArb("192.168.0.252:27019")
此时在查看状态members里面会多出仲裁节点
登录从节点
/{路径}/bin/mongo --host 192.168.0.252 --port=27018
此时使用show dbs报错
设置为从节点
rs.slaveOk()
此时使用show dbs 成功 现在可实现了读写分离,让主插入数据,让从来读取数据
登录仲裁者节点
/{路径}/bin/mongo --host 192.168.0.252 --port=27019
设置为仲裁节点
rs.slaveOk()
完成