获取代码,构建,测试
MariaDB 服务器托管在 GitHub 上。官方仓库位于 https://github.com/MariaDB/server。
前提条件
为了让调试过程更轻松,请确保您的硬件至少有 2GB 内存、10GB 硬盘和至少 4 个核心。我们将使用 git
和 cmake
,因此您需要安装 git 和 cmake。
拥有一个 GitHub 账号将使贡献过程更容易。
获取源代码并决定目标分支
建议您进行开发工作时使用普通用户身份,而不是超级用户身份。
- 如果您正在开发新功能或重构代码,请使用 main 分支。
- 如果您正在修复错误,包括任何构建或功能故障,请使用出现该错误的、受维护的最早分支。如果此错误来自我们的 Jira 错误跟踪器,则适用 Jira 中受维护的最早
Fix Version/s
。截至 2025 年 1 月,受维护的最早分支是 10.5(于 2025 年 6 月终止维护)。 - 如果即将发布的版本是该系列的最终版本,为了避免修复引入永久性回归,仅将关键且安全的错误修复应用于该版本。10.5 系列的最终版本计划于 2025 年第二季度发布。如有疑问,请在 Zulip 上咨询开发人员。
获取源代码的推荐方式是分叉并克隆它。对于非默认分支,可以附加一个 --branch {version}
参数。
git clone https://github.com/YOUR-USERNAME/server
构建服务器
在构建服务器之前,您必须安装构建依赖项。Windows 用户应遵循链接 如何在 Windows 上构建 MariaDB。
在基于 Debian 的发行版上
apt-get build-dep mariadb-server
apt-get install build-essential libncurses5-dev gnutls-dev bison zlib1g-dev ccache
在基于 RPM 的发行版上
dnf builddep mariadb
可能需要一些额外的软件包来构建其他组件。如果您使用的操作系统版本自依赖项添加后有更新,也可能需要额外的软件包。
请注意,在某些 MacOS 系统上,默认的 bison 版本比我们构建 MariaDB 所需的版本稍旧。如果在构建过程中遇到语法错误,请尝试通过 Homebrew 安装 bison。
配置构建
MariaDB 使用 cmake 生成用于编译服务器的 Makefiles(或 Ninja 构建文件)。
要检查是否安装了 cmake,请运行 cmake --version
。CMake 有一个 CMAKE_BUILD_TYPE
选项,用于预定义的构建类型,这会影响优化以及构建结果是否可以被插桩。其中一种构建类型是 Debug 类型,对于此类型,优化是关闭的,并且会生成调试插桩。此选项用于创建跟踪文件,如果 mariadbd
崩溃,这些文件非常有用。未指定 CMAKE_BUILD_TYPE
运行时,使用默认值(RelWithDebugInfo
)。 所有 MariaDB 的 CMake 配置选项都可以通过以下命令显示:
cmake . -LH
其中 L
代表简称,LH
代表简称加描述,LA
列出内部和高级选项。有关更多选项,请参阅 cmake 文档。
我们始终建议进行树外构建,这样您的源代码就不会与构建生成的工件混在一起。这还允许从同一个源代码使用不同的 cmake 选项创建不同的构建目录。
如果您意外地进行了树内构建,请在重新配置和重新构建之前确保清除旧的对象文件和缓存信息。
make clean
rm CMakeCache.txt
或(推荐)这将删除所有未提交的更改。
git clean -dffx
git reset --hard HEAD
git submodule update --init --recursive
需要最后一个命令,因为新的 git clone
不会自动克隆所有内容(例如模块 libmariadb
和 storage/rocksdb/rocksdb
文件夹,它们是上游子模块)。在 git submodule update
之后,再次运行 git status
。要配置一个调试构建(对开发有用),请在源代码树旁边创建一个构建目录并切换到该目录:
mkdir build-mariadb-server-debug
cd build-mariadb-server-debug
然后通过运行以下命令配置 MariaDB:
cmake ../server -DCMAKE_BUILD_TYPE=Debug
调试构建提供了额外的测试。
CMake 现在将检查哪些库可用、安装了哪些编译器,如果一切检查无误,它将以“配置成功”的消息结束。如果出现故障,请检查您需要安装哪些库。您可能需要安装它们的开发版本。
使用 CMake 配置会在 CMakeFiles 目录下生成文件:
CMakeFiles/CMakeError.log 和 CMakeFiles/CMakeOutput.log.
初次配置完成后,您可以向 cmake 添加更多选项。选项会保存在 CMake 缓存中(构建目录 (build-mariadb-server-debug) 中的 CMakeCache.txt 文件)。
如果配置或构建不成功,您可以安装所需的软件包并重新运行 cmake。或者,如果错误仅限于某个插件,您可以使用类似于 -DPLUGIN_MROONGA=NO
的 cmake 选项禁用它。
构建时默认不包含嵌入式服务器,因为它会增加编译时间。要使用它,请使用 cmake . -DWITH_EMBEDDED_SERVER=1
编译服务器。请注意,这里的 .
是当前构建目录,而不是源目录。
作为替代方案,您也可以使用 ninja
构建系统来加快构建速度。为此,请确保您已安装 ninja
。
apt-get install ninja-build
如果您已成功安装构建系统,运行 ninja --version
将会得到安装的版本。
确保您已清除旧的对象文件,然后再次运行 cmake
,但这次带上 Ninja
标志和前缀 -G
。
cmake ../server -DCMAKE_BUILD_TYPE=Debug -G Ninja
现在您可以编译服务器了(使用 make
或 ninja
),在构建目录中调用 cmake --build .
。
为了加快构建速度,您可以排除开发中不需要的存储引擎。这里是一个示例,排除了一些存储引擎(使用 shell 扩展)以及其他用于加快构建速度的配置选项:
cmake ../server -DCONC_WITH_{UNITTEST,SSL}=OFF -DWITH_UNIT_TESTS=OFF -DCMAKE_BUILD_TYPE=Debug -DWITHOUT_DYNAMIC_PLUGIN=ON -DWITH_SAFEMALLOC=OFF -DWITH_SSL=bundled -DMYSQL_MAINTAINER_MODE=OFF -G Ninja
要查看 cmake
使用的全部选项或通过 GUI 更改它们,请在构建文件夹中运行 ccmake .
(您需要安装 cmake-curses-gui
)。
编译
使用 cmake 构建,无论使用 make 还是 ninja:
cmake --build . --parallel 5
将 5 替换为您可用于加快构建的核心数量。选项 --parallel
适用于 cmake
3.20+ 版本,或者可以像 cmake --build . -- -j5
这样将选项传递给原生工具。Ninja 会自动并行构建。
测试服务器
服务器构建完成后,我们应该测试一切是否正常工作。
要查看您的 mariadbd
二进制文件是否支持调试,请在构建目录中,于命令行运行 sql/mariadbd -V
。如果版本号以 -debug
结尾,则您的 mariadbd
二进制文件是使用调试支持编译的。
MariaDB 在 mysql-test
文件夹中定义了一个测试框架。要运行所有测试:
mysql-test/mtr --parallel=5 --mem --force --max-test-fail=40
注意:如果您使用 MacOS,请省略 --mem
标志。要仅运行 unit
测试:
mysql-test/mtr --suite=unit --mem --parallel=5
以上每个命令都在构建目录中运行。mysql-test-run
使用自己的 --defaults-file
,覆盖任何默认文件。
您可以在以下位置查看测试日志:
mysql-test/var/log
mtr
有许多有用的标志。
--parallel=#number-of-parallel-tasks
将并行运行多个测试,从而加快测试速度。即使使用并行化,该过程也可能轻易花费一个多小时。--mem
用于强制测试在虚拟内存盘上运行。只要内存充足,这将加快速度(在 MacOS 中不起作用)。--force
用于在失败后继续运行测试套件。--max-test-fail
用于限制在中止当前测试运行之前允许的测试失败次数。默认为 10。可以通过环境变量MTR_MAX_TEST_FAIL
设置其默认值。(需要--force
)--embedded
用于使用嵌入式服务器运行。--big-test
(或简写为--big
)用于运行大型测试(可能占用大量内存和/或磁盘的测试。在测试中,这些测试包含--source include/big_test.inc
。如果您只想运行大型测试,请使用该标志两次--big --big
。--help
用于显示控制运行哪个引擎/变体的选项。
构建后启动 mariadbd
您可以直接从构建目录运行 mariadbd
(无需执行 sudo cmake --install .
)。
如果您是第一次运行 MariaDB,则需要运行 mariadb-install-db
以安装所需的系统表。但在此之前,请为您创建数据的目录(此目录将用作配置文件中的 datadir
系统变量)。将以下内容复制到 ~/mariadb.cnf
文件中。
注意:如果您使用 MacOS,在本文档中所有后续步骤中,您需要使用您的主目录路径而不是 ~
。
这些位置的路径必须存在且当前操作系统用户可写入。
[client-server]
socket = /path/to/mariadb.sock
[mariadb]
datadir = path/to/your/data/dir
如果您需要更改某些内容,请阅读更多关于设置 mariadbd 配置文件和组 的信息。
现在您已创建了自己的配置文件,在安装系统表时可以使用 --defaults-file
标志调用它。要安装系统表,请在构建文件夹中调用以下命令:
./scripts/mariadb-install-db --srcdir=../server --defaults-file=~/mariadb.cnf
之后,您可以启动 mariadbd
,它默认查找选项文件。如果提供了 --defaults-file
,mariadbd
将仅从此文件中读取。运行如下:
sql/mariadbd --defaults-file=~/mariadb.cnf
启动 mariadbd
后,您可以以 root 用户身份启动客户端:
client/mariadb
接下来是什么?
如果您完成了功能/错误修复,请参阅提交拉取请求 将您的更改贡献给下一个服务器版本。
作为新贡献者,我们鼓励您探索对初学者友好的开放 Jira 任务,您可以在其中找到可以完成的任务。要处理任务,只需在工单中写下评论,说明您有兴趣参与。
阅读更多关于通用构建说明、 从构建目录运行 MariaDB、自动启动和停止 MariaDB 的信息。
另请参阅
- 开发者入门
- 为 MariaDB 服务器编写好的测试用例
- 提交拉取请求
- 贡献代码 (MariaDB 知识库)
- 在 Windows 上构建 MariaDB (MariaDB 知识库)