MySQL Router 是 MySQL 服务器源代码树的一部分;编译 MySQL 服务器也会编译 MySQL Router。这假设 -DWITH_ROUTER=ON
,默认情况下启用此选项。这里的说明很简短,有关特定先决条件和更多详细信息,请参阅从源代码安装 MySQL。
MySQL Router 源代码可以在 MySQL 服务器源代码仓库的 router
目录中找到。
获取源代码
要编译 MySQL Router,请从https://dev.mysqlserver.cn/downloads/mysql下载 MySQL 服务器源代码。或者,git clone GitHub 上的 mysql-server。
下载并解压缩 MySQL 服务器源文件,例如
$> tar xzf mysql-8.4.0.tar.gz
$> cd mysql-8.4.0
完成后,您需要像使用 MySQL 服务器一样使用 cmake 进行配置。
配置
CMake 程序提供了对如何配置源代码分发的控制。通常,您使用 CMake 命令行上的选项来执行此操作。此处未记录 CMake 选项,请参阅MySQL 源代码配置选项。
要编译源代码,请创建一个文件夹来包含已编译的二进制文件和可执行文件,运行 cmake 创建 make 文件,然后编译代码。有关更多详细信息,包括特定于平台的先决条件和注意事项,请参阅从源代码安装 MySQL 服务器。
如果您更改了任何内容并且需要从头开始重新编译,请确保在执行 cmake
命令之前删除 CMakeCache.txt
文件。
首先执行 cmake
命令以创建 make 文件。以下命令从 MySQL 服务器源代码树的根目录运行
$> mkdir build && cd build
$> cmake ..
执行 cmake
可能会产生与缺少库或工具相关的错误。例如,macOS 构建可能需要引用更新的 bison 可执行文件
$> cmake .. -DBISON_EXECUTABLE=/usr/local/opt/bison/bin/bison
编译
您可以像往常一样编译 MySQL 服务器(只需 make),因为它也会编译 MySQL Router,或者构建特定于 MySQL Router 的目标。例如,仅使用其库、插件和测试构建 MySQL Router
$> make mysqlrouter_all
(可选)使用 ctest 执行特定于 MySQL Router 的测试
$> ctest -R routertest_
安装
没有 make 选项可以仅从源代码安装 MySQL Router,因为执行 make install
会启动完整的 MySQL 服务器构建。
与开发者相关的注意事项
与使用和测试本地编译的 MySQL Router 版本进行开发相关的注意事项
-
要在没有
make install
的情况下运行本地构建,请将 Router 配置为查找新构建的plugin_folder
,因为编译会生成非标准的安装目录结构。手动编辑生成的mysqlrouter.conf
或在引导期间设置它,例如使用:--conf-set-option=DEFAULT.plugin_folder=../plugin_output_directory
类似地,还要相应地设置
runtime_folder
,例如:--conf-set-option=DEFAULT.runtime_folder=../runtime_output_directory
虽然各个目标确实会生成二进制文件,例如
make mysqlrouter_password
,但建议构建所有 Router 目标要避免构建单元测试,还要使用
-DWITH_UNIT_TESTS=0
进行配置