mongodb 的副本集相关整理

本文介绍了MongoDB的副本集创建过程,强调至少需要3台机器,以172.16.31.105(主)、172.16.31.106(从和仲裁)为例,详细讲解了安装、配置文件创建、启动MongoDB服务以及设置副本集名称的步骤。

mongo的副本集创建

mongo的副本集建议至少3台机器,当然你也可以选择一台机器开三个端口

我这里有两台机器,分别是172.16.31.105和172.16.31.106 ,105上是主,106上从和仲裁(一主一从一仲裁),端口分别是1111   222   333

1.安装mongo到三个配置中

      安装包最好去官网下载,下载解压即可

创建配置文件 (3个配置文件都一样,端口区分一下就好了)

mkdir  -p /usr/local/mongodb/conf

mkdir -p /home/data/mongodb/data

vim /usr/local/mongodb/conf/mongodb.conf

#bind_ip=0.0.0.0
port=1111
dbpath=/home/data/mongodb/data
logpath=/home/data/mongodb/mongodb.log
logappend=true
oplogSize=2048
maxConns=2000
replSet=test        #副本集的名称
noauth=true
httpinterface=true

2. 之后分别启动3个mongo

mongod -f /usr/local/mongodb/conf/mongodb.conf --replSet test --logappend &  #启动方式都一样注意指明启动配置文件就好了

--replSet   test声明启动后的创建的副本集名称为test

3.启动后选择一台作为主(这里我选择105)

  mongo localhost:1111

config_test={"_id":"test",members:[

{_id:0,host:"172.16.31.105:1111"},
{_id:1,host:"172.16.31.106:2222"},
{_id:2,host:"172.16.31.106:3333"},
]};
初始化副本集
rs.initiate(config_test) #必须是config_集合名称
如果有报错,请检查其他两个mongo是否正常,需要初始化的mongo不能有数据,如果有的话删点数据重新初始化
正常的话会显示
'info' 'Config now saved locally.  Should come online in about a minute.',
查看副本集状态
rs.status();
test:PRIMARY> rs.status()
{
"set" : "test",
"date" : ISODate("2017-01-04T10:00:49Z"),
"myState" : 1,
"members" : [
{
"_id" : 0,
"name" : "172.16.31.105:1111",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 103102,
"optime" : Timestamp(1483443161, 8667),
"optimeDate" : ISODate("2017-01-03T11:32:41Z"),
"electionTime" : Timestamp(1483491644, 1),
"electionDate" : ISODate("2017-01-04T01:00:44Z"),
"self" : true
},
{
"_id" : 1,
"name" : "172.16.31.106:2222",
"health" : 1,
"state" : 3,
"stateStr" : "RECOVERING",
"uptime" : 32411,
"optime" : Timestamp(1483412761, 19758),
"optimeDate" : ISODate("2017-01-03T03:06:01Z"),
"lastHeartbeat" : ISODate("2017-01-04T10:00:48Z"),
"lastHeartbeatRecv" : ISODate("2017-01-04T10:00:48Z"),
"pingMs" : 0,
"lastHeartbeatMessage" : "still syncing, not yet to minValid optime 586b17b4:50d3"
},
{
"_id" : 2,
"name" : "172.16.31.106:3333",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 32417,
"optime" : Timestamp(1483443161, 8667),
"optimeDate" : ISODate("2017-01-03T11:32:41Z"),
"lastHeartbeat" : ISODate("2017-01-04T10:00:49Z"),
"lastHeartbeatRecv" : ISODate("2017-01-04T10:00:48Z"),
"pingMs" : 0,
"syncingTo" : "172.16.31.105:27016"
}
],
"ok" : 1
}
同时也可以到106上查看日志
2017-01-02T09:05:59.890-0500 [rsHealthPoll] replSet member 172.16.31.106:2222 is now in state SECONDARY
4.导入你的数据到主库上,并查看状态
后期待续






<think>好的,我现在需要在CentOS 9上安装和配置MongoDB副本。首先,我需要确认用户的需求,用户希望有一个详细的教程,包括安装和设置副本的步骤。根据用户提供的引用内容,大部分引用是关于CentOS7或Kubernetes的操作,但CentOS9可能有不同的步骤,尤其是软件源和MongoDB版本方面。我需要结合现有的知识,并调整步骤以适应CentOS9的环境。 首先,安装MongoDB。在CentOS系统中,通常需要添加MongoDB的官方仓,然后使用yum或dnf进行安装。CentOS9可能使用dnf作为包管理器,所以步骤应该包括添加repo文件。引用中的信息提到默认的数据目录是/var/lib/mongo,配置文件在/etc/mongod.conf,这可能在CentOS9中仍然适用,但需要确认。 接下来,配置副本。根据引用中的步骤,用户需要在每个节点上安装MongoDB,修改配置文件以启用副本,设置网络绑定和端口,然后启动服务。副本配置需要每个节点有相同的副本名称,并且通过mongo shell初始化配置。仲裁节点的配置可能也需要处理,如引用中提到的server-4作为仲裁者。 需要注意的是,用户提到的引用中有关于副本配置的具体命令,比如使用rs.initiate()和rs.add(),这些命令在MongoDB中是标准的,所以步骤应该包括这些部分。同时,防火墙设置和SELinux可能需要调整,以允许节点之间的通信,特别是27017端口。 另外,引用中提到MongoDB备份的方法,可能需要在教程中添加关于备份的建议,但用户的主要需求是安装和配置副本,所以这部分可能作为后续步骤或相关问题的提示。 现在,我需要整理步骤,确保每个节点上的MongoDB安装正确,配置文件正确设置副本名称,网络绑定到正确的IP地址,并确保服务启动。然后,在其中一个节点上初始化副本,添加其他节点,包括仲裁节点(如果有的话)。最后,验证副本的状态,确保各节点正常同步。 可能遇到的问题包括:CentOS9的软件源是否包含最新版本的MongoDB,防火墙和SELinux配置是否正确,以及副本初始化时的网络连通性问题。因此,在教程中需要强调这些配置步骤,并给出相应的命令示例,如使用firewall-cmd开放端口,或暂时禁用SELinux进行测试。 总结步骤大致如下: 1. 在所有节点上安装MongoDB,添加官方仓,安装mongodb-org包。 2. 修改每个节点的mongod.conf,设置bindIp为节点IP,设置replication.replSetName。 3. 启动mongod服务并确保开机启动。 4. 配置防火墙允许27017端口。 5. 连接到Primary节点,使用mongo shell初始化副本,添加其他节点。 6. 验证副本状态。 需要检查引用中的信息是否有冲突或需要更新的地方,比如配置文件路径是否变化,命令是否有差异。根据引用[5],默认路径在CentOS中是/var/lib/mongo,这在CentOS9可能不变。因此,步骤可以沿用这些路径。 最后,生成相关问题,可能涉及性能优化、备份方法、故障处理等,如用户之前的示例中的相关问题。</think>### 在CentOS 9上安装与配置MongoDB副本教程 #### 一、安装MongoDB 1. **添加MongoDB官方仓** 创建仓文件并写入配置: ```bash sudo tee /etc/yum.repos.d/mongodb-org-7.0.repo << EOF [mongodb-org-7.0] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/9/mongodb-org/7.0/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-7.0.asc EOF ``` 2. **安装MongoDB软件包** 通过dnf安装: ```bash sudo dnf install -y mongodb-org ``` 3. **启动服务并设置开机自启** ```bash sudo systemctl start mongod sudo systemctl enable mongod ``` #### 二、配置副本 1. **修改配置文件** 编辑`/etc/mongod.conf`,调整以下参数(以IP为192.168.1.20的节点为例): ```yaml net: port: 27017 bindIp: 192.168.1.20 # 修改为本机实际IP replication: replSetName: rs0 # 副本名称需所有节点一致 ``` 重启服务生效: ```bash sudo systemctl restart mongod ``` 2. **开放防火墙端口(所有节点执行)** ```bash sudo firewall-cmd --add-port=27017/tcp --permanent sudo firewall-cmd --reload ``` #### 三、初始化副本 1. **进入任一节点的Mongo Shell** ```bash mongosh ``` 2. **初始化副本(以三节点为例)** ```javascript rs.initiate({ _id: "rs0", members: [ { _id: 0, host: "192.168.1.20:27017" }, { _id: 1, host: "192.168.1.21:27017" }, { _id: 2, host: "192.168.1.22:27017", arbiterOnly: true } # 仲裁节点 ] }) ``` 3. **验证副本状态** ```javascript rs.status() ``` 输出中`"ok" : 1`表示配置成功[^2]。 #### 四、数据同步验证 在Primary节点插入测试数据: ```javascript use test db.demo.insertOne({ message: "Replica Set Configured" }) ``` 在Secondary节点查询数据(需先启用读权限): ```javascript rs.secondaryOk() db.demo.find() ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值