如何在 Ubuntu 22.04 上安装并开始使用 MariaDB

简介

这个关于 MariaDB 安装的循序渐进教程将演示如何在 Ubuntu 22.04 服务器上安装 MariaDB,包括配置以及如何开始使用它。此外,我们还将强调一些最佳实践,以确保 MariaDB 数据库服务器的最佳性能。

什么是 MariaDB?

MariaDB 可以说是使用最广泛的开源关系数据库系统之一,从学习 SQL 数据库的新手到从事大型 IT 项目的经验丰富的开发人员都在使用。MariaDB 仍然是最受欢迎的关系数据库管理系统 (RDBMS) 之一。

MariaDB 是社区开发的,是 MySQL 数据库 服务器的直接替代品。它在 2009 年 Oracle 收购 MySQL 后从流行的 MySQL 数据库服务器分叉而来。

与 MySQL 相比,MariaDB 提供更好的性能、速度和安全性。由于其异步主从复制,它在复制方面也优于 MySQL。

准备工作

服务器准备

必要前提:

  • 一个充满求知欲的大脑。
  • 一台 Linux 服务器(推荐腾讯云、阿里云或雨云等)。

我将以 雨云 为例,带大家创建一台自己的云服务器,以便学习本篇文章的内容。

注册链接: https://rainyun.ivwv.site

创建雨云服务器

以下步骤仅供参考,请根据实际需求选择配置。

  • 点击 云产品云服务器立即购买
  • 选择距离你较近的区域,以保证低延迟。

  • 按照自己需求选择配置,选择Ubuntu 22.04 版本,按照自己需求是否预装Docker。
  • 最后按照提示进行购买。
  • 购买后等待机器部署完毕,点击刚刚创建好的服务器,进入管理面板,找到远程连接相关信息。

  • 我们使用 PowerShell 进行 SSH 远程连接到服务器,Win+R 打开运行窗口,输入 powershell 后点击确定。

  • 输入 ssh root@你的服务器IP 例如 ssh root@154.9.227.239 回车后,首次需要输入 yes,再次回车后即可登录服务器。

  • 到此为止,我们的云服务器就远程连接上了。

如何在 Ubuntu 20.40 上安装 MariaDB?

现在我们知道什么是 MariaDB、它的用途以及我们需要哪些先决条件,让我们看看如何在 Ubuntu 22.04 服务器上安装 MariaDB 并让你开始使用它。

第 1 步:通过登录你的 Ubuntu 服务器安装 MariaDB

首先,登录你的 Ubuntu 22.04 服务器并刷新本地存储库。

sudo apt update

Ubuntu 存储库已提供 MariaDB 软件包。使用 PAT 软件包管理器安装很简单,如下所示。

sudo apt install mariadb-server mariadb-client -y

但是,Ubuntu 存储库提供的 MariaDB 版本不是最新版本。在撰写本指南时,这会安装 MariaDB 10.3.24。要安装最新版本,请使用官方 MariaDB 存储库。

首先,安装必备软件包。

sudo apt install -y software-properties-common

接下来,导入 GPG 签名密钥。

sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'

GPG 密钥就位后,添加 MariaDB APT 存储库。以下存储库已为 MariaDB 版本 10.6 启用。你可以将此值替换为你打算安装的版本。

sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] https://mariadb.mirror.liquidtelecom.com/repo/10.6/ubuntu focal main'

最后,刷新本地存储库并使用 APT 软件包管理器安装 MariaDB 服务器和客户端。

sudo apt update && sudo apt install -y mariadb-server mariadb-client

该命令会安装指定版本的 MariaDB 数据库引擎和客户端,以及其他额外的软件包和依赖项。

你可以按所示确认 MariaDB 的已安装版本。

mariadb --version

第 2 步:启动并启用 MariaDB

默认情况下,MariaDB 数据库引擎会在安装时自动启动。你可以通过运行以下命令来验证这一点:

sudo systemctl status mariadb

从上面的输出中,你可以看到 MariaDB 服务正在运行。如果由于某种原因,你发现该服务处于非活动状态或未运行,你可以按如下方式启动它。

sudo systemctl start mariadb

此外,请考虑启用 MariaDB 在每次系统启动时都启动,如所示。

sudo systemctl enable mariadb

上述命令可确保每次服务器重新启动或开机时,MariaDB 都会自动启动。

第 3 步:配置 MariaDB

MariaDB 附带默认设置,这些设置被认为是弱的,并且存在可能被恶意方利用导致数据泄露的漏洞。

要解决此问题,你需要额外采取一个步骤并强化你的 MariaDB 实例。要提高 MariaDB 数据库引擎的安全性,你需要运行 mysql_secure_installation shell 脚本,如所示。

sudo mysql_secure_installation

该脚本会引导你完成一系列提示,这些提示将要求你更改涉及 MariaDB 数据库引擎的安全选项。

第一个提示会要求你提供当前的 root 密码,由于尚未设置任何密码,因此只需按键盘上的 ENTER 即可。

接下来,系统将提示你输入数据库 root 密码。这确保了没有身份验证,任何人都无法以 root 用户身份登录。因此,键入 “Y” 并提供数据库 root 密码并确认它。

然后,针对后续提示按 “Y”,以便根据最佳安全实践配置数据库引擎。这将执行以下操作:

  • 从数据库服务器中删除匿名用户
  • 禁用远程 root 登录。这可确保 root 用户只能从“localhost”登录到数据库服务器
  • 删除 MariaDB 默认附带的测试数据库
  • 重新加载权限表,使更改立即生效

此时,你已成功完成 MariaDB 的初始安全配置。

第 4 步:配置密码验证的管理用户

在本节中,你将在数据库服务器中创建一个新的用户帐户,并使用密码身份验证,稍后将管理权限分配给该用户。因此,请按如下方式以 root 用户身份登录:

sudo mariadb -u root -p

接下来,创建一个常规用户。在此处,我们创建一个名为 admin_user 的用户。请务必将 secret_password 替换为你首选的用户密码。

CREATE USER 'admin_user'@'localhost' IDENTIFIED BY 'secret_password';

输出

Query OK, 0 rows affected (0.000 sec)

接下来,将所有权限授予 admin_user。这实际上会将数据库 root 用户的所有权限分配给该用户。

GRANT ALL PRIVILEGES ON *.* TO 'admin_user'@'localhost';
  • .* 通配符表示用户有权在数据库服务器中的任何数据库上执行任何任务。

要应用更改,请刷新权限。

FLUSH PRIVILEGES;

最后,退出数据库服务器。

EXIT;

第 5 步:测试 MariaDB

配置了 MariaDB 数据库服务器后,你现在可以登录并运行一些查询。继续使用你刚刚创建的管理用户登录到数据库服务器。

sudo mariadb -u admin_user -p

提供管理用户的密码并按 ENTER 键。在 MariaDB shell 上方,将显示有关数据库服务器的一些详细信息,包括连接 ID、服务器版本和版权信息。

要检查现有数据库,请运行以下命令:

SHOW DATABASES;

输出

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
4 rows in set (0.002 sec)

要创建一个新数据库,请运行以下查询。在此示例中,我们创建一个名为 test_db 的数据库。

CREATE DATABASE test_db;

输出

Query OK, 1 row affected (0.000 sec)

要应用所有已做的更改,而无需重新启动或重新加载 MariaDB,请运行以下查询:

> FLUSH PRIVILEGES

输出

Query OK, 0 rows affected (0.000 sec)

要列出数据库引擎中所有现有用户,请运行以下查询。

SELECT host, user FROM mysql.user;

输出

+-----------+-------------+
| Host      | User        |
+-----------+-------------+
| localhost | admin_user  |
| localhost | mariadb.sys |
| localhost | root        |
+-----------+-------------+
3 rows in set (0.001 sec)

要退出 MariaDB 提示符,只需运行:

QUIT

输出

Bye

第 6 步:配置 MariaDB 以获得最佳性能

MariaDB 的默认设置只允许它在桌面系统上发挥最佳作用,因为它们的资源利用率较低。但是,如果你打算将 MariaDB 部署到生产环境,则需要采取一些额外的步骤来配置它,以便以最佳性能处理大量工作负载。

在本节中,我们将探讨一些你可以配置的变量,以便充分利用你的数据库服务器。

通常通过编辑 /etc/mysql/my.cnf 配置文件来配置 MariaDB。它包含许多确定数据库性能的变量。

为了数据库服务器的最佳性能,请考虑以下要点:

  • 指定 InnoDB 缓冲池大小
  • 禁用交换性
  • 指定最大连接数
  • 禁用 MariaDB/MySQL DNS 查找
  • 指定查询缓存大小
  • 启用慢查询日志
  • 指定空闲连接值

让我们快速浏览一下每个变量。

指定 InnoDB 缓冲池大小

自 2010 年 MyISAM 弃用以来,InnoDB 是 MariaDB 的默认存储引擎。可以将其配置为向数据库服务器提供高可靠性和高性能。

你可以通过在 /etc/mysql/my.cnf 文件中设置 innodb_buffer_pool_size 参数,在 MariaDB 中启用缓存和索引。分配给此参数的内存量取决于服务器上的 RAM 量。

最常见的做法是将此值设置为系统上可用 RAM 的 70%。但是,这对于大多数系统(尤其是具有巨大 RAM 大小的系统)来说不是最佳的。

例如,一个具有 128GB RAM 的系统。按照此规则,缓冲池大小约为 90GB,仅留下 38GB 供其他进程使用。

为你的数据库服务器获取推荐的缓冲池大小值的更好方法是运行以下查询:

SELECT CEILING(Total_InnoDB_Bytes*1.6/POWER(1024,3)) RIBPS FROM
(SELECT SUM(data_length+index_length) Total_InnoDB_Bytes
FROM information_schema.tables WHERE engine='InnoDB') A;

这提供了建议的 InnoDB 缓冲池大小 (RIBPS)。

输出

+-------+
| RIBPS |
+-------+
|     1 |
+-------+
1 row in set (0.032 sec)

从以上输出中,建议的 InnoDB 缓冲池大小为 1GB。你的情况可能不同。

因此,编辑 /etc/mysql/my.cnf 配置文件并添加以下行。请务必根据你得到的结果指定内存大小。

innodb_buffer_pool_size = 1G

保存更改并重新启动 MariaDB 以应用更改。

sudo systemctl restart mariadb

禁用交换性

交换空间是硬盘上的一个特殊区域,当 RAM 即将耗尽或用完时使用。发生交换时,你的磁盘 I/O 将被利用,并会显着降低服务器速度。如果未采取正确的措施,服务器可能会崩溃。因此,你需要通过在终端上运行以下命令来禁用交换性。

sudo sysctl -w vm.swappiness=0

指定最大连接数

max_connections 参数指定当前在你的 MariaDB 服务器上启动的并发连接数。过多的连接通常会导致较高的 CPU 负载和内存利用率。对于小型网站,连接数范围为 300 到 500 个连接,而高流量网站的连接数范围为 1000 到 1500 个连接。

可以使用以下 SQL 查询设置 max_connections 值。在此示例中,最大连接数已设置为 500 个并发连接。

mysql> set global max_connections=500;

禁用 MariaDB/MySQL DNS 查找

启动新连接时,MariaDB 会执行 DNS 查找以解析访问者的 IP 地址。当 DNS 服务器出现问题或检测到无效的 DNS 配置时,可能会导致延迟。

要禁用 DNS 查找,只需在 /etc/mysql/my.cnf 配置文件中添加以下行。

skip-name-resolve

然后重新启动 MariaDB 服务以应用更改。

设置查询缓存大小

另一个要包含的关键参数是 query_cache_size 指令。它用于缓存所有带有相同数据的重复查询。对于小型网站,此参数的值不应超过 64MB。即使对于高流量站点,也不建议将此值设置为千兆字节,因为它可能会显着降低数据库性能。

因此,再次按如下所示编辑 /etc/mysql/my.cnf 文件。

query_cache_size=64M

保存更改,然后再次重新启动 MariaDB 服务。

设置空闲连接值

空闲连接会占用资源,导致数据库性能下降。这些连接进入“睡眠”状态,并且可能会长时间处于睡眠状态。你可以通过运行以下命令来探测空闲连接。

sudo mysqladmin processlist -u root -p | grep -i "Sleep"

使用 wait_timeout 指令,你可以关闭或中断空闲连接。默认情况下,此值为 28800 秒,可以进一步缩减为 60 秒。因此,请考虑将以下行添加到 /etc/mysql/my.cnf 配置文件中。

wait_timeout=60

启用慢查询日志

你还可以通过记录执行时间过长的查询来提高数据库服务器的性能。这使得更容易排查导致此问题的数据库问题。

要启用慢查询日志,请将以下行添加到 /etc/mysql/my.cnf 配置文件中。

slow-query-log = 1
slow-query-log-file = /var/lib/mysql/mysql-slow.log
long_query_time = 1

第一个参数启用慢日志的查询。

第二个参数通知数据库服务器慢查询将导出到的文件。

最后一个参数指定数据库查询的最大阈值(以秒为单位),超过该阈值则认为它是慢查询。

结论

在本指南中,你学习了如何成功地在 Ubuntu 22.04 服务器上安装 MariaDB。你已使用 mysql_secure_installation shell 脚本成功安装、启动、启用和保护了 MariaDB 数据库服务器。我们还进一步研究了一些你可以用来确保数据库服务器最佳性能的最佳实践。查看 官方 MariaDB 文档,以获取有关数据库服务器的其他信息。

雨云 - 新一代云服务提供商: https://rainyun.ivwv.site
我的博客:https://blog.ivwv.site