简介
sysbench是一个多线程基准测试工具,它支持硬件(CPU、内存、I/O)、数据库基准压测等2种测试手段,用于评估系统的基本性能。本篇文章主要介绍sysbench在线和离线2种安装方法,并将离线编译时发生的异常记录到FAQ,当编译发生异常时可以看看最后的目录3.FAQ。
文章目录如下
1. 在线安装sysbench
1.1. 安装依赖
1.2. 在线快速安装
2. 离线安装sysbench
2.1. 离线包下载
① GitHub仓库下载
② 软件包平台下载
2.2. 离线安装步骤
① 生成配置文件
② 配置数据库信息
③ make编译
④ 配置环境变量
3. FAQ(离线安装)
3.1. autoreconf 未找到命令
3.2. make编译时,致命错误:libpq-fe.h
3.3. 安装postgresql-devel时无法验证pgdg-common
3.4. 安装postgresql-devel时冲突
1. 在线安装sysbench
sysbench文档安装说明
在Linux上下载和安装sysbench的最简单方法是使用托管的二进制包存储库。包地址:
https://packagecloud.io
在每次sysbench发布时自动更新,目前可以使用x86_64、i386和aarch64二进制文件。
1.1. 安装依赖
Debian/Ubuntu系统
# 编译必需依赖
apt -y install make automake libtool pkg-config libaio-dev
# 编译MySQL必需依赖
apt -y install libmysqlclient-dev libssl-dev
# 编译PostgreSQL必需依赖
apt -y install libpq-dev
RHEL/CentOS系统
# 编译必需依赖
yum -y install make automake libtool pkgconfig libaio-devel
# 编译MySQL必需依赖, 在RHEL/CentoS 5上替换为mysql-devel
yum -y install mariadb-devel openssl-devel
# 编译PostgreSQL必需依赖
yum -y install postgresql-devel
Fedora系统
# 编译必需依赖
dnf -y install make automake libtool pkgconfig libaio-devel
# 编译MySQL必需依赖
dnf -y install mariadb-devel openssl-devel
# 编译PostgreSQL必需依赖
dnf -y install postgresql-devel
macOS系统
- 如果已经安装了Xcode(或Xcode命令行工具)和Homebrew,可以直接执行
# 编译必需依赖
brew install automake libtool openssl pkg-config
# 编译MySQL必需依赖
brew install mysql
# 编译PostgreSQL必需依赖
brew install postgresql
# openssl没有被Homebrew链接,为了避免“ld: library not found for -lssl”错误,需要执行
export LDFLAGS=-L/usr/local/opt/openssl/lib
1.2. 在线快速安装
- 根据不同系统可直接使用shell执行
Debian/Ubuntu(shell)
curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.deb.sh | sudo bash
sudo apt -y install sysbench
RHEL/CentOS(shell)
curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash
sudo yum -y install sysbench
Fedora(shell)
curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash
sudo dnf -y install sysbench
Arch Linux(shell)
sudo pacman -Suy sysbench
macOS(shell)
- 在macOS上,最新的sysbench包可以从Homebrew获得
# 如果是编译PostgreSQL,需要添加 --with-postgresql
brew install sysbench
Windows
- 从sysbench 1.0开始,对本机Windows构建的支持就被取消,可能会在以后的版本中重新引入。目前,在windows上获取sysbench的推荐方法是使用
# Windows 10
https://msdn.microsoft.com/en-us/commandline/wsl/about
2. 离线安装sysbench
2.1. 离线包下载
- 这里提供了2种离线下载方式,任选其一即可。
① GitHub仓库下载
sysbench下载地址
https://github.com/akopytov/sysbench
② 软件包平台下载
安装包地址
https://packagecloud.io/akopytov/sysbench
sysbench安装说明地址
https://packagecloud.io/akopytov/sysbench/install
2.2. 离线安装步骤
将下载的 sysbench 包传入 Linux 系统,基本步骤为:
- ./autogen.sh(生成配置文件)
- ./configure(根据数据库生成Makefile)
- make(编译)
① 生成配置文件
进入 sysbench 目录,该目录下包含 autogen.sh 文件
执行这个文件即可
./autogen.sh
出现异常参考《目录3.FAQ》
② 配置数据库信息
执行 autogen.sh 后会生成 configure 文件,这个文件就是用于配置数据库信息,生成Makefile的文件。参数说明如下:
./configure
--prefix=<sysbench安装路径> # 默认/usr/local/lib
--with-<编译数据库> # 默认MySQL(--with-mysql),其他支持PostgreSQL(--with-pgsql)
[--without-mysql] # 取消对MySQL的默认,使用PG编译时使用该参数
--with-<编译数据库>-includes=<路径> # 指定数据库安装路径
--with-<编译数据库>-libs=<路径> # 指定数据库库路径
以KingbaseES数据库举例(基于PG研发的产品,使用PG的编译方法):
./configure \
--prefix=/home/yt/sysbench \
--with-pgsql \
--without-mysql \
--with-pgsql-includes=/home/yt/kingbase \
--with-pgsql-libs=/home/yt/kingbase/lib
..........................
MySQL编译方法:
./configure --prefix=<sysbench安装路径> --with-mysql-includes=<数据库路径> --with-mysql-libs=<数据库库路径>
PostgreSQL编译方法:
./configure --prefix=<sysbench安装路径> --with-pgsql --without-mysql --with-pgsql-includes=<数据库路径> --with-pgsql-libs=<数据库库路径>
sysbench编译手册中只写了能够编译MySQL或PostgreSQL,并没有提到Oracle、SQL server之类的数据库,不确定这两种数据库能否编译。但从理论上来说,基于MySQL或PostgreSQL代码研发的数据库都可以使用。比如基于PostgreSQL研发的国产数据库:华为GaussDB、人大金仓KingBase 等都可以使用pg的编译方式来编译。
③ make编译
完成configure配置后运行make编译即可
make -j && make install
..................
出现异常参考《目录3.FAQ》
编译完成后会根据 ./configure 配置的安装路径生成如下2个目录:
- bin:sysbench执行文件
- share:sysbench数据库脚本文件
需要注意:如果配置的安装信息在原本源码包目录(/home/yt/sysbench-master),那么sysbench执行文件将会生成在 src/ 下面,数据库脚本文件将在 src/lua/ 下面,并且配置环境变量后执行数据库压测必须在 /home/yt/sysbench-master 下才能找到压测脚本。
④ 配置环境变量
配置环境变量的目的是为了方便执行sysbench,所以只需要将 sysbench 执行文件配置到 PATH 即可。vim ~/.bashrc
export PATH=/home/yt/sysbench/bin:${PATH}
或者
export PATH=/home/yt/sysbench-master/src:${PATH}
source ~/.bashrc 生效,或者重新ssh连接生效
3. FAQ(离线安装)
3.1. autoreconf 未找到命令
当执行 autogen.sh 如果出现找不到 autoreconf 命令,说明缺少依赖
Debian或Ubuntu系统执行apt命令下载依赖
apt-get -y install autoconf automake libtool
Red Hat或CentOS系统执行yum命令下载依赖
yum -y install autoconf automake libtool
依赖下载完成后重新执行 autogen.sh 即可
3.2. make编译时,致命错误:libpq-fe.h
drv_pgsql.c:30:22: 致命错误:libpq-fe.h:没有那个文件或目录
由于我这里是通过PG的方式编译,所以这种情况就是系统缺少PostgreSQL依赖。以CentOS为例下载依赖即可
yum -y install postgresql-devel
安装依赖后重新make编译即可
Debian/Ubuntu系统使用 apt 安装依赖
安装 MySQL 依赖
apt -y install libmysqlclient-dev libssl-dev
安装 PostgreSQL 依赖
apt -y install libpq-dev
RHEL/CentOS系统使用 yum 安装依赖
安装 MySQL 依赖
yum -y install mariadb-devel openssl-devel
安装 PostgreSQL 依赖
yum -y install postgresql-devel
Fedora系统使用 dnf 安装依赖
安装 MySQL 依赖
dnf -y install mariadb-devel openssl-devel
安装 PostgreSQL 依赖
dnf -y install postgresql-devel
3.3. 安装postgresql-devel时无法验证pgdg-common
pgdg-common/7/x86_64/signature | 665 B 00:00:00
从 file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG 检索密钥
导入 GPG key 0x442DF0F8:
用户ID : "PostgreSQL RPM Building Project <pgsql-pkg-yum@postgresql.org>"
指纹 : 68c9 e2b9 1a37 d136 fe74 d176 1f16 d2e1 442d f0f8
软件包 : pgdg-redhat-repo-42.0-32.noarch (@/pgdg-redhat-repo-latest.noarch)
来自 : /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
pgdg-common/7/x86_64/signature | 2.9 kB 00:00:00 !!!
https://download.postgresql.org/pub/repos/yum/common/redhat/rhel-7-x86_64/repodata/repomd.xml: [Errno -1] repomd.xml signature could not be verified for pgdg-common
正在尝试其它镜像。
【解决方法】PG的依赖不够,通过PG官网给的yum源下载依赖
yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
下载完成后重新安装 postgresql-devel
3.4. 安装postgresql-devel时冲突
Transaction check error:
file /usr/lib64/libpq.so.5 from install of postgresql-libs-9.2.24-9.el7_9.x86_64 conflicts with file from package libpq5-15.3-42.1PGDG.rhel7.x86_64
file /usr/lib64/libpq.so from install of postgresql-devel-9.2.24-9.el7_9.x86_64 conflicts with file from package libpq5-15.3-42.1PGDG.rhel7.x86_64
【解决方法】卸载 libpq5-15.3-42.1PGDG.rhel7.x86_64 即可
# 查看
rpm -qa | grep "libpq5-15.3-42.1PGDG.rhel7.x86_64"
# 卸载
sudo rpm -e libpq5-15.3-42.1PGDG.rhel7.x86_64