Sysbench 完全指南 / 第二章:安装与编译
第二章:安装与编译
2.1 安装方式概览
Sysbench 支持多种安装方式,根据你的环境选择最适合的方法:
| 安装方式 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| 包管理器 | 快速部署、测试环境 | 简单快速 | 版本可能较旧 |
| 源码编译 | 需要最新版本或自定义功能 | 最新版本、可定制 | 需要编译依赖 |
| Docker | 容器化环境、CI/CD | 无需安装依赖 | 有容器开销 |
| 预编译二进制 | 无 root 权限 | 开箱即用 | 平台受限 |
2.2 Linux 平台安装
2.2.1 Debian / Ubuntu
使用 APT 安装(推荐,但版本可能较旧):
# 更新包索引
sudo apt update
# 安装 sysbench
sudo apt install -y sysbench
# 验证安装
sysbench --version
注意:Ubuntu 20.04 默认仓库的 sysbench 版本为 1.0.18,Ubuntu 22.04 为 1.0.20。如需最新版本,请使用源码编译或官方 PPA。
使用官方 APT 仓库安装最新版本:
# 安装依赖
sudo apt install -y curl gnupg2
# 添加 Percona 仓库(包含较新的 sysbench)
curl -O https://repo.percona.com/apt/percona-release_latest.generic_all.deb
sudo dpkg -i percona-release_latest.generic_all.deb
sudo apt update
# 安装 sysbench
sudo apt install -y sysbench
# 验证
sysbench --version
2.2.2 CentOS / RHEL / Fedora
使用 YUM / DNF 安装:
# CentOS 7 / RHEL 7
sudo yum install -y epel-release
sudo yum install -y sysbench
# CentOS 8+ / RHEL 8+ / Fedora
sudo dnf install -y epel-release
sudo dnf install -y sysbench
# 验证
sysbench --version
使用 Percona 仓库:
# 安装 Percona 仓库
sudo yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm
# 安装 sysbench
sudo yum install -y sysbench
2.2.3 Arch Linux / Manjaro
# 从 AUR 安装
yay -S sysbench
# 或者
paru -S sysbench
2.2.4 Alpine Linux
# Alpine 通常用于 Docker 容器
apk add sysbench
2.3 macOS 平台安装
2.3.1 使用 Homebrew(推荐)
# 安装 Homebrew(如果尚未安装)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 安装 sysbench
brew install sysbench
# 验证
sysbench --version
2.3.2 使用 MacPorts
sudo port install sysbench
2.3.3 注意事项
macOS 上运行 Sysbench 时需注意:
- 文件 I/O 测试的结果可能与 Linux 差异较大(APFS vs ext4)
- 某些 OLTP 测试可能需要额外配置 MySQL 客户端库路径
- Apple Silicon (M1/M2/M3) 上的性能表现可能与 Intel 不同
2.4 Windows 平台
2.4.1 WSL(推荐)
Windows 上最推荐的方式是通过 WSL(Windows Subsystem for Linux):
# 在 WSL 中安装(Ubuntu 子系统)
sudo apt update
sudo apt install -y sysbench
2.4.2 MSYS2
# 在 MSYS2 环境中
pacman -S mingw-w64-x86_64-sysbench
注意:原生 Windows 版本支持有限,推荐使用 WSL2。
2.5 源码编译安装
当包管理器提供的版本较旧,或需要自定义功能时,推荐源码编译。
2.5.1 安装编译依赖
Debian / Ubuntu:
sudo apt install -y \
build-essential \
automake \
libtool \
pkg-config \
libssl-dev \
libmysqlclient-dev \
libpq-dev \
libsqlite3-dev \
lua5.3 \
liblua5.3-dev
CentOS / RHEL / Fedora:
sudo dnf install -y \
gcc \
gcc-c++ \
automake \
libtool \
pkgconfig \
openssl-devel \
mysql-devel \
postgresql-devel \
sqlite-devel \
lua-devel \
lua-srpm-macros
macOS:
brew install automake libtool mysql openssl lua@5.3 pkg-config
2.5.2 从源码编译
# 克隆仓库
git clone https://github.com/akopytov/sysbench.git
cd sysbench
# 切换到最新稳定版(可选)
git tag -l | sort -V | tail -5
git checkout 1.0.20 # 或你想要的版本
# 如果是从 tarball
# wget https://github.com/akopytov/sysbench/archive/1.0.20.tar.gz
# tar xzf 1.0.20.tar.gz
# cd sysbench-1.0.20
# 执行 autogen(从 Git 源码编译时需要)
./autogen.sh
# 配置编译选项
./configure \
--prefix=/usr/local \
--with-mysql \
--with-pgsql \
--with-sqlite3 \
--with-lua \
--with-openssl
# 编译
make -j$(nproc)
# 安装
sudo make install
# 验证
sysbench --version
2.5.3 configure 常用选项
| 选项 | 说明 |
|---|---|
--prefix=PATH | 安装路径,默认 /usr/local |
--with-mysql | 启用 MySQL 支持 |
--with-pgsql | 启用 PostgreSQL 支持 |
--with-sqlite3 | 启用 SQLite3 支持 |
--with-lua | 启用 Lua 脚本支持 |
--with-openssl | 启用 SSL 连接支持 |
--without-mysql | 禁用 MySQL 支持 |
--without-pgsql | 禁用 PostgreSQL 支持 |
2.5.4 指定自定义 MySQL / PostgreSQL 路径
当系统存在多个版本的数据库客户端库时:
# 指定 MySQL 客户端库路径
./configure \
--prefix=/usr/local \
--with-mysql \
--with-mysql-includes=/usr/local/mysql/include \
--with-mysql-libs=/usr/local/mysql/lib
# 指定 PostgreSQL 客户端库路径
./configure \
--prefix=/usr/local \
--with-pgsql \
--with-pgsql-includes=/usr/pgsql-14/include \
--with-pgsql-libs=/usr/pgsql-14/lib
2.5.5 静态编译(适合分发)
# 需要静态库支持
./configure \
--prefix=/usr/local \
--with-mysql \
--enable-static
make -j$(nproc) LDFLAGS="-all-static"
2.6 Docker 方式
2.6.1 使用预构建镜像
# 拉取官方镜像
docker pull severalnines/sysbench
# 运行 CPU 测试
docker run --rm severalnines/sysbench \
sysbench cpu --threads=4 --time=30 run
# 运行 MySQL 测试(需要连接宿主机数据库)
docker run --rm --network host severalnines/sysbench \
sysbench oltp_read_write \
--mysql-host=127.0.0.1 \
--mysql-port=3306 \
--mysql-user=root \
--mysql-password=secret \
--tables=10 \
--table-size=100000 \
--threads=4 \
--time=60 \
run
2.6.2 自定义 Dockerfile
FROM ubuntu:22.04
RUN apt-get update && apt-get install -y \
sysbench \
mysql-client \
postgresql-client \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /opt/sysbench
# 可挂载自定义 Lua 脚本
# VOLUME ["/opt/sysbench/scripts"]
ENTRYPOINT ["sysbench"]
# 构建自定义镜像
docker build -t my-sysbench .
# 使用
docker run --rm my-sysbench cpu --threads=4 --time=30 run
2.7 验证安装
安装完成后,使用以下命令验证:
# 查看版本
sysbench --version
# 输出示例:sysbench 1.0.20
# 查看帮助
sysbench --help
# 查看所有可用测试
sysbench --list-tests
# 快速 CPU 测试(验证基本功能正常)
sysbench cpu --threads=1 --time=5 run
预期输出示例:
sysbench 1.0.20 (using bundled Lua JIT)
Running the test with following options:
Number of threads: 1
Initializing random number generator from current time
Prime numbers limit: 10000
Initializing worker threads...
Threads started!
CPU speed:
events per second: 1423.56
General statistics:
total time: 5.0007s
total number of events: 7121
Latency (ms):
min: 0.68
avg: 0.70
max: 2.31
95th percentile: 0.73
sum: 5000.42
Threads fairness:
events (avg/stddev): 7121.0000/0.00
execution time (avg/stddev): 5.0004/0.00
2.8 版本升级指南
2.8.1 从 0.4.x 升级到 1.0.x
主要变化:
| 变化项 | 0.4.x | 1.0.x |
|---|---|---|
| 测试名称 | --test=oltp | oltp_read_write(直接作为命令) |
| Lua 脚本路径 | --test=path/to/script.lua | --lua-script=path/to/script.lua |
| 准备阶段 | --test=oltp --oltp-tables-count=N | oltp_read_write --tables=N prepare |
| 清理阶段 | 需要手动删除表 | oltp_read_write --tables=N cleanup |
| 输出格式 | 简单文本 | 结构化文本,更详细 |
0.4.x 旧命令:
sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=test \
--mysql-user=root prepare
1.0.x 新命令:
sysbench oltp_read_write --table-size=1000000 --mysql-db=test \
--mysql-user=root prepare
2.9 常见安装问题
问题 1:sysbench: error while loading shared libraries
原因:找不到 MySQL/PostgreSQL 客户端库。
解决:
# 查找库路径
ldconfig -p | grep libmysqlclient
# 或
locate libmysqlclient
# 添加库路径
echo "/usr/lib/x86_64-linux-gnu" | sudo tee /etc/ld.so.conf.d/mysql.conf
sudo ldconfig
问题 2:编译时报 autoreconf failed
解决:
# 确保安装了 automake 和 libtool
sudo apt install -y automake libtool
# 重新运行
./autogen.sh
问题 3:macOS 上 configure: error: MySQL client library not found
解决:
# 使用 Homebrew 安装的 MySQL 客户端
export LDFLAGS="-L/usr/local/opt/mysql-client/lib"
export CPPFLAGS="-I/usr/local/opt/mysql-client/include"
export PKG_CONFIG_PATH="/usr/local/opt/mysql-client/lib/pkgconfig"
./configure --with-mysql
问题 4:sysbench: command not found 安装后找不到命令
解决:
# 检查安装路径
which sysbench || find / -name sysbench 2>/dev/null
# 如果安装在非标准路径
export PATH=$PATH:/usr/local/bin
# 永久生效
echo 'export PATH=$PATH:/usr/local/bin' >> ~/.bashrc
source ~/.bashrc
2.10 小结
| 要点 | 建议 |
|---|---|
| 快速体验 | 使用包管理器安装(apt/yum/brew) |
| 生产环境 | 源码编译,确保版本一致性 |
| CI/CD | Docker 方式最方便 |
| 版本选择 | 至少 1.0.18+,推荐 1.0.20+ |
| 多数据库支持 | 编译时启用 --with-mysql --with-pgsql |