sysbench分库分表压测脚本
以下是一个使用sysbench进行分库分表压测的脚本示例:
#!/bin/bash
# 数据库连接信息
DB_HOST="localhost"
DB_PORT="3306"
DB_USER="root"
DB_PASSWORD="password"
DB_NAME="test"
# sysbench压测参数
SYSBENCH_THREADS=16
SYSBENCH_TIME=60
SYSBENCH_TABLES=10
SYSBENCH_TABLE_SIZE=1000000
# 创建分表
create_tables() {
for ((i=1; i<=$SYSBENCH_TABLES; i++)); do
table_name="sb_table_$i"
sql="CREATE TABLE IF NOT EXISTS $table_name (id INT AUTO_INCREMENT PRIMARY KEY, data VARCHAR(100));"
mysql -h$DB_HOST -P$DB_PORT -u$DB_USER -p$DB_PASSWORD -e "$sql" $DB_NAME
done
}
# 导入数据
import_data() {
for ((i=1; i<=$SYSBENCH_TABLES; i++)); do
table_name="sb_table_$i"
sysbench /usr/share/sysbench/oltp_insert.lua \
--db-driver=mysql \
--mysql-host=$DB_HOST \
--mysql-port=$DB_PORT \
--mysql-user=$DB_USER \
--mysql-password=$DB_PASSWORD \
--mysql-db=$DB_NAME \
--table-size=$SYSBENCH_TABLE_SIZE \
--tables=$table_name \
--threads=$SYSBENCH_THREADS \
--time=$SYSBENCH_TIME \
prepare
done
}
# 执行压测
run_benchmark() {
for ((i=1; i<=$SYSBENCH_TABLES; i++)); do
table_name="sb_table_$i"
sysbench /usr/share/sysbench/oltp_read_only.lua \
--db-driver=mysql \
--mysql-host=$DB_HOST \
--mysql-port=$DB_PORT \
--mysql-user=$DB_USER \
--mysql-password=$DB_PASSWORD \
--mysql-db=$DB_NAME \
--table-size=$SYSBENCH_TABLE_SIZE \
--tables=$table_name \
--threads=$SYSBENCH_THREADS \
--time=$SYSBENCH_TIME \
run
done
}
# 清理数据
cleanup() {
for ((i=1; i<=$SYSBENCH_TABLES; i++)); do
table_name="sb_table_$i"
sysbench /usr/share/sysbench/oltp_common.lua \
--db-driver=mysql \
--mysql-host=$DB_HOST \
--mysql-port=$DB_PORT \
--mysql-user=$DB_USER \
--mysql-password=$DB_PASSWORD \
--mysql-db=$DB_NAME \
--table-size=$SYSBENCH_TABLE_SIZE \
--tables=$table_name \
--threads=$SYSBENCH_THREADS \
cleanup
done
}
# 创建分表
create_tables
# 导入数据
import_data
# 执行压测
run_benchmark
# 清理数据
cleanup
在脚本中,首先定义了数据库连接信息和sysbench的压测参数。然后,通过create_tables函数创建分表。接下来,使用import_data函数导入数据。然后,使用run_benchmark函数执行压测。最后,使用cleanup函数清理数据。
请注意,脚本中的sysbench路径和分表的数量、大小等参数需要根据实际情况进行调整
原文地址: http://www.cveoy.top/t/topic/hMpG 著作权归作者所有。请勿转载和采集!