强曰为道

与天地相似,故不违。知周乎万物,而道济天下,故不过。旁行而不流,乐天知命,故不忧.
文档目录

第二章:安装与编译

第二章:安装与编译

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 [email protected] 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.x1.0.x
测试名称--test=oltpoltp_read_write(直接作为命令)
Lua 脚本路径--test=path/to/script.lua--lua-script=path/to/script.lua
准备阶段--test=oltp --oltp-tables-count=Noltp_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/CDDocker 方式最方便
版本选择至少 1.0.18+,推荐 1.0.20+
多数据库支持编译时启用 --with-mysql --with-pgsql

扩展阅读