您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關(guān)如何進(jìn)行MySQL并行復(fù)制測(cè)試,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
對(duì)于主從延遲,其實(shí)一直以來就是一個(gè)頗有爭議的話題,在MySQL陣營中,如果容忍一定的延遲的場景,通過主從來達(dá)到讀寫分離是個(gè)很不錯(cuò)的方案,但是延遲率到底有多高可以接受,新版本中的并行復(fù)制效果怎么樣,在不同的版本中是否有改變,我們能否找到一些參考的數(shù)據(jù)來佐證,這一點(diǎn)上我們可以通過一些小測(cè)試來說明。
首先來為了基本按照同一個(gè)參考標(biāo)準(zhǔn),我們就在同一臺(tái)服務(wù)器上安裝了5.6,5.7的MySQL服務(wù),另外一臺(tái)服務(wù)器上搭建了從庫。
數(shù)據(jù)庫版本為5.6.23 Percona分支, 5.7.17 MySQL官方版本
服務(wù)器上安裝了pt工具用來檢測(cè)主從延遲,安裝了新版本的sysbench來做加壓測(cè)試。
主庫: 10.127.128.227 RHEL6U3 32G R710
從庫: 10.127.128.78 RHEL6U3 32G R710 為了基本能夠達(dá)到同一個(gè)基準(zhǔn)啦進(jìn)行測(cè)試,我先啟動(dòng)5.6的數(shù)據(jù)庫服務(wù),測(cè)試完畢,啟動(dòng)5.7的服務(wù)。避免多實(shí)例的并行干擾。
初始化數(shù)據(jù)采用了類似下面的腳本,5.6, 5.7版本中都差不多。
創(chuàng)建了10個(gè)表,然后插入了500萬數(shù)據(jù)來測(cè)試。
sysbench /home/sysbench/sysbench-1.0.3/src/lua/oltp_read_write.lua --mysql-user=root --mysql-port=3308 --mysql-socket=/home/mysql_5.7.17/mysql.sock --mysql-host=localhost --mysql-db=sysbenchtest --tables=10 --table-size=5000000 --threads=50 prepare
加壓測(cè)試使用如下的sysbench腳本,持續(xù)時(shí)間300秒sysbench /home/sysbench/sysbench-1.0.3/src/lua/oltp_read_write.lua --mysql-user=root --mysql-port=3308 --mysql-socket=/home/mysql_5.7.17/mysql.sock --mysql-host=localhost --mysql-db=sysbenchtest --tables=10 --table-size=5000000 --threads=50 --report-interval=5 --time=300 run查看主從延遲,使用pt-heartbeat來完成。
開啟后臺(tái)任務(wù):
pt-heartbeat h='10.127.128.78',u='pt_checksum',p='pt_checksum',P=3307 -D sysbenchtest --create-table --interval=1 --update --replace --daemonize開啟主從延遲檢測(cè):
pt-heartbeat h='10.127.128.78',u='pt_checksum',p='pt_checksum',P=3308 -D
sysbenchtest --table=heartbeat --monitor --master-server-id=3308
--frames=5s --interval=5
因?yàn)橹鲝膹?fù)制在5.6, 5.7還是存在一定的差別,我們就分別測(cè)試單線程和多線程復(fù)制的差別和改進(jìn)點(diǎn)。
并行復(fù)制的基本配置
5.6 開啟并行復(fù)制
mysql>stop slave;
mysql>set global slave_parallel_workers=8;
mysql>start slave;
5.7 開啟并行復(fù)制
其中值得一提的是5.7做了一些改進(jìn),slave-parallel-type= DATABASE /LOGICAL_CLOCK
-- DATABASE -- 基于庫級(jí)別的并行復(fù)制 與5.6相同
-- LOGICAL_CLOCK -- 邏輯時(shí)鐘,主上怎么并行執(zhí)行的,從上也是怎么并行回放的。所以我們開啟了logical_clock.
mysql> stop slave;
mysql> set global slave_parallel_type='LOGICAL_CLOCK';
mysql> set global slave_parallel_workers=8;
mysql> stop slave;
并行復(fù)制的效果對(duì)比圖
以下是得到的一個(gè)概覽圖,橫軸是測(cè)試時(shí)間,縱軸是延遲時(shí)間。
總體來看,MySQL 5.6中的并行復(fù)制效率提升不夠明顯,5.7中的提升效果非常顯著。
看完上述內(nèi)容,你們對(duì)如何進(jìn)行MySQL并行復(fù)制測(cè)試有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。