阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Ubuntu 18.04下部署MongoDB复制集(副本集)

200次阅读
没有评论

共计 2071 个字符,预计需要花费 6 分钟才能阅读完成。

环境
操作系统:Ubuntu 18.04
MongoDB: 4.0.3

 

服务器
首先部署 3 台服务器,1 台主节点 + 2 台从节点
Ubuntu 18.04 下部署 MongoDB 复制集(副本集)
3 台服务器的内容 ip 分别是:
10.140.0.5(主节点)
10.140.0.6(从节点 01)
10.140.0.7(从节点 02)

 

安装 MongoDB
接下来,需要在每一台服务器上安装 MongoDB。
完整安装过程可参考官方文档。
 
为了方便,本文提供 MongoDB 的一键安装脚本。
 

可以到 Linux 公社资源站下载:

—————————————— 分割线 ——————————————

免费下载地址在 http://linux.linuxidc.com/

用户名与密码都是www.linuxidc.com

具体下载目录在 /2018 年资料 /11 月 / 3 日 /Ubuntu 18.04 下部署 MongoDB 复制集(副本集)/

下载方法见 http://www.linuxidc.com/Linux/2013-07/87684.htm

—————————————— 分割线 ——————————————

 

切换成 root 用户
sudo su –

运行安装脚本
wget https://gitlab.com/caizhifei2003/scripts/raw/master/install/mongodb/ubuntu-1804.sh
chmod u+x ubuntu-1804.sh
./ubuntu-1804.sh

此时,可以通过 mongo 命令进入数据库

配置复制集
 

设置复制集名称
 
有两种方式来设置复制集的名称。一种是通过 mongod 命令,另一种是通过修改配置文件。
本文使用通过修改配置文件的方式来设置复制集名称,确保每次节点重新启动后能够使用相同的配置启动数据库。

打开 MongoDB 在 Ubuntu 上的配置文件
vim /etc/mongod.conf

找到 replication 配置节
replication:
    replSetName: “rs0”

绑定 MongoDB 的 IP 地址
 
找到 net 配置节
net:
    port: 27017
    bindIp: localhost,10.140.0.5 这里是主节点的地址,相应的从节点要绑定
10.140.0.6
10.140.0.7

保存文件,重新启动 mongod 服务
service mongod restart

此时,进入到任何一个节点。查看复制集状态。

Ubuntu 18.04 下部署 MongoDB 复制集(副本集)

初始化复制集
通过 mongo shell 进入主节点的数据库
执行复制集初始化命令

rs.initiate({
  _id : “rs0”,
  members: [
      {_id: 0, host: “10.140.0.5:27017”},
      {_id: 1, host: “10.140.0.6:27017”},
      {_id: 2, host: “10.140.0.7:27017”}
  ]
})
 

查看复制集状态
rs.status()

Ubuntu 18.04 下部署 MongoDB 复制集(副本集)

 

到此,复制集已经创建成功。

 

测试数据同步

执行如下命令,在主节点上插入一条数据

use test
db.test.insertOne({“name”: “kenny”})

进入任何一个从节点,查看数据是否被同步。
use test
rs.slaveOk()
db.test.find()

默认情况下,MongoDB 只允许在主节点上写入和读取数据。这里的 rs.slaveOk()是为了在从节点上也读取数据而需要执行的 session(如果退出 mongo shell,需要重新执行该命令)级别的命令。

显示的内容如下:

测试重新选举主节点
在 3 个节点上分别使用 rs.isMaster()命令
10.140.0.5:

10.140.0.6:

10.140.0.7

Ubuntu 18.04 下部署 MongoDB 复制集(副本集)

强制关闭主节点上的 MongoDB 服务
use admin
db.shutdownServer()

在两个从节点上,通过 rs.isMaster()命令查看状态

10.140.0.6:

10.140.0.7:

从上面的运行结果可以看出,10.140.0.6 已经被推选成新的主节点。此时所有服务一切正常。
至此,部署 MongoDB 复制集的基本操作已经完成。

 

总结
MongoDB 复制集的部署还是比较简单的,官方文档也给出了较为详细的说明。
同任何其它数据库一样,MongoDB 的副本集也是为了增强数据的安全性,避免因为服务器出现异常时,而导致数据服务不可用的情况出现。同时,数据被完整的保存在多个节点中,任何一台服务器的硬盘出现问题,都不会丢失数据。但是这里也存在风险,那就是数据同步存在时间差,如果还没有等到数据被同步到从节点,主节点就当机的话,那么这部分数据是无法找回的。
官方建议的副本集节点数量是 3 个,1 个主节点 + 2 个从节点。或者是 1 个主节点 + 1 个从节点 + 1 个仲裁节点。仲裁节点的作用是在主节点不可用时,通过算法找到最适合的从节点成为新的主节点。不建议将仲裁节点和数据节点放在同一个服务器上。

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-22发表,共计2071字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中