暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【译】您的旧笔记本电脑是您的新数据库服务器

原创 云毅 2022-06-24
1225

原文链接:https://dzone.com/articles/your-old-laptop-is-your-new-database-server
作者:Alejandro Duarte

几周前,我突然在我的公寓里发现了一台只会积灰的旧笔记本电脑:我在 2014 年购买的联想 Thinkpad T440s。

规格:

  • 英特尔® 酷睿™ i7
  • 8 GB DDR3L-SDRAM
  • 256 GB 固态硬盘

对于始终可用的服务器来说,它看起来是个不错的候选者;我可以随时连接并安装开发应用程序时可能需要的任何类型的服务器软件的机器。在 Docker 容器时代,配置机器运行服务器软件非常容易。在本文中,我将向您展示如何通过安装 Ubuntu Server、Docker 和 MariaDB 数据库以及使其始终可用、始终开启所需的所有配置来利用这台旧笔记本电脑。

等等,但是为什么?

让一台旧机器运行类似数据库服务器的东西值得吗?答案一如既往是:视情况而定。更具体地说,这取决于您打算赋予它的用途。有一些明显的事情你不能重新利用旧笔记本电脑。例如,如果您想将其用作大文件的存储设备或运行大数据应用程序或实验,您可能需要使用云存储、云数据库或获得适合您要求的合适设备。

但总的来说,我认为重新利用旧电脑是值得的。特别是对于诸如实验或开发/测试环境之类的事情,适度的硬件通常就足够了。而且,你已经有了机器!那么为什么不利用它呢?

在你开始之前

在开始之前,请确保您备份了要保留的所有重要文件。寻找文件、照片、视频,所有这些东西。花一个小时左右的时间在硬盘中寻找有价值的内容。安全总比后悔好!使用外部驱动器或云服务提供商(如 Google Drive 或 Dropbox)来移动文件。或者,如果它们已经配置,请使用本地的网络将文件从旧笔记本电脑移动到较新的笔记本电脑。

根据您打算为笔记本电脑提供的用途,您可能希望使用 File Shredder、Eraser 或 CCleaner 等软件加密其内容或安全擦除敏感数据。

安装服务器操作系统
选择适合您需求的操作系统。我推荐无头操作系统,因为您不需要可能会浪费计算资源的精美 GUI。

你有很多选择。这里仅仅是少数:

  • 红帽企业 Linux
  • Ubuntu 服务器
  • Windows 服务器核心

确保使用符合您要求的一种。例如,检查您以后要在服务器中安装的软件是否与操作系统兼容。

我选择了 Ubuntu Server,在我看来它可能是最容易安装和使用的。我不会详细介绍如何安装它。您可以找到大量在线资源,详细说明如何执行此操作。简而言之,您需要一个 USB 闪存驱动器,下载 Ubuntu Server ISO 映像,并使用 Etcher 或 Rufus 之类的程序来创建一个可启动的 USB 驱动器。然后,将此 USB 驱动器连接到笔记本电脑并从中启动。在我的 Thinkpad 上,当笔记本电脑开始进入启动菜单并选择 USB 驱动器时,我必须按 F11 键。从那里开始,只需按照步骤操作即可。

此外,请确保安装 SSH 服务器(Ubuntu 服务器默认包含此服务器)。

设置静态 IP 地址

配置网络连接时,设置一个静态 IP,以便您可以从其他机器(例如,您的软件开发机器)连接到服务器。在 Ubuntu Server 中,您可以在安装过程之后通过修改 /etc/netplan/00-installer-config-wifi.yaml 文件来执行此操作,如下所示:

network:
  version: 2
  wifis:
    wlp3s0:
      access-points:
        YOUR_WIFI_CONNECTION_NAME:
          password: YOUR_WIFI_PASSWORD
      dhcp4: false
      addresses: [192.168.1.200/24]
      routes:
        - to: default
          via: 192.168.1.1

使用您的 Wi-fi 连接名称、密码和网关。在上面的示例中,我分配了静态 IP 地址 192.168.1.200。您可以使用以下命令重新加载配置:

sudo netplan apply

关闭电脑盖时禁用休眠

即使电脑盖关闭,您可能希望服务器继续运行。要禁用 Ubuntu 服务器休眠或进入挂起模式,请编辑 /etc/systemd/logind.conf,如下所示。

确保以下行没有被注释掉,并且它们的值如所示:

HandleLidSwitch=lock
LidSwitchIgnoreInhibited=no

盖上电脑盖子,将服务器放置在您家中的任何位置。对于我来说,我只是把它放在我办公室的一个角落里:

通过 SSH 连接到服务器

现在您可以使用以下方式移动到您的开发机器并通过 SSH 连接到服务器:

ssh alejandro@192.168.1.200

当然,请指定您在灌输 Ubuntu Server 时创建的用户,而不是我的名字。

即使您可以使用 IP 地址连接到服务器,您也可以在开发机器中配置一个映射到服务器 IP 地址的主机名。只需在类似 Linux 的机器上的 /etc/hosts 文件或 Windows 上的 c:\Windows\System32\drivers\etc\hosts 中添加一个条目:

192.168.1.200 thinkpad.local

指定服务器的 IP 地址并使用所需的任何主机名。在末尾附加 .local 是一个很好的做法,以记住主机名是您网络的本地主机名,并且从外部世界看不到它。在 macOS 上,如果您想避免导致连接过程变慢的长时间 DNS 查找,您还必须添加 IPv6 地址。例如:

fe80::2ab2:bdff:fea2:17dc thinkpad.local

现在您可以使用以下方式连接到服务器:

ssh alejandro@thinkpad.local

请注意,如果您想使用主机名从其他机器连接到服务器,则必须在所有机器中进行配置。

安装 Docker

Docker 是一种虚拟化工具,可让您为应用程序创建隔离环境。与虚拟机(管理程序)不同,容器在操作系统之上运行,无需虚拟化硬件。

如果您更喜欢使用虚拟机而不是容器,那么 Vagrant 是一个不错的选择。 Vagrant 允许您通过 VirtualBox 或其他管理程序(在 Vagrant 术语中称为提供程序)自动创建和配置虚拟机。我认为在旧笔记本电脑上运行虚拟机是多余的。运行容器提供了良好的隔离,从开发人员的角度来看,它们看起来就像是虚拟机。因此,我建议改用 Docker。

您还可以在裸机上直接在 Ubuntu Server 上安装任何服务器软件(如数据库);但是,使用容器可以让您灵活地尝试不同的选项,而无需卸载并重新安装软件。您只需运行要使用的容器并停止或删除它们,而不会弄乱您的基本操作系统。此外,还有许多现成的 Docker 镜像(镜像就像创​​建容器的模板),适用于各种有趣的应用程序。这简化了安装数据库、Web 服务器和其他工具的过程。

要安装 Docker,请如上所述使用 SSH 连接到新服务器并运行以下命令:

sudo apt-get install docker.io

确认 Docker 守护进程正在运行:

sudo systemctl status docker

您应该会看到 Active(正在运行)显示在 Active 下。

安装数据库服务器

如果您在 Google 上搜索数据库名称加上“docker 映像”,您会发现使用 Docker 安装该数据库所需的内容。在本文中,我将展示如何安装 MariaDB 社区服务器,这是一个高级开源 SQL 数据库请注意,如果您订阅了 MariaDB,则可以安装 MariaDB Enterprise Server,这是 MariaDB 社区服务器的增强、强化和安全版本。

下载 MariaDB 社区服务器镜像并使用 Docker 运行它:

sudo docker run --detach --name mariadb --restart unless-stopped --env MARIADB_ROOT_PASSWORD='password' --publish '3306:3306/tcp' --expose '3306' mariadb:latest

这将在名为 mariadb 的容器中运行 MariaDB 服务器。如果您重新启动机器,容器会自动启动,除非您手动停止容器,如下所示:

docker container stop mariadb

通过检查容器的状态是否为 Up 来确认容器正在运行:

docker container ls

从以下输出中复制容器的 IPv4 地址:

docker network inspect bridge

使用该 IP 地址从服务器(运行 Docker 的地方)连接到 MariaDB 服务器。例如:

mariadb -h 172.17.0.2 -u root -p

现在结束 SSH 会话以断开与服务器的连接:

exit

在您的开发机器上,使用主机名(或 IP 地址,如果您未配置主机名)连接到 MariaDB 数据库。例如:

mariadb -h thinkpad.local -u root -p

尝试运行 SQL 查询:
11.png
恭喜!您的旧笔记本电脑现在是您的新数据库服务器。

保护数据库服务器

您可能想为 root 用户设置一个强密码(有趣的事实:MariaDB Enterprise Server 甚至不允许您使用弱密码):

SET PASSWORD FOR 'root'@'%' = PASSWORD('Password123!');

也许您还想创建一个新的“几乎是根”用户:

CREATE USER 'user'@'%' IDENTIFIED BY 'Password123!';
GRANT ALL PRIVILEGES ON *.* TO 'user'@'%';

也许您想禁用 root 用户对数据库的远程访问,在这种情况下,如果您想以 root 身份连接到数据库,则必须先通过 SSH 连接到服务器。以下是禁用对 root 的远程访问的方法:

DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');

下一步是什么?

您可以在新服务器上安装许多其他东西。持续集成服务器、Web 服务器、电子邮件服务器等。Docker Hub 是一个巨大的镜像目录,您可以在隔离的 Docker 容器中安全地尝试。完成实验后,您始终可以运行容器并删除它们。例如,您可以删除 MariaDB 容器,如下所示:

docker container stop mariadb
docker rm mariadb

然后接下来尝试使用 ColumnStore 的 MariaDB。 ColumnStore 是 MariaDB 数据库的存储引擎,可提高临时分析查询的性能,而无需维护数据库索引。您可以通过 Docker 使用 ColumnStore 安装 MariaDB:

sudo docker run --detach --name mariadb-columnstore --restart unless-stopped --env MARIADB_ROOT_PASSWORD='password' --publish '3306:3306/tcp' --expose '3306' mariadb/columnstore:latest

现在您可以创建使用 ColumnStore 引擎的表:

CREATE TABLE some_table(
    ... column definitions here ...
) ENGINE=ColumnStore;
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论