如果您是软件开发人员、DevOps 工程师、DBA 或系统管理员,则需要Raspberry Pi(树莓派)或等效的单板微型计算机。现代分布式云应用程序在需要网络、安全、配置和监控的基础设施上运行。这些是宝贵的技能,您可以通过使用比虚拟机或 Docker 容器更接近地模拟现实世界的经济实惠的设备来锻炼这些技能。以下是Alex Ellis的总结:
让我简明扼要地说——Raspberry Pi(树莓派)是一个 Linux 服务器。如果您为日常工作编写代码或“做 DevOps”,那么您就有了一个用例。如果您每天都使用计算机,那么您就有了一个用例。
拥有一个Raspberry Pi几乎就像拥有一个 Amazon t2.nano EC2 实例,这里有一个比较:
| 亚马逊 T2.NANO EC2 实例 | 树莓派 zero-2-w | |
|---|---|---|
| 存储 | 536 MB | 512 MB |
| CPUs | 1 vCPU | 4 cores |
| 时钟速度 | 3 GHz | 1 GHz |
| CPU 架构 | i386 | ARM |
本文介绍了一个特定用例——配置一个可通过 WiFi 或 USB 以太网仿真连接的便携式数据库服务器。它涵盖了在Raspberry Pi Zero 2 W(可用的最小单板计算机之一)上设置 SQL 数据库的步骤,但您可以将说明调整到其他型号和品牌,如Raspberry Pi 4、Banana Pi BPI-M2 Zero,或Radxa 零。
在我的实验中,我发现 SQLite、TinyDB 和 MariaDB 是 Raspberry Pi 设备的最佳数据库,一般来说,对于物联网应用程序也是如此。它们与 Raspberry Pi 硬件兼容,并且不会消耗大量资源。它们还支持多种编程语言和工具。在本文中,您将了解如何安装流行的开源MariaDB 数据库服务器,以及如何使用DBeaver从您的计算机远程连接到它。
以下是将 Raspberry Pi 转变为数据库服务器所需的项目列表:
- 无线网络
- 微型 SD 卡
- 树莓派
- USB电缆
- 电源

MariaDB 在 Raspberry Pi Zero 2 W 上运行
设置树莓派
您必须在 microSD 卡上安装操作系统。尝试获得一张快速卡,因为这将对数据库的性能和整个设备的性能产生巨大影响。
1. 在您工作的笔记本电脑或计算机(而不是 Raspberry Pi)上,安装Raspberry Pi Imager软件并安装 Raspberry Pi OS Lite(64 位):

操作系统选择
2. 选择您的存储设备。确保选择正确的(microSD 卡)。
3. 点击右下角的齿轮图标,进行如下配置:

- 主机名:您将使用它通过 SSH 连接到 Pi。我使用过
zero01,但可以随意使用您喜欢的任何用户名。 - 启用 SSH:确保选中此项。如果您不想处理 SSH 密钥,请选择使用密码身份验证(这就是我所做的)。
- 设置用户名和密码:指定 Linux 用户名和密码。您可以使用任何组合。在本文中,我使用
user/password了但您应该使用更安全的东西。 - 配置无线局域网:选中此选项并配置与您的 WiFi 网络的连接。请记住,您必须使用 2.4G 网络。
4. 保存设置并点击WRITE。这将在卡上写入可启动的 Raspberry Pi OS。

写入选项开始安装过程
该软件会询问您是否愿意继续并擦除设备上的所有现有数据。确保您已备份文件,然后单击“是”。
该过程完成后,将 microSD 卡插入 Pi,抓住 micro USB 电缆,然后将其连接到电源。我用的是 iPhone 充电器。使用 Pi 上最右侧的微型 USB 端口。微型计算机现在应该启动。要有耐心。第一次启动可能需要一些时间。甚至几分钟。但随后的引导会更快。
5. 在您的工作计算机上打开一个终端窗口并通过 SSH 连接到 Pi。使用您在安装过程中配置的用户名、主机名和密码。确保您的工作计算机连接到您为 Raspberry Pi 配置的同一 LAN:
ssh user@zero01.local
系统会要求您将 Pi 的密钥添加到已知主机列表中。回答“是”并输入您配置的密码。你进来了!
6.首先,更新您的系统:
sudo apt update
sudo apt upgrade -y
提示:如果您不想一直键入sudo,请sudo su在运行命令之前使用。完成后记得输入exit。请小心,因为您将获得_sudo_权限。
安装 Docker
是时候安装一些有用的软件了。一个数据库。MariaDB 数据库。MariaDB 是一个开源关系数据库,它使用可插入的、专门构建的存储引擎来支持以前需要各种专用数据库的工作负载。您可以将这些存储引擎组合在同一台服务器中并运行跨引擎 SQL 查询(连接不同存储引擎上的表的查询)。
您可以直接在操作系统之上安装 MariaDB,但我建议使用Docker。运行 Docker 容器的运行时性能成本可以忽略不计。查看这篇 IBM 研究论文,该论文比较了裸机、KVM 和 Docker 容器的性能。结论:
总的来说,在我们测试的每个案例中,Docker 的性能都等于或超过 KVM。我们的结果表明,KVM 和 Docker 对 CPU 和内存性能的开销可以忽略不计(极端情况除外)。
安装 Docker 非常简单,在 Raspberry Pi 上运行以下命令:
sudo apt install docker.io -y
检查 Docker 是否正常运行:
sudo service docker status
您应该看到服务报告的活动(运行):

Docker 服务启动并运行
按Q退出状态报告程序。
如果服务报告失败——这在我的实验中确实发生在我身上——尝试重新启动 Pi:
sudo reboot
在 Docker 上运行 MariaDB 数据库服务器
要启动 MariaDB 实例,请运行以下命令(继续尝试,如果需要,您可以稍后将其完全删除):
sudo docker run --detach --net=host --name mariadb --restart unless-stopped --env MARIADB_ROOT_PASSWORD='password' mariadb:latest
我们传递了几个标志:
--detach在后台运行容器--net=host使容器使用主机的网络(容器不会获得自己的 IP 地址,这消除了显式映射和公开端口的需要)--name给容器起一个名字,以后可以用来操作容器--restart除非停止使 Docker 在 Pi 启动时启动容器--env用于配置root用户密码等变量mariadb:latest指的是官方的 MariaDB Docker 镜像
提示:如果您安装了 32 位操作系统,则可以使用linuxServer.io团队提供的 MariaDB Docker映像。此映像包括对linux/arm/v7架构的支持。只需替换为.mariadb:latest``linuxserver/mariadb:latest
检查容器是否已启动并正在运行:
sudo docker container ls

MariaDB 服务器在 Docker 容器上运行
从容器内连接到数据库(稍后我们将看到如何从外部连接):
sudo docker exec -it mariadb bash
mariadb -u root -p
这会在容器内运行一个新的 bash 会话,您可以从中执行在容器上运行的 Linux 命令。进入容器后,我们使用 CLImariadb客户端连接到数据库。为了好玩,请尝试以下命令来显示有关您的新 MariaDB 数据库的有趣事实和配置:
SHOW CONTRIBUTORS;
SHOW PLUGINS;
SHOW ENGINES;
还可以尝试“Hello, World”SQL 查询:

本地运行的 SQL 查询
完成后,退出 SQL 客户端并退出容器:
quit
exit
这很有趣,但让我们尝试不同的配置。停止并移除mariadb容器及其关联的卷:
sudo docker stop mariadb
sudo docker container rm --volumes mariadb
运行一个新容器,如下所示:
sudo docker run --detach --net=host --name mariadb --restart unless-stopped --env MARIADB_ROOT_PASSWORD='password' --env MARIADB_ROOT_HOST='localhost' --env MARIADB_DATABASE='nation' --env MARIADB_USER='user' --env MARIADB_PASSWORD='password' mariadb:latest
这将创建并运行一个带有 MariaDB 数据库的 Docker 容器,该数据库:
- 有一个只能从
localhost - 有一个同名的数据库
nation(我们稍后会填充这个数据库) - 有一个可以访问
nation数据库的用户
这是一个更安全的数据库,除了它password用作 root 和user用户的密码(不要在生产中这样做!)。
使用 DBeaver 从笔记本电脑连接到数据库
让我们使用DBeaver从您工作的笔记本电脑或计算机连接到该数据库。
1. 如果您尚未在您的计算机上安装该软件,并通过在菜单中选择数据库 > 新建数据库连接来创建与容器化 MariaDB 数据库的新连接。选择MariaDB数据库选项并填写连接详细信息:

数据库连接配置
2. 测试连接,然后单击完成按钮。您现在已从笔记本电脑连接到便携式数据库!
3. 尝试从https://www.mariadbtutorial.com网站导入数据库。这是包含脚本的 ZIP 文件的直接链接。提取此文件并在 DBeaver 中打开 SQL 文件。通过单击工具栏中的小数据库图标选择一个数据源,然后选择您刚刚创建的连接:

为 SQL 查询执行选择数据库连接
4.在菜单中选择SQL 编辑器 > 执行 SQL 脚本。脚本完成后,选择SQL Editor > New SQL Script并运行以下查询(调整它以显示您所在国家或您感兴趣的任何国家的语言):
SELECT l.language
FROM countries c
JOIN country_languages cl ON cl.country_id = c.country_id
JOIN languages l ON l.language_id = cl.language_id
WHERE c.name = "Colombia";
运行查询。我会让你自己弄清楚(提示:使用垂直工具栏)。这是一个示例结果:

SQL查询结果
以下是您可以在此数据库上使用 SQL 查询回答的一些问题:
- 语言最多的国家是哪个?
- 每个大陆有多少个国家?
- 世界人口有多少?
启用 USB 小工具以太网
USB Gadget Ethernet 允许您通过 USB 将 Raspberry Pi 连接到您的计算机,并使其看起来好像已连接到网络。当您想连接到不同的网络并且不想在 Pi 上配置新网络时,这很有用。
如果还没有,请通过 SSH 连接到 Pi:
ssh user@zero01.local
编辑以下文件:
sudo nano /boot/config.txt
在文件的最后,添加以下行:
dtoverlay=dwc2
保存文件并退出编辑器。现在编辑以下文件:
sudo nano /boot/cmdline.txt
添加要加载的模块后rootwait,如下所示:
... rootwait **modules-load=dwc2,g_ether**
保存文件并退出编辑器。现在关闭 Pi:
sudo poweroff
等到绿色 LED 熄灭,然后断开 Pi 与电源的连接。将数据线的 micro USB 端连接到树莓派最右边的第二个端口,另一端连接到您的计算机。等到 Pi 启动并通过 SSH 连接到它。
恭喜!现在您拥有了一个真正可移植的 MariaDB 数据库服务器,您可以随身携带并在任何地方使用。考虑为 Pi 提供一个很好的案例。我可以通过 Flirc推荐这个:

在 Raspberry Pi 上运行的便携式 MariaDB 数据库服务器
下一步是什么?
你知道另一个 Raspberry Pi 还可以用在哪些地方吗?他们现在很稀缺,给他们一些用处吧!例如,尝试设置基本复制或构建类似32 核 Raspberry Pi 4 集群的东西。然后尝试使用官方MariaDB 连接器从Java、JavaScript/Node.js、Python和C++应用程序中使用数据库。
原文标题:Building a Portable Database Server
原文作者:Alejandro Duarte
原文地址:https://mariadb.com/resources/blog/building-a-portable-database-server/




