概述
从源代码构建 VillageSQL 可让您获得最新功能,并允许您根据特定环境自定义构建。 以下步骤基于上游 MySQL 8.4 构建 VillageSQL。VillageSQL 也可以基于 Percona Server 构建,作为一个替代代码库——请参阅 Percona 构建页面。前置条件
在开始之前,请确保已安装以下内容:- Git - 用于克隆代码仓库
- 受支持的平台 - Debian 或 Ubuntu Linux,或安装了 Homebrew 的 macOS
步骤 1:克隆代码仓库
从 GitHub 克隆 VillageSQL Server 代码仓库。将其克隆到主目录中,以便后续 CMake 步骤无需修改即可正常工作:-b publish/mysql-8.4_0.0.7。
由于包含 MySQL 代码库,该仓库体积达数 GB。
步骤 2:安装构建依赖项
在您刚刚克隆的代码仓库中运行安装脚本。该脚本会检测您的操作系统并安装构建所需的软件包:apt-get 并会请求 sudo 权限。在 macOS 上,它使用 Homebrew。
VillageSQL CI 使用同一个脚本安装其构建依赖项,因此软件包列表始终与构建保持同步。
该脚本支持 Debian 或 Ubuntu Linux 以及 macOS。在其他 Linux
发行版上,请阅读
villagesql/bld_tools/setup_linux_build_env.sh,
并使用您自己的软件包管理器安装等效的软件包。步骤 3:使用 CMake 进行配置
在仓库外部创建构建目录并配置项目:openssl 现在是 OpenSSL 4,而服务器无法针对 OpenSSL 4 构建:
在两个平台上,路径均使用
$HOME 而非 ~。shell 仅在单词开头展开 ~,
因此 --datadir=~/mysql-data/data 传递给 mysqld 时会成为一个名称就是 ~
的目录,服务器随即中止。使用 "$HOME/..." 加引号还能在您的主目录名称
包含空格时保持路径完整。如果路径不同,请将仓库路径替换为您实际的克隆位置。解释 CMake 选项
"$HOME/villagesql-server"- 已克隆的 VillageSQL 仓库路径-DWITH_DEBUG=1- 启用 DBUG 机制和断言的非优化构建(推荐用于开发)-DCMAKE_INSTALL_PREFIX="$HOME/mysql"- 设置安装目录-DWITH_SSL="$(brew --prefix openssl@3)"- 让 cmake 使用 OpenSSL 3。步骤 2 会安装openssl@3。如果跳过了步骤 2,请先运行brew install openssl@3,因为即使软件包不存在,brew --prefix openssl@3也会输出一个路径,cmake 随后会以Wrong option or path for WITH_SSL=停止。
其他 CMake 选项
生产环境构建:如果需要重新配置,请先清除 CMake 缓存(在构建目录内运行):
步骤 4:编译代码
使用 make 进行并行编译以构建 VillageSQL。在构建目录内执行: 构建全部内容(推荐):mysql 客户端、扩展 SDK 以及示例扩展的 VEB 文件。
仅构建服务器和客户端:
INSTALL EXTENSION vsql_complex 找不到可安装的扩展包,传递 -DVillageSQL_BUILD_DIR 的扩展构建也找不到 SDK。
完成后,验证服务器和客户端二进制文件是否已构建:
步骤 5:初始化数据库
在首次启动服务器之前,初始化数据目录: 生产环境(生成密码 - 推荐):--user=root 参数:
对于类生产环境设置,请使用
--initialize(带密码)。仅在本地开发和测试时使用 --initialize-insecure(无密码)。使用 --initialize 时,将生成一个临时密码并打印到控制台:A temporary password is generated for root@localhost: <password>步骤 6:启动服务器
启动 VillageSQL 服务器:步骤 7:使用 MySQL 客户端连接
打开新终端并使用 MySQL 客户端连接到服务器: 如果使用 —initialize-insecure(无密码):更改 root 密码
如果您使用了--initialize,请更改临时密码:
验证安装
检查您是否正在运行 VillageSQL:步骤 8:设置用户和数据库
创建开发用户
用于日常开发,请创建一个非 root 用户:创建数据库
步骤 9:运行测试
在构建目录中,使用 VillageSQL 测试套件验证构建:--nounit-tests 会跳过上游 MySQL 的单元测试,其中包含已知的失败。请单独运行 VillageSQL 的单元测试:
构建原生软件包(RPM/DEB)
villagesql/bld_tools/build_deb.sh 和 build_rpm.sh 直接从源代码树构建 Debian 或 RPM 软件包,以便使用您的软件包管理器安装,而不必按照上面的手动步骤操作。两者都不需要事先运行 CMake 配置——它们都从仓库根目录的 VSQL_VERSION 和 MYSQL_VERSION 文件中得出软件包版本。在已完成步骤 1-2 的情况下,安装打包工具以及步骤 2 未涵盖的构建依赖项——在 Debian/Ubuntu 上为 dpkg-dev、debhelper、libcurl4-openssl-dev、libsystemd-dev 和 systemd-dev;在 Enterprise Linux 上为 rpm-build——然后从仓库根目录运行其中一个:
故障排除
构建因缺少依赖项而失败
请再次运行安装脚本。步骤 3会让您停留在构建目录中, 因此请使用该脚本的绝对路径:服务器无法启动
- 验证数据目录是否已初始化:
ls "$HOME/mysql-data/data/" - 检查是否有其他 MySQL/VillageSQL 实例正在使用 3306 端口
- 阅读
mysqld在其终端中打印的消息,或使用--log-error="$HOME/mysql-data/error.log"启动它并阅读该文件
扩展安装失败
- 确保扩展的
.veb文件存在于veb_dir目录中(源代码构建为$HOME/build/villagesql/lib/veb),并且其库在 Linux 和 macOS 上都命名为<extension_name>.so - 检查 VillageSQL 是否具有加载扩展所需的权限
- 验证扩展名称和
.veb文件名是否正确
后续步骤
使用扩展
了解如何安装、更新和管理 VillageSQL 扩展。
创建扩展
为 VillageSQL 构建您自己的自定义扩展。
快速入门
VillageSQL 快速入门指南。

