mongodb副本集在linux上的配置

这几天在学习mongodb的副本集的配置。在这个过程中,我和同学们都出现了各种问题。因此,在这里我记录总结下总体流程和注意的事项。(此处假设已至少有一台配置好mongodb的主机)

第一步:配置primary的linux主机相关配置。

首先登录(切换)root用户,执行以下命令:

vim /etc/hostname

将文件内容修改为自己想要的主机名。例如:mongodb1。

然后:配置网卡中ip地址信息(当然你的不一定是ens33)

vim /etc/sysconfig/network-scripts/ifcfg-ens33

修改ip地址为:192.168.xxx.100(如果100你没有用过的话,用过了那你就换个别的数字,例如101、102什么的,xxx那要看你本地上ip地址是什么样的了)

紧接着:

vim /etc/hosts

在文件中添加入主机的ip地址和主机名,实现映射

例如:192.xxx.129.100 mongodb01

           192.xxx.129.101 mongodb02

           192.xxx.129.102 mongodb03

(依次是需要配置的三台主机)保存文件后,退出。

之后打开mongodb的conf配置文件(请不要盲目参考以下,要以你的conf文件的路径为准):

vim /opt/servers/mongodb_demo/mongodb/conf

进行添加以下的副本集内容:其中replSetName为自定义的副本集名称,在此处,举例将副本集命名为mongodb。注意conf文件中的缩进要正确合规,并且和之前配置的缩进保持一致。

replication:
  replSetName: mongodb

第二步:关机这台主机,并进行克隆(如果已有,则对对应的文件进行修改操作即可,注意hosts文件需要和第一台主机刚才配置的hosts文件内容保持一致)。

关机:

init 0

进行克隆,克隆选择完全克隆。

以下以克隆后的第一部主机为例进行说明。

打开克隆后的主机,以root账户登录。

将第一步中配置的hostname文件中主机名修改为这台主机自定义的一个名字。例如:mongodb2

将第一步中配置的ifcfg-ens33文件中ip地址修改为对应这台主机的。例如:192.168.xx.101,注意:此处的ip地址要和第一步中配置的hosts文件中mongodb2的ip地址保持一致。

将第一步中配置mongodb下的conf文件中的bindIp进行修改。注意,bindIp也需要和ifcfg-ens33、hosts文件中mongodb2的ip地址,三者间地保持一致。注意,之前配置好的副本集名字replSetName不需要修改。

修改完成后执行以下命令:

shutdown -r now

使得修改生效(不然的话有可能主机名修改未生效导致后续出现问题)。

同理操作第三台主机。

第三步:启动副本集

切换到mongodb的bin目录下(还是以你自己的路径为准):

cd /opt/servers/mongodb_demo/mongodb/bin

执行命令:

./mongod --replSet 你设置的副本集名称 --dbpath=你创建的mongodb中的data文件路径/ --logpath=你mongodb中的mongodb.log文件的路径 --port 27017 --bind_ip mongodb01(你当前操作想作为primary结点的主机的名字,因为之前已经配置了主机名和ip地址间的映射,此处可以直接填写主机名,当然你也可以填写ip地址) --logappend --fork

进行初始化步骤:

./mongo --host 你当前使用的主机的名字或当前主机ip地址 --port 27017
rs.initiate()

发现其已将自己选举为primary。

随后:

依次对其他主机执行操作:

 切换到mongodb的bin目录下(还是以你自己的路径为准):

cd /opt/servers/mongodb_demo/mongodb/bin

执行命令:

./mongod --replSet 你设置的副本集名称 --dbpath=你创建的mongodb中的data文件路径/ --logpath=你mongodb中的mongodb.log文件的路径 --port 27017 --bind_ip mongodb02(你当前操作想作为primary结点的主机的名字,因为之前已经配置了主机名和ip地址间的映射,此处可以直接填写主机名,当然你也可以填写ip地址) --logappend --fork
./mongo --host 你当前使用的主机的名字或当前主机ip地址 --port 27017

注意,此处不要执行rs.initiate()命令!例如,如果执行了,可能会导致副本集中无法选举出primary,或者primary被其他主机替代。

继续使用刚才选举好的primary结点的主机,执行命令:

依次完成将其余节点加入到副本集的add命令。

rs.add("加进来的主机名:27017")

查询状态:

rs.status()

发现,mongodb01 mongodb02 mongodb03都已进入副本集中,且健康值为1,则此时副本集已成功配置并启动成功。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是搭建 MongoDB 副本集的步骤: 1. 准备工作 确保已经安装了 MongoDB,可以通过以下命令检查 MongoDB 是否已经安装: ``` mongod --version ``` 2. 创建数据目录 在创建副本集之前,需要为每个 MongoDB 实例创建数据目录。可以通过以下命令创建数据目录: ``` mkdir -p /data/rs1 /data/rs2 /data/rs3 ``` 其中,`/data/rs1`、`/data/rs2` 和 `/data/rs3` 分别是三个 MongoDB 实例的数据目录。 3. 启动 MongoDB 实例 使用以下命令启动三个 MongoDB 实例: ``` mongod --port 27017 --dbpath /data/rs1 --replSet rs0 mongod --port 27018 --dbpath /data/rs2 --replSet rs0 mongod --port 27019 --dbpath /data/rs3 --replSet rs0 ``` 其中,`--port` 参数指定 MongoDB 实例的端口号,`--dbpath` 参数指定数据目录的路径,`--replSet` 参数指定副本集的名称。 4. 连接到其中一个 MongoDB 实例 使用以下命令连接到其中一个 MongoDB 实例: ``` mongo --port 27017 ``` 5. 初始化副本集 在 MongoDB Shell 中执行以下命令初始化副本集: ``` rs.initiate() ``` 6. 添加其他 MongoDB 实例 在 MongoDB Shell 中执行以下命令添加其他 MongoDB 实例: ``` rs.add("localhost:27018") rs.add("localhost:27019") ``` 其中,`localhost:27018` 和 `localhost:27019` 分别是其他两个 MongoDB 实例的地址。 7. 查看副本集状态 在 MongoDB Shell 中执行以下命令查看副本集状态: ``` rs.status() ``` 如果输出结果中的 `members` 数组中有三个成员,则说明副本集搭建成功。 以上就是搭建 MongoDB 副本集的步骤,希望对你有帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值