溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何實(shí)現(xiàn)sysbench壓測(cè)MyCAT的shell腳本

發(fā)布時(shí)間:2021-11-01 11:27:34 來(lái)源:億速云 閱讀:214 作者:小新 欄目:MySQL數(shù)據(jù)庫(kù)

小編給大家分享一下如何實(shí)現(xiàn)sysbench壓測(cè)MyCAT的shell腳本,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

中間件MyCAT自己之前也簡(jiǎn)單測(cè)試過(guò),總結(jié)過(guò)。最近做分布式測(cè)試,我大體分了三個(gè)階段:

一.環(huán)境部署,MHA和MyCAT的融合,讀寫分離

二.sharding策略和分庫(kù)分表的壓力測(cè)試

三.結(jié)合業(yè)務(wù)做分庫(kù)分表的模擬測(cè)試

尤其是分庫(kù)分表的測(cè)試方面,目前還是存在一些需要確認(rèn)的點(diǎn)。

我在測(cè)試之前所想,做這個(gè)分布式測(cè)試的意義是什么?是想通過(guò)測(cè)試來(lái)論證什么,希望達(dá)到什么目標(biāo),是否穩(wěn)定,功能是否滿足需求,這些都是需要反復(fù)明確的地方。

當(dāng)然,這些我沒(méi)有留太多的時(shí)間下來(lái),我希望是速戰(zhàn)速?zèng)Q,但是測(cè)試質(zhì)量還是需要基本保證,那就是測(cè)試的場(chǎng)景基本要全面一些。

測(cè)試工具的選擇上,我目前先選擇了sysbench,原生支持,操作起來(lái)相對(duì)容易控制,尤其是支持的場(chǎng)景很豐富,在一些流水型數(shù)據(jù)的業(yè)務(wù)中,我如果側(cè)重測(cè)試密集型插入的場(chǎng)景,就可以很輕松的使用insert的模板來(lái)測(cè)試。

MyCAT的部署上本身是很簡(jiǎn)單的,無(wú)非是一些基本的環(huán)境配置。如果是一個(gè)新手,從安裝Java到部署MyCAT,如果全程跟進(jìn),基本兩個(gè)小時(shí)都能夠拿下來(lái)。部署安裝參見(jiàn)之前的一篇文章Mycat讀寫分離配置實(shí)踐

而sharding策略的配置還是需要花一些時(shí)間的,首先是你得理解它的sharding邏輯。大體明白之后,事情就很簡(jiǎn)單了。

測(cè)試的場(chǎng)景,我是這樣來(lái)規(guī)劃的,首先在3個(gè)物理機(jī)上面部署了MySQL服務(wù),每個(gè)服務(wù)器是一個(gè)sharding節(jié)點(diǎn),然后有另外一臺(tái)服務(wù)器部署了MyCAT,這樣就是一個(gè)簡(jiǎn)單的分布式sharding環(huán)境。

要壓測(cè)基本的性能情況,有幾種測(cè)試的方法,假設(shè)測(cè)試的表為:sharding_table,存在的數(shù)據(jù)庫(kù)為db1,db2,db3,db4

測(cè)試的場(chǎng)景就會(huì)很豐富.

場(chǎng)景1:

如何實(shí)現(xiàn)sysbench壓測(cè)MyCAT的shell腳本

場(chǎng)景2:

在之前的基礎(chǔ)上進(jìn)行擴(kuò)展,按照這個(gè)進(jìn)度,基本就是3N的方式,所以就會(huì)有3,6,9,12這樣的一些分布方式,這樣的好處就是前期規(guī)劃了,后期如果出現(xiàn)瓶頸,可以很方便的拆分。

如何實(shí)現(xiàn)sysbench壓測(cè)MyCAT的shell腳本

要完成這些工作,每個(gè)場(chǎng)景測(cè)試偷工減料測(cè)試幾分鐘也是不行的,每個(gè)場(chǎng)景最起碼得1個(gè)小時(shí),按照這個(gè)要求,至少得20個(gè)小時(shí),人是鐵飯是鋼,我不能一直守在那里。所以就在下班前寫了個(gè)腳本,讓它慢慢跑吧,明天上班收數(shù)。

我前期做了快速迭代,把每個(gè)場(chǎng)景都大體跑了下,得到了一個(gè)基本的數(shù)據(jù)分布,然后細(xì)化到每個(gè)場(chǎng)景一個(gè)小時(shí)來(lái)收到相對(duì)完整的數(shù)據(jù)情況。

腳本如下,我配置了10個(gè)sbtest[N]的表,如果是做分片,3個(gè)服務(wù)器節(jié)點(diǎn)切分成12個(gè)sharding分片,那就是120個(gè)表。測(cè)試的場(chǎng)景我是分為不同的sharding分片,不同的線程數(shù)。需要提前配置下rules.xml和schema.xml我是準(zhǔn)備了好幾份這個(gè)配置文件,到時(shí)候直接替換就行。

#!/bin/bash

time= 3600

sleep_time= 60

function clean_data

{

echo $time

echo ${sleep_time}

mysql -umycat_user -pmycat_user -P8066 -h227 .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

以上是“如何實(shí)現(xiàn)sysbench壓測(cè)MyCAT的shell腳本”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI