sysbench壓測MyCAT的shell指令碼
中介軟體MyCAT自己之前也簡單測試過,總結過。最近做分散式測試,我大體分了三個階段:
一.環境部署,MHA和MyCAT的融合,讀寫分離
二.sharding策略和分庫分表的壓力測試
三.結合業務做分庫分表的模擬測試
尤其是分庫分表的測試方面,目前還是存在一些需要確認的點。
我在測試之前所想,做這個分散式測試的意義是什麼?是想透過測試來論證什麼,希望達到什麼目標,是否穩定,功能是否滿足需求,這些都是需要反覆明確的地方。
當然,這些我沒有留太多的時間下來,我希望是速戰速決,但是測試質量還是需要基本保證,那就是測試的場景基本要全面一些。
測試工具的選擇上,我目前先選擇了sysbench,原生支援,操作起來相對容易控制,尤其是支援的場景很豐富,在一些流水型資料的業務中,我如果側重測試密集型插入的場景,就可以很輕鬆的使用insert的模板來測試。
MyCAT的部署上本身是很簡單的,無非是一些基本的環境配置。如果是一個新手,從安裝Java到部署MyCAT,如果全程跟進,基本兩個小時都能夠拿下來。部署安裝參見之前的一篇文章Mycat讀寫分離配置實踐
而sharding策略的配置還是需要花一些時間的,首先是你得理解它的sharding邏輯。大體明白之後,事情就很簡單了。
測試的場景,我是這樣來規劃的,首先在3個物理機上面部署了MySQL服務,每個伺服器是一個sharding節點,然後有另外一臺伺服器部署了MyCAT,這樣就是一個簡單的分散式sharding環境。
要壓測基本的效能情況,有幾種測試的方法,假設測試的表為:sharding_table,存在的資料庫為db1,db2,db3,db4
測試的場景就會很豐富.
場景1:
場景2:
在之前的基礎上進行擴充套件,按照這個進度,基本就是3N的方式,所以就會有3,6,9,12這樣的一些分佈方式,這樣的好處就是前期規劃了,後期如果出現瓶頸,可以很方便的拆分。
要完成這些工作,每個場景測試偷工減料測試幾分鐘也是不行的,每個場景最起碼得1個小時,按照這個要求,至少得20個小時,人是鐵飯是鋼,我不能一直守在那裡。所以就在下班前寫了個指令碼,讓它慢慢跑吧,明天上班收數。
我前期做了快速迭代,把每個場景都大體跑了下,得到了一個基本的資料分佈,然後細化到每個場景一個小時來收到相對完整的資料情況。
指令碼如下,我配置了10個sbtest[N]的表,如果是做分片,3個伺服器節點切分成12個sharding分片,那就是120個表。測試的場景我是分為不同的sharding分片,不同的執行緒數。需要提前配置下rules.xml和schema.xml我是準備了好幾份這個配置檔案,到時候直接替換就行。
#!/bin/bash
time= 3600
sleep_time= 60
function clean_data
{
echo $time
echo ${sleep_time}
mysql -umycat_user -pmycat_user -P8066 -h127 .0.0.1 <<EOF
use sbtestdb1
delete from sbtest1;
delete from sbtest2;
delete from sbtest3;
delete from sbtest4;
delete from sbtest5;
delete from sbtest6;
delete from sbtest7;
delete from sbtest8;
delete from sbtest9;
delete from sbtest10;
EOF
sleep ${sleep_time}
}
function sysbench_test
{
clean_data
shard_no=$ 1
thread_no=$ 2
/usr/bin/sysbench /usr/share/sysbench/oltp_insert.lua --db-driver=mysql
--mysql_storage_engine=innodb --mysql-user=mycat_user
--mysql-password=xxxx --mysql-port= 8066 --mysql-host= 127.0.0.1
--mysql-db=sbtestdb1 --auto_inc= 1 --tables= 10 --table-size= 50000000
--threads=${thread_no} --time=$time --report-interval= 5
run |tee sysbench_${thread_no}_sharding_${shard_no}.log
sleep ${sleep_time}
}
function change_sharding
{
shard_no=$ 1
date
echo 'SHARDING_NO:'${shard_no}
mv /usr/local/mycat/conf/schema.xml /usr/local/mycat/conf/schema.xml.tmp >/dev/null
cp /usr/local/mycat/conf/schema.xml.sharding_${shard_no} /usr/local/mycat/conf/schema.xml >/dev/null
/usr/local/mycat/bin/mycat restart >/dev/null
sleep ${sleep_time}
}
change_sharding 12
sysbench_test 12 16
sysbench_test 12 32
sysbench_test 12 64
sysbench_test 12 98
sysbench_test 12 128
change_sharding 9
sysbench_test 9 16
sysbench_test 9 32
sysbench_test 9 64
sysbench_test 9 98
sysbench_test 9 128
change_sharding 6
sysbench_test 6 16
sysbench_test 6 32
sysbench_test 6 64
sysbench_test 6 98
sysbench_test 6 128
change_sharding 3
sysbench_test 3 16
sysbench_test 3 32
sysbench_test 3 64
sysbench_test 3 98
sysbench_test 3 128
感興趣的也可以自己測試一下。從我目前測試的資料來說,這種方案效果還是很威猛的。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-2149268/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 批次解壓shell指令碼指令碼
- sysbench壓測實踐
- 壓測工具之Sysbench(1_系統壓測)
- sysbench壓測Oracle 11gOracle
- sysbench壓測Oracle 12COracle
- sysbench tpcc 壓測結果分析
- Mysql 壓力測試工具sysbenchMySql
- 壓測工具之Sysbench1.0(2_MySQL壓測)MySql
- 壓力測試指令碼指令碼
- apache ab壓力測試工具-批次壓測指令碼Apache指令碼
- 使用sysbench壓測主機和資料庫資料庫
- MySQL壓力測試中定製sysbench的Lua模板MySql
- shell指令碼指令碼
- MySQL 5.7和8.0 MHA架構下sysbench壓測MySql架構
- NewSQL資料庫壓力測試工具系列——SysbenchSQL資料庫
- mysql壓力測試在青雲PCIE盤sysbench版本MySql
- [Shell] Shell 生成 HTML指令碼HTML指令碼
- 效能測試——壓測工具locust——指令碼初步編寫指令碼
- 【shell 指令碼】算術測試需要使用(( ))指令碼
- MySQL DB Server 上面安裝 sysbench 作壓力測試MySqlServer
- 壓力測試sysbench安裝及引數介紹
- shell指令碼(二)指令碼
- shell指令碼心得指令碼
- shell指令碼案例指令碼
- 常用shell指令碼指令碼
- 巧用shell指令碼生成快捷指令碼指令碼
- shell指令碼和python指令碼實現批量ping IP測試指令碼Python
- shell指令碼(6)-shell陣列指令碼陣列
- MySQL 效能壓測工具-sysbench,從入門到自定義測試項MySql
- 程式碼上線的shell指令碼指令碼
- 檢測不同伺服器上程式碼差別的shell的指令碼伺服器指令碼
- Shell指令碼 | 效能測試之啟動時間指令碼
- 通過shell指令碼檢測MySQL服務資訊指令碼MySql
- 使用 Bash shell 指令碼進行功能測試(轉)指令碼
- [資料庫]000 - ?Sysbench 資料庫壓力測試工具資料庫
- mysql叢集壓力測試在京東雲盤:sysbench版本MySql
- mysql壓力測試在京東雲ssd雲盤sysbench版本MySql
- 【Shell】使用Shell指令碼快速完成SQL指令碼中重複枯燥的任務指令碼SQL