MariaDB 11.0 – 新的优化器,新的主版本系列

MariaDB 10.0.0 发布于十多年前(2012 年 11 月 12 日),你可能会问自己 MariaDB 11.0.0 何时发布。如果是这样,我可以回答你:就在今天。

您现在可以从我们的专用下载页面下载 MariaDB Server 11.0 Alpha 预览版,并查看发行说明

时光飞逝……

当然,我们启用新的首位版本号有比仅仅十年过去更好的理由。重要的新特性。与早期版本存在重大不兼容性。

使用 Rust 编写用户定义函数

向 MariaDB 或 MySQL 服务器实例添加功能的最直接方法之一是创建用户定义函数(UDF)。这些是可从动态二进制文件加载的编译函数,比用 SQL 编写的函数性能更高、更灵活,提供与内置函数相同的功能。

这些 UDF 通常用 C 或 C++ 编写,但现在有一个库可以轻松地用 Rust 编写它们。这篇博客讨论了编写这个库的一些理由,然后是一个非常基础的用法示例,无需任何 Rust 语言经验即可理解。

制定行为准则

这可能早就该做了,但根据最近发生的事件,我们在 MariaDB Foundation 启动了行为准则项目。我们的目标是征集您的反馈,并在如果意见趋同的情况下,理想地在 1 月底之前制定出行为准则(CoC)。

与此同时,如果我们在 MariaDB 邮件列表或其他地方看到不可接受的行为,我们将采取行动。对于那些曾有过不愉快经历而我们过去未采取任何行动的人,我们在此表示歉意。

关于行为准则的措辞,我们的目标是力求简洁。宏伟的目标往往会引发分散注意力的争论;

MariaDB 中的系统变量 replicate_rewrite_db

MariaDB 10.11.0,我们的最新预览版本,包含相当多的改进。我们在这里将要讨论的是 replicate-rewrite-db。这个选项从 10.11.0 版本开始,基于 MDEV-15530 成为一个系统变量。在此版本之前,它只是 mariadbd 和 mariadb-binlog 二进制文件使用的选项。此选项的行为没有改变;它只是变成了一个动态变量。

如何尝试此功能

最快的方法是在 docker / podman 中试用 MariaDB 10.11(请参阅博客 mariadb-replication-using-containers),使用以下命令:

要启动一个主 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

要启动副本/secondary,请运行启动 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 中的 GRANT TO PUBLIC

MariaDB 10.11.0,我们的最新预览版本,包含相当多的改进。我们今天将要讨论的是 GRANT … TO PUBLIC。

背景

MariaDB 有相当复杂的权限系统。其中大部分基于 SQL 标准规范;但我们确实有一些特定的 MariaDB 扩展。GRANT … TO PUBLIC (MDEV-5215) 是一个标准特性,现在在 MariaDB 10.11.0 中作为预览版提供。它与 ROLES 和 DEFAULT ROLE 相关,但涵盖了不同的用例。

ROLES 实际上是用户可以启用和禁用的“权限包”。

MariaDB Server 最新版本中的回归问题

我们最近发布的 MariaDB Server 版本引入了一些回归问题,从 10.6 系列开始,也影响了 10.7 – 10.9 版本。这篇博客文章旨在解释这些问题,希望能最大程度地减少影响。我们很可能很快就会发布一个纠正这些问题的新版本 MariaDB。

表上的 InnoDB 全文索引导致断言错误 (MDEV-29342)

InnoDB 存储引擎中存在一个错误,即全文索引可能与实际表数据不同步。这会发生在上次 InnoDB 同步(异步发生)和服务器关闭之间只插入了一行新数据的情况下。

MariaDB Server 代码贡献之路

我已经在 MariaDB Foundation 工作了几个星期,担任首席贡献官,很高兴再次成为 MariaDB 大家庭的一员。我的工作一部分是帮助社区调整拉取请求,使其可以被合并。然而,我发现工作中糟糕的一点是不得不对那些显然花费了开发者大量时间和精力的贡献说“不”。

贡献可能因为多种原因被拒绝或至少需要修改。

贡献愿望清单

您想为 MariaDB Server 的代码库、功能集或质量做出贡献吗?这里列出了您可以提供的帮助——换句话说,这是我们的贡献愿望清单。

解决自己的痛点

关于代码贡献的假设通常是,代码贡献者会按照自己的需求方向扩展产品,而这些需求又与其他用户的需求相近。“解决自己的痛点”是常用的一句话。

有些痛点更具普遍性

话虽如此,也有潜在的贡献者与我们联系,他们的贡献方向更具普遍性。