美文网首页MySQL(总)
MySQL压测②--tpcc安装与使用

MySQL压测②--tpcc安装与使用

作者: 飞翔的Tallgeese | 来源:发表于2018-05-23 00:22 被阅读1次

    IP架构

    sysbench部署服务器:172.17.100.107

    压测服务器:172.17.100.100(虚拟机)

    配置:4核8G

    数据磁盘:100G

    MySQL部署目录:/usr/local/mysql

    前置工作

    #关闭SElinux

    sed -i 's/enforcing/disabled/g' /etc/sysconfig/selinux

    setenforce=0

    防火墙配置172.17.100.0/24网段通畅,3306端口开放

    ##############################

    因为此前在部署sysbench的时候已经完成了gcc,libtool,openssl的部署,此处不确定是否需要完成相关动态库的部署,该部分的部署调试参照前文的前置工作部分:MySQL压测--sysbench安装与使用

    ##############################

    下载

    原安装路径下载

    wget http://imysql.com/wp-content/uploads/2014/09/tpcc-mysql-src.tgz

    叶总修改后的版本下载

    http://imysql.com/…tpcc-mysql-src-yejr-20141010.zip

    ##############################

    两个版本的对比就是叶总对表主键列进行了自增处理,以及取消了外键;

    具体区别可以参看叶总的相关文章

    ##############################

    安装

    cd /usr/local/tpcc-yejr-mysql/src

    make

    如果没有报错的话,会在/usr/local/tpcc-yejr-mysql/ 路径下生成tpcc_load、tpcc_start

    前一个用来灌数据,后一个用来压测

    (个人习惯)修改初始化表脚本名

    mv /usr/local/tpcc-yejr-mysql/create_table-aidpk.sql /usr/local/tpcc-yejr-mysql/create_table.sql

    压测部分(采用叶总版本)

    初始化数据库环境

    建库

    mysqladmin -h 172.17.100.100 -utpcc -ptpcc create tpcc

    建表

    mysql -utpcc -ptpcc -h 172.17.100.100 tpcc < /usr/local/tpcc-yejr-mysql/create_table.sql

    灌测试数据

    语法:

    ./tpcc_load TCP/IP dbname user "password" N

            N:创建的仓库数量

            TCP/IP:如果不是通过远程连接的话,tpcc默认会读取/var/lib/mysql/mysql.sock,这样需要做一个软链接

            dbname:数据库名,也就是tpcc了

            user:账号

            password:密码

    本次测试创建100个warehouse

    ./tpcc_load 172.17.100.100 tpcc tpcc "tpcc" 100

    (没有采用并行脚本,以本机的硬件水平,本次创建100个仓库花费在2个小时以上...崩溃)

    (文末附并行导入脚本,据说效率提升10倍以上)

    完成数据灌入,占用空间23G

    执行压测

    语法:./tpcc_start -h server_host -P port -d database_name -u mysql_user -p mysql_password -w warehouses -c connections -r warmup_time -l running_time -i report_interval -f report_file

    ./tpcc_start -h 172.17.100.100 -P 3306 -d tpcc -u tpcc -p tpcc -w 100 -c 64 -r 600 -l 3600 -i 10 -f tpcc_64threads_`date +%Y%m%d%H%M%S`.log

    静候结果...

    压测完成

    tpcc压测完成

    附录(并行导入脚本)

    ######################################################################

    #!/bin/bash

    # Configration

    MYSQL=/usr/local/mysql/bin/mysql

    TPCCLOAD=./tpcc_load

    TABLESQL=./create_table.sql

    # CONSTRAINTSQL=./add_fkey_idx.sql

    IP=172.17.100.100

    DEGREE=`getconf _NPROCESSORS_ONLN`

    SERVER=localhost

    DATABASE=tpcc

    USER=tpcc

    PASS=tpcc

    WAREHOUSE=100

    # Load

    set -e

    $MYSQL -h $IP -u $USER -p$PASS -e "DROP DATABASE IF EXISTS $DATABASE"

    $MYSQL -h $IP -u $USER -p$PASS -e "CREATE DATABASE $DATABASE"

    $MYSQL -h $IP -u $USER -p$PASS $DATABASE < $TABLESQL

    # $MYSQL -u $USER -p$PASS $DATABASE < $CONSTRAINTSQL

    echo 'Loading item ...'

    $TPCCLOAD $SERVER $DATABASE $USER $PASS $WAREHOUSE 1 1 $WAREHOUSE > /dev/null

    set +e

    STATUS=0

    trap 'STATUS=1; kill 0' INT TERM

    for ((WID = 1; WID <= WAREHOUSE; WID++)); do

        echo "Loading warehouse id $WID ..."

        (

            set -e

            # warehouse, stock, district

            $TPCCLOAD $SERVER $DATABASE $USER $PASS $WAREHOUSE 2 $WID $WID > /dev/null

            # customer, history

            $TPCCLOAD $SERVER $DATABASE $USER $PASS $WAREHOUSE 3 $WID $WID > /dev/null

            # orders, new_orders, order_line

            $TPCCLOAD $SERVER $DATABASE $USER $PASS $WAREHOUSE 4 $WID $WID > /dev/null

        ) &

        PIDLIST=(${PIDLIST[@]} $!)

        if [ $((WID % DEGREE)) -eq 0 ]; then

            for PID in ${PIDLIST[@]}; do

                wait $PID

                if [ $? -ne 0 ]; then

                    STATUS=1

                fi

            done

            if [ $STATUS -ne 0 ]; then

                exit $STATUS

            fi

            PIDLIST=()

        fi

    done

    for PID in ${PIDLIST[@]}; do

        wait $PID

        if [ $? -ne 0 ]; then

            STATUS=1

        fi

    done

    if [ $STATUS -eq 0 ]; then

        echo 'Completed.'

    fi

    exit $STATUS

    ######################################################################

    参考文档:

    做图部分:运维之美-tpcc

    实验部分:老叶茶馆-tpcc

    后续:优化后的压测对比

    相关文章

      网友评论

        本文标题:MySQL压测②--tpcc安装与使用

        本文链接:https://www.haomeiwen.com/subject/mpdljftx.html