mongodb6.0.13 搭建复制集PSA
一、材料
mongodb:6.0.13
mongosh:2.1.5
openssl-1.1.1w
系统:redhat4.8
二、模式
PDA: 一个主节点(Primary)、 一个延迟副节点(Secondary)、一个仲裁节点(arbiter)
PDA | 主节点 | 延迟副节点 | 仲裁节点 |
名称 | Primary | Secondary | Arbiter |
端口 | 27017 | 27018 | 27019 |
三、安装步骤
工具自己的系统下载对应的安装包并解压的
根据自己的系统下载对应的安装包 mongodb: https://www.mongodb.com/try/download/community mongosh: https://www.mongodb.com/try/download/shell 创建安装目录 mkdir -m 755 /usr/local/mongodb/ 解压 tar -zxvf mongodb-linux-x86_64-rhel70-6.0.13.tgz tar -zxvf mongosh-1.10.6-linux-x64-openssl11.tgz 将软件移动到安装目录 mv ./mongodb-linux-x86_64-rhel70-6.0.13/bin /usr/local/mongodb/ mv ./mongosh-1.10.6-linux-x64-openssl11/ /usr/local/mongodb/mongosh 创建数据库数据和日志目录 主节点: mkdri -m 755 /data/mongodb/27017/data mkdri -m 755 /data/mongodb/27017/log 延迟副节点: mkdri -m 755 /data/mongodb/27018/data mkdri -m 755 /data/mongodb/27018/log 仲裁节点: mkdri -m 755 /data/mongodb/27019/data mkdri -m 755 /data/mongodb/27019/log
四、配置文件
创建三个配置文件,每个配置文件的内容著需要修改相对硬的端口 和 日志 数据库 目录
/usr/local/mongodb/mongodb27017.conf
/usr/local/mongodb/mongodb27018.conf
/usr/local/mongodb/mongodb27019.conf
systemLog: #MongoDB发送所有日志输出的目标指定为文件 destination: file #mongod或mongos应向其发送所有诊断日志记录信息的日志文件的路径 path: "/data/mongodb/27017/data/log/mongod.log" #当mongos或mongod实例重新启动时,mongos或mongod会将新条目附加到现有日志文件的末尾。 logAppend: true storage: #每个数据库创建单独目录 directoryPerDB: true #mongod实例存储其数据的目录。storage.dbPath设置仅适用于mongod。 dbPath: "/data/mongodb/27017/data/data/" journal: #启用或禁用持久性日志以确保数据文件保持有效和可恢复。 enabled: true wiredTiger: engineConfig: directoryForIndex: true processManagement: #启用在后台运行mongos或mongod进程的守护进程模式。 fork: true #指定用于保存mongos或mongod进程的进程ID的文件位置,其中mongos或mongod将写入其PID pidFilePath: "/data/mongodb/27017/data/log/mongod.pid" net: #服务实例绑定所有IP,有副作用,副本集初始化的时候,节点名字会自动设置为本地域名,而不是ip #bindIpAll: true #服务实例绑定的IP bindIp: localhost,192.168.142.12 #绑定的端口 port: 27017 replication: #副本集的名称 replSetName: jxkshu oplogSizeMN: 1024 #Security: # authorization: disabled #disabled 关闭认证 enabled 开启认证 # clusterAuthMode: keyFile # keyFile: "/usr/local/mongodb/mongodb.keyfile"
五、启动
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/mongodb27017.conf /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/mongodb27018.conf /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/mongodb27019.conf tips: /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/mongodb27019.conf --shutdown #关闭
六、配置复制集
任意登录一个实例(推荐你登陆希望它成为主节点的哪个实例) /usr/local/mongodb/mongosh/bin/mongosh --host 127.0.0.1 -port 27017 切换到admin use admin 实例化复制集让该节点变成主节点 rs.initiate({ _id:"jxkshu", #复制集名称就是 replSetName members:[ { _id:0, host:"192.168.142.12:27017" } ] }) 继续添加副本集 rs.add("192.168.142.12:27018") 可以使用rs.status() 查看情况 添加仲裁节点 rs.addArb("192.168.142.12:27019") 配置完成 使用rs.status() 查看情况,如果一切送礼 表示搭建完成
七、延迟副节点
主要未来防止误操作 比如删库 误删除数据什么的 将27018 实例 变更成延迟副节点
use admin #将复制集配置信息复制到变量cfg中 cfg = rs.conf() #查看cfg.members 列表信息 发现 27018 的_id是 1 #修改 cfg.members[1].hidden = true #隐藏该节点 不然客户端读取 cfg.members[1].priority = 0 #设置被选举权 不让起成为主节点 cfg.members[1].secondaryDelaySecs = 3600 # 副节点延迟3600秒 在同步 cfg.members[1].votes = 0 #设置退票数 不让它成为主节点 #重新就在复制集配置 rs.reconfig(cfg) #或者 rs.reconfigForPSASet(1, cfg) #1 是27018 的_id是 1 #然复制集重新选举
Note:建议操作之前先通过 rs.help() 看看 其内部函数作用及参数详解 ,了解一下原理
可恶的cs/dn 不要再来偷我的博客了 太恶心啦