使用 Docker 官方镜像进行迁移

在本篇博客中,我们将探讨*如何设置 docker compose 文件以便从 MySQL 5.7 迁移*到最新的 MariaDB。

在下一篇博客中,我们将解释如何设置 docker compose 文件以便从 MySQL 8.0 迁移到 MariaDB。

从 MySQL 5.7 迁移到 MariaDB 的步骤如下:

  1. 通过运行 docker-compose 文件启动容器
  2. 使用 MySQL 数据目录并通过 MARIADB_AUTO_UPGRADE=1 启动 MariaDB

让我们详细了解每个步骤。

1. 启动 MySQL

MySQL 容器使用以下 docker-compose 文件启动。

没有 mysqladmin 的 MariaDB Server Docker 官方镜像健康检查

MariaDB Server 11.0 最近发布了,其 Docker 官方镜像不包含 mysqladmin,这在某些使用场景下导致健康检查失败。这种行为改变让一些人感到意外。我们注意到在容器、自定义健康检查和一些 /docker-entrypoint-initdb.d 脚本中使用了许多 mysql 名称。为了帮助正确使用这些功能,让我们来谈谈容器中可用于执行健康检查和初始化功能的内容。

关于健康检查,Docker 官方镜像中没有 HEALTHCHECK(有原因),但 MariaDB Server 容器确实有一个 healthcheck.sh 脚本。

创建指向远程服务器的链接并使用 CONNECT SE 访问数据

在本篇博客中,我们将看到如何创建指向远程服务器的链接并使用它一次访问多个表。
上一篇博客中,我们了解了如何在 Docker 容器之间建立远程连接。
我们之前的方法是指定连接字符串,仅引用单个表。
但是如果我们需要更多表,甚至需要整个数据库怎么办?

解决方案是使用 CREATE SERVER 语句链接到远程数据库。
通过这种方式获得的链接可以传递给存储引擎(SE)的 CREATE TABLE 语句,从而建立连接,存储引擎将使用表发现功能了解表字段并创建表。

棘手的问题?MariaDB 调试容器

MariaDB 确实存在错误。用户有时会遇到这些错误。有时开发者长时间查看错误报告和代码,仍然无法理解情况是如何发生的。开发者在分析过程中会提出这样的问题:

  • 我想知道这是否已在 {未发布的版本} 中修复?但我怎么能要求用户测试这个呢?
  • 我能否让用户获取有助于更好地理解此问题的优秀堆栈跟踪?但用户有时觉得这很困难。
  • 这个错误发生在什么具体的硬件和内核配置上?我该如何重现它?

在 Docker 中使用 CONNECT SE 通过示例访问远程 JSON 数据

CONNECT 是一个存储引擎(SE)插件,用于访问外部、本地或远程数据。在本篇博客中,我们将展示如何在 Docker 容器中安装 CONNECT 存储引擎以及如何在容器之间共享 JSON 数据。

在 Docker 中启用 CONNECT SE 插件

CONNECT SE 需要安装在容器内部才能使用。要了解如何操作,请查看在 MariaDB Docker Library 容器中安装插件

在远程服务器上创建 JSON 数据

CONNECT SE 对 MariaDB 最重要的功能是其灵活性,可以从各种数据源创建表,例如同一数据库和其他 DMBS 的表或不同格式的文件。

在 MariaDB Docker Library 容器中安装插件

MariaDB 插件是软件组件,无需重新构建 MariaDB Server 即可添加到核心软件中。插件可以是存储引擎、附加安全要求、关于服务器的特殊日志信息等。MariaDB 有大量内置插件是永久安装的(在 SHOW PLUGINS 查询中列出)。插件可以在启动时、初始化期间加载,或在服务器运行时动态加载。

在本篇博客中,我们将看到如何在 MariaDB 容器中列出可用插件以及在容器中安装插件的方法。

从镜像中清除生命周期结束版本

OSU Open Source Labs 多年来一直支持 MariaDB,托管我们分发版本的镜像,我们对此深表感激。我们被问到是否可以减小大小,因为我们的镜像使用量已增长到 1TB,与其他项目相比相当高。

为了满足这一请求,我们从镜像中移除了所有生命周期结束的版本,包括 5.5、10.0 和 10.1,从而将已用空间减半。

MariaDB 在 OSU Open Source Lab 镜像上的空间使用情况

结果发现,仍有一些持续集成系统在使用这些仓库。

开发者技巧:使用 Docker 快速测试 MariaDB 安装/升级

这里为任何可能想测试 MariaDB 最新开发版本是否可以安装/升级的开发者提供一个快速技巧。传统上,开发者似乎会保留一堆虚拟机,用于测试 MariaDB 的安装和升级相关事项。虚拟机快照、保持更新、启动、停止等操作耗时且不太方便。

一个快得多选择是为每次测试使用全新的 Docker 镜像。然而,Docker 镜像通常只运行一个进程,因此不能模拟完整的操作系统,并且缺少 systemd 交互等重要功能。…