mongodb副本集(PSA)添加新节点
OS:Centos 7
mongodb:4.4.22
当前环境
192.168.107 primary
192.168.104 secondary
192.168.106 arbiter
新添加机器ip为:192.168.1.108 作为从库加入(secondary)
1.解压
[root@test soft]# tar -xvf mongodb-linux-x86_64-rhel70-4.4.22.tgz
[root@test soft]# mv mongodb-linux-x86_64-rhel70-4.4.22 /usr/local/services/mongodb
2.创建相应目录
[root@test services]# mkdir -p /usr/local/services
[root@test services]# mkdir -p /home/middle/mongodb/data
[root@test services]# mkdir -p /home/middle/mongodb/log
[root@test services]# mkdir -p /home/middle/mongodb/key
[root@test services]# mkdir -p /home/middle/mongodb/conf
[root@test services]# mkdir -p /home/middle/mongodb/run
3.拷贝当前的密钥文件到新机器
scp keyfile root@192.168.1.108:/home/middle/mongodb/key/
4.创建配置文件 mongo.cnf
vi /home/middle/mongodb/conf/mongo.cnf
port=29001
fork=true
dbpath=/home/middle/mongodb/data
logpath=/home/middle/mongodb/log/mongodb.log
pidfilepath=/home/middle/mongodb/run/29001.pid
logappend=true
shardsvr=true
replSet=myrepl
bind_ip=192.168.1.108,127.0.0.1
oplogSize=16384
logRotate=reopen
keyFile=/home/middle/mongodb/key/keyfile
auth=true
5.启动
/usr/local/services/mongodb/bin/mongod -f /home/middle/mongodb/conf/mongo.cnf
6.登录主库(192.168.1.107)添加新节点
我们在副本集扩容的情况下,新加入节点一般设置priority和votes都为0,
即不会选为主(priority默认1,也没有投票特性votes默认1,有投票权)
待新节点数据同步完成后再进行修改
[root@localhost ~]# /usr/local/services/mongodb/bin/mongo localhost:29001
myrepl:PRIMARY> use admin
myrepl:PRIMARY> db.auth("test","test123");
myrepl:PRIMARY> rs.add({ host: "192.168.1.108:29001", priority: 0, votes: 0 })
这个时候查看集群的状态,新加入的节点状态为STARTUP2,正在初始化同步数据,副本集数据量大的情况下,初始化需要些时间.
等新节点初始化完成后,状态会修改为SECONDARY
7.修改priority和votes属性
myrepl:PRIMARY>cfg = rs.conf()
myrepl:PRIMARY>cfg.members[3].priority = 1
myrepl:PRIMARY>cfg.members[3].votes = 1
myrepl:PRIMARY>rs.reconfig(cfg)
好像当前环境至少存在一个从节点以上才能这样执行.
8.查看集群配置
myrepl:PRIMARY> rs.conf()
{
"_id" : "myrepl",
"version" : 23827,
"protocolVersion" : NumberLong(1),
"writeConcernMajorityJournalDefault" : true,
"members" : [
{
"_id" : 0,
"host" : "192.168.1.104:29001",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"slaveDelay" : NumberLong(0),
"votes" : 1
},
{
"_id" : 3,
"host" : "192.168.1.106:29001",
"arbiterOnly" : true,
"buildIndexes" : true,
"hidden" : false,
"priority" : 0,
"tags" : {
},
"slaveDelay" : NumberLong(0),
"votes" : 1
},
{
"_id" : 4,
"host" : "192.168.1.107:29001",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"slaveDelay" : NumberLong(0),
"votes" : 1
},
{
"_id" : 5,
"host" : "192.168.1.108:29001",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"slaveDelay" : NumberLong(0),
"votes" : 1
}
],
"settings" : {
"chainingAllowed" : true,
"heartbeatIntervalMillis" : 2000,
"heartbeatTimeoutSecs" : 10,
"electionTimeoutMillis" : 10000,
"catchUpTimeoutMillis" : -1,
"catchUpTakeoverDelayMillis" : 30000,
"getLastErrorModes" : {
},
"getLastErrorDefaults" : {
"w" : 1,
"wtimeout" : 0
},
"replicaSetId" : ObjectId("64b0a3f881b811c4931d4d4c")
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?