暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

使用sysbench压测opengauss

背景

最近学习了一波 openGauss,他基于 postgres 内核,但改动其实很大的,例如把多进程模型都改为 MySQL 用的多线程模型了,这就是有点 MySQL 风格了,所以他支持高并发的能力应该不错。

这篇文章,讲的是如何部署一个支持测试 openGauss 的 sysbench 软件。

部署sysbench

要使 sysbench 支持 openGauss,实际上就是让 sysbench 支持 postgres 就可以了。

好了,对于PGer,本文已完结。。

安装依赖包

# 通用依赖包,支持MySQL的sysbench也需要这些
yum -y install make automake libtool pkgconfig unzip libaio-devel

#以下是支持mysql压测的依赖项
yum install -y mysql-devel

# 以下安装支持pg的pgsql includes、pgsql libs等依赖
wget https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm --no-check-certificate
rpm -ivh pgdg-redhat-repo-latest.noarch.rpm
yum -y install postgresql-devel postgresql

下载sysbench

cd ~
version="1.0.20"
wget https://github.com/akopytov/sysbench/archive/${version}.zip

编译安装sysbench

unzip 1.0.20.zip
cd sysbench-1.0.20

./autogen.sh
./configure --prefix=/sysbench --with-pgsql

make && make install

默认会支持mysql,如果不需要,可以显式地 ./configure --prefix=/sysbench --with-pgsql --without-mysql

环境变量设置

vi /etc/profile
#尾部添加这一行
export PATH=/sysbench/bin:$PATH

source /etc/profile

验证部署sysbench成功

[root@192-168-199-133 sysbench-1.0.20]# sysbench --version
sysbench 1.0.20

sysbench压测openGauss

建用户、授权、建库

[root@db01 ~]# su - omm
Last login: Sun Oct 30 23:30:24 CST 2022 on pts/0
[omm@db01 ~]$ gsql -d postgres -p 40000 -r
gsql (openGauss 3.0.0 build 58ef6fad) compiled at 2022-09-06 16:04:55 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.

CMDB=# create user sbtest identified by 'Opengauss@2022';
CREATE ROLE
CMDB=# GRANT ALL PRIVILEGES TO sbtest;
ALTER ROLE
CMDB=# create database sbtest;
CREATE DATABASE

压测prepare、prewarm、run三连招

sysbench /sysbench/share/sysbench/oltp_read_write.lua \
  --db-driver=pgsql --pgsql-host=192.168.199.131 --pgsql-port=40000 \
  --pgsql-user=sbtest --pgsql-password='Opengauss@2022' \
  --pgsql-db=sbtest --tables=10 --table-size=1000000 \
  --threads=4 --time=300  --report-interval=10 \
prepare

sysbench /sysbench/share/sysbench/oltp_read_write.lua \
  --db-driver=pgsql --pgsql-host=192.168.199.131 --pgsql-port=40000 \
  --pgsql-user=sbtest --pgsql-password='Opengauss@2022' \
  --pgsql-db=sbtest --tables=10 --table-size=1000000 \
  --threads=4 --time=300  --report-interval=10 \
prewarm

FATAL: `sysbench.cmdline.call_command' function failed: sysbench/share/sysbench/oltp_common.lua:100: prewarm is currently MySQL only

只有MySQL支持prewarm(预热),所以openGauss我并没有预热。

sysbench /sysbench/share/sysbench/oltp_read_write.lua \
  --db-driver=pgsql --pgsql-host=192.168.199.131 --pgsql-port=40000 \
  --pgsql-user=sbtest --pgsql-password='Opengauss@2022' \
  --pgsql-db=sbtest --tables=10 --table-size=1000000 \
  --threads=4 --time=300  --report-interval=10 \
run

openGauss和MySQL随便battle一波

上面已经有openGauss的压测结果了,下面我在同一套服务器上跑MySQL看看。

结果

一些相关配置:

机器使用的是 CentOS7.5 虚拟机,2c4g * 2台。
Opengauss:

  • 性能相关的参数采用的官方默认值
  • 主从流复制架构

MySQL

  • 采用的是我们生产优化过的参数
  • 主从增强半同步复制架构

最后

目前我对 openGuass 还是入门阶段,我用的机器配置远低于官方推荐值,并且参数未经过任何优化,所以 battle 仅供娱乐,没有参考意义,切莫当真。本文主要是提供一种压测 openGauss 的工具手段。

Enjoy MySQL!Enjoy OpenGauss!


最后修改时间:2023-05-26 16:27:22
文章转载自芬达的数据库学习笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论