CentOS 7上的MongoDB复制

MongoDB是一个NoSQL企业级数据库,提供高性能,高可用性和自动缩放。 在NoSQL数据库中,因此您不能使用SQL(结构化查询语言)来插入和检索数据,并且不将数据存储在像MySQL或Postgres这样的表中。 数据以JSON格式(在MongoDB中称为BSON)存储在“文档”结构中。 MongoDB于2009年首次推出,目前由MongoDB Inc.开发。

在本教程中,我将引导您逐步构建MongoDB中的副本集。 我们将使用安装了CentOS 7的3个服务器节点,然后安装和配置MongoDB。

先决条件

  • 安装了CentOS 7的三台服务器

10.0.15.21 mongo1
10.0.15.22 mongo2
10.0.15.23 mongo3

  • 根权限

第1步 - 准备服务器

在本教程中,我将禁用SELinux for MongoDB。 我们需要编辑SELinux配置文件,并将值“强制”更改为禁用。

使用ssh连接到所有服务器节点。

ssh root@mongo1
ssh root@mongo2
ssh root@mongo3

使用vim编辑hosts文件。

vim /etc/hosts

将主机配置粘贴到下面:

10.0.15.21  mongo1
10.0.15.22  mongo2
10.0.15.23  mongo3

保存文件并退出。

接下来,我们将通过使用vim编辑配置文件来禁用SELinux。

vim /etc/sysconfig/selinux

将值“ 强制 ”更改为“ 禁用 ”。

SELINUX=disabled

保存并退出,然后重新启动服务器。

reboot

使用命令检查SELinux状态。

getenforce

确保您得到“ 禁用 ”作为结果。

第2步 - 在所有节点上安装MongoDB

在这一步中,我们将从官方的仓库安装MongoDB。 第一步是将新的MongoDB 3.4存储库添加到“/etc/yum.repos.d/”目录中。

运行以下命令来添加存储库。

cat <<'EOF' >> /etc/yum.repos.d/mongodb.repo
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc

EOF

接下来,使用yum命令安装mongodb-org包。

sudo yum -y install mongodb-org

MongoDB已经安装在所有CentOS 7节点上。

注意:

如果你想要一个关于“MongoDB安装”的完整教程,你会看到这个链接

第3步 - 配置Firewalld

在第一步,我们已经禁用了SELinux。 为了安全起见,我们现在将在所有节点上启用firewalld,并只打开MongoDB和SSH使用的端口。

使用yum命令安装Firewalld。

yum -y install firewalld

启动firewalld并启用它在启动时启动。

systemctl start firewalld
systemctl enable firewalld

接下来,打开你的ssh端口和MongoDB默认端口27017。

firewall-cmd --permanent --add-port=22/tcp
firewall-cmd --permanent --add-port=27017/tcp

重新加载firewalld以应用更改。

firewall-cmd --reload

第4步 - 配置MongoDB副本集

副本集是MongoDB中一组保持相同数据和信息的mongod进程。 副本集为数据库的生产部署提供了高可用性和容错能力。

mongodb中的复制由运行mongod进程的几个MongoDB服务器实例组成,只有一个实例作为“ PRIMARY ”运行,所有其他实例都是“ SECONDARY ”。 数据仅在“ PRIMARY ”实例上写入,然后将数据集复制到所有“ SECONDARY ”实例。

在此步骤中,我们将准备所有服务器节点以在MongoDB中实现副本集。

使用vim编辑MongoDB配置文件mongod.conf文件。

vim /etc/mongod.conf

在'net'部分第27行中,注释'bindIP'。

net:
  port: 27017
  # bindIP: 127.0.0.1

接下来,取消注释复制行36,并将复制名称设置为' myreplica01 '。

replication:
  replSetName: "myreplica01"

保存文件并退出vim。

在所有节点上重新启动MongoDB。

systemctl restart mongod

现在检查mongodb并使其在服务器ipadress上运行,而不是localhost ipaddress。

netstat -plntu

第5步 - MongoDB副本集启动

在此步骤中,我们将创建副本集。 我们将' mongo1 '服务器用作' PRIMARY '节点,' mongo2 '和' mongo3 '作为' SECONDARY '节点。

登录到mongo1服务器并启动mongo shell。

ssh root@mongo1
mongo

使用以下查询从mongo1服务器启动副本集。

rs.initiate()

确保“确定”值为1。

现在将'mongo2'和'mongo3'节点添加到副本集。

rs.add("mongo2")
rs.add("mongo3")

您将看到下面的结果,并确保没有错误。

接下来,使用下面的rs查询检查副本集的状态。

rs.status()

检查状态的另一个查询是:

rs.isMaster()

第6步 - 测试复制

从'PRIMARY'实例'mongo1'到'SECONDARY'节点'mongo2'和'mongo3'测试数据集复制。

在此步骤中,我们将尝试在'PRIMARY'节点'mongo1'上编写或创建一个新数据库,然后通过检查'SECONDARY'节点'mongo2'和'mongo3'上的数据库来检查复制是否正常工作。

登录到' mongo1 '服务器并打开mongo shell。

ssh root@mongo1
mongo

现在为数据库创建一个新的数据库' lemp '和新的' stack '集合。

use lemp
db.stack.save(
{
    "desc": "LEMP Stack",
    "apps":  ["Linux", "Nginx", "MySQL", "PHP"],
})

接下来,转到'SECONDARY'节点' mongo2 '并打开mongo shell。

ssh root@mongo2
mongo

启用从'SECONDARY'节点读取查询'rs.slaveOk()',然后检查“lemp”数据库​​是否存在于“SECONDARY”节点上。

rs.slaveOk()
show dbs
use lemp
show collections
db.stack.find()

如果没有错误,您将看到以下结果:

“PRIMARY”节点的数据库已被复制到“SECONDARY”节点,“mongo1”实例中的数据库“lemp”成功复制到“mongo2”和“mongo3”实例。

MongoDB副本集已成功创建。

参考

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏