Contents

重新启动NOSQL数据库

1. 概述

假设我们正在为我们的应用程序使用 NoSQL 数据库——非常适合快速访问大量键值对,而无需设计表和编写查询的所有开销。

然而,我们发现“NoSQL”并不意味着“无需维护”。我们考虑使用托管托管,例如 MongoDB 的 Atlas 或 Amazon 的 DynamoDB,但我们决定自己托管,无论是在我们的场所还是在我们自己的云实例中。我们查看了一些 NoSQL 选择,例如 Redis 和 Cassandra,然后决定使用 MongoDB。

我们安装了它 (可能来自我们的 Linux 发行版,可能来自 Mongo 的存储库,也可能来自快照)但是出现了问题,我们需要重新启动它。

在本教程中,我们将研究重新启动 MongoDB 数据库的各种方法。

2. service

在搜索如何重新启动我们的数据库时,我们可能会找到对遗留脚本*service 的引用。它的工作原理是提供一个标准命令,无论我们的 Linux 安装使用哪种启动系统,该命令都能正常工作。使用service*没有错,但不再需要。

我们可以用它重新启动 MongoDB 的本地安装:

service mongod restart

这个工具在Great Init Wars 期间变得流行起来,在此期间,人们就启动和控制 Unix 或 Linux 系统 的不同部分争论不休。

Red Hat Linux 贡献了这个脚本作为*/etc/init.d中脚本的集中包装器。这些脚本将在启动时运行并负责启动(和重新启动)系统服务,例如cron*守护程序和 Apache HTTP 服务器。

Canonical 试图用一个名为 Upstart 的系统来替换 Ubuntu 的这些脚本。

service脚本(如果我们愿意,我们可以在*/usr/sbin*中查看它!)演变为处理这些相互竞争的启动、状态和关闭工具——现在,它还包含systemd 。Red Hat 在其 7.0 版本中切换到 systemd。Canonical 在 Ubuntu 15.04 中切换。

最近,systemd 已经成为我们在任何 Linux 环境中都可以期待的标准,并且不需要service

3. 一切都在systemctl之下

我们将使用systemctl 工具来处理 systemd。这管理 MongoDB 和任何依赖项。

当我们第一次安装 MongoDB 时,所有的二进制文件和配置文件都已经就位,但它没有运行。

我们可以使用systemctlstatus函数来检查这一点:

blogdemo@itcodingman:~$ systemctl status mongod
mongod.service - MongoDB Database Server
     Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vendor preset: enabled)
     Active: inactive (dead)
       Docs: https://docs.mongodb.org/manual

我们还可以要求systemctl start、 stoprestart我们的mongod服务。

现在让我们重新启动它:

blogdemo@itcodingman:~$ sudo service mongod restart
blogdemo@itcodingman:~$ sudo service mongod status
mongod.service - MongoDB Database Server
     Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vendor preset: enabled)
     Active: active (running) since Tue 2021-07-13 07:45:50 HST; 7s ago
       Docs: https://docs.mongodb.org/manual
   Main PID: 154987 (mongod)
     Memory: 155.4M
     CGroup: /system.slice/mongod.service
             └─154987 /usr/bin/mongod --config /etc/mongod.conf
Jul 13 07:45:50 shoes systemd[1]: Started MongoDB Database Server.

检查状态还可以为我们提供最近的日志,以查看事件发生的日期和服务器名称。

重新启动我们的 MongoDB 服务器的快速简便的方法是

systemctl mongod restart

3.1.将 MongoDB 设置为在启动时start

但是仅仅因为我们已经使用systemctl启动了mongod,这并不意味着它会在我们的系统每次启动时自动启动。 让我们使用systemctlenable选项来确保 MongoDB 与我们系统的其余部分一起启动:

blogdemo@itcodingman:~$ sudo systemctl enable mongod
Created symlink /etc/systemd/system/multi-user.target.wants/mongod.service → /lib/systemd/system/mongod.service.

正如我们所见,/lib/systemd中的mongod.service文件现在包含在“多用户”或默认运行级别中。我们可以查看*/etc/systemd*下的链接以获取这些服务的列表。

这个目标现在“希望” MongoDB 在正常启动时启动,因此mongod将在满足其所有依赖项后启动(例如,在网络启动后)。