作者存档: Anel Husakovic
在这篇博客中,我们将探讨如何设置 Docker Compose 文件以从 MySQL 5.7 迁移到最新的 MariaDB。
在下一篇博客中,我们将解释如何设置 Docker Compose 文件以从 MySQL 8.0 迁移到 MariaDB。
从 MySQL 5.7 迁移到 MariaDB 的步骤如下:
- 通过运行 Docker Compose 文件启动容器
- 使用 MySQL 数据目录并通过 MARIADB_AUTO_UPGRADE=1 启动 MariaDB
让我们探讨每个步骤。
1. 启动 MySQL
使用以下 Docker Compose 文件启动 MySQL 容器。
…
在博客 使用容器实现 MariaDB 复制 中,我们展示了如何使用 Docker 容器在 MariaDB 中正确复制数据。
我们使用了标准复制、异步复制或惰性复制。
这种类型的复制存在的问题是,如果主服务器宕机,可能会导致数据丢失。在主服务器上提交的事务不会发送到副本服务器,并且副本服务器不会提交更改。在这种情况下,从主服务器故障转移到副本服务器可能导致相对于主服务器而言事务丢失。
为了克服这类错误,MariaDB 自 10.4 版本起集成了半同步复制,以及我们计划最终实现为 MDEV-19140 的完全同步复制。
…
在这篇博客中,我们将学习如何将数据从 Oracle 迁移到 MariaDB。
首先,我们将了解 Oracle 数据库的基础知识,以便理解演示示例中执行的步骤。之后,我们将在 Oracle 中创建一个表,并将其迁移到 MariaDB。
从 Oracle 迁移数据有两种方法
- 将 Oracle 数据导出为 CSV 并加载到 MariaDB 中。
- 使用Connect 存储引擎根据 Oracle 的源定义创建或插入表。
为了演示,我们将使用带有 Oracle Express Edition (XE) 镜像的 Docker 容器。
…
正如之前发布的版本说明中所述(例如 10.6.11),我们适用于 Red Hat Enterprise Linux, Centos, Fedora, openSUSE 和 SUSE 的 Yum/DNF/Zypper 软件源将从下一批版本开始迁移,使用带有 SHA2 摘要算法的新GPG 密钥进行签名,而非 SHA1。
我们正在迁移到的密钥与我们已经用于 Debian 和 Ubuntu 软件源的密钥相同。
- 短密钥 ID 为:0xC74CD1D8
- 长密钥 ID 为:0xF1656F24C74CD1D8
- 密钥的完整指纹为:177F 4010 FE56 CA33 3630 0305 F165 6F24 C74C D1D8
现在可以使用以下命令导入密钥,为本次更改做准备
sudo rpm –import https://rpm.mariadb.org/RPM-GPG-KEY-MariaDB
在软件源文件中包含 gpgkey=https://mirror/yum/RPM-GPG-KEY-MariaDB 的用户仍然可以使用,您只需要在 DNF 更新时接受新密钥即可。
…
MariaDB 10.11.0,我们的最新预览版,包含许多改进。我们在此讨论的是replicate-rewrite-db。基于MDEV-15530,此选项自 10.11.0 版本起成为系统变量。在此版本之前,它只是 mariadbd 和 mariadb-binlog 二进制文件使用的一个选项。该选项的行为没有变化;它只是变成了一个动态变量。
如何试用此功能
最快的方法是在 docker / podman 中试用 MariaDB 10.11(请参阅博客 使用容器实现 MariaDB 复制),使用以下命令:
要启动主 10.11.0 MariaDB 容器,克隆目录,进入克隆的目录并运行以下命令:
docker run -d –rm –name mariadb-primary \
-v $PWD/config-files/primarycnf:/etc/mysql/conf.d:z \
-v $PWD/primaryinit:/docker-entrypoint-initdb.d:z \
-v $PWD/log-files-primary:/var/lib/mysql \
-e MARIADB_ALLOW_EMPTY_ROOT_PASSWORD=True \
quay.io/mariadb-foundation/mariadb-devel:10.11
要启动副本/辅助服务器,请运行命令以启动 mariadbd 进程,并在命令行上指定 replicate-rewrite-db 选项:
docker run -d –rm –name mariadb-secondary-1 \
-v $PWD/config-files/secondary-1:/etc/mysql/conf.d:z \
-v $PWD/secondaryinit:/docker-entrypoint-initdb.d:z \
-v $PWD/log-files-secondary-1:/var/lib/mysql \
-e MARIADB_ALLOW_EMPTY_ROOT_PASSWORD=True \
quay.io/mariadb-foundation/mariadb-devel:10.11 –replicate-rewrite-db=’db1->db2′
除了将选项指定为命令行参数外,您还可以使用配置文件。
…
在前一篇博客中,我们已经了解了如何创建有状态集 MariaDB 应用程序。此外,我们还在这篇博客中了解了 MariaDB 的复制工作原理。现在,我们将尝试创建具有复制功能的有状态集应用程序。作为撰写这篇博客的良好参考,我特别感谢Kubernetes 文档以及来自阿里云的一个示例。
配置复制
为了复制 MariaDB 应用程序,我们将创建一个有状态集,它将包含一个Init 容器和一个应用程序容器。
…