溫馨提示×

溫馨提示×

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

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

參數(shù)SQL_SLAVE_SKIP_COUNTER的分析

發(fā)布時間:2021-11-11 16:29:13 來源:億速云 閱讀:104 作者:iii 欄目:MySQL數(shù)據(jù)庫

本篇內(nèi)容介紹了“參數(shù)SQL_SLAVE_SKIP_COUNTER的分析”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

   每次數(shù)據(jù)庫復(fù)制沖突之后,經(jīng)常使用的一個命令如下:
SET SQL_SLAVE_SKIP_COUNTER = 1;
   跳過出錯的這個event就可以解決,其實(shí)不然。
   在binlog中,所有的binlog是按照組來分的,每一個組是其主庫生成的一個事務(wù)binlog,都以begin開始并以commit結(jié)束。根據(jù)不同類型的時間,如下:
Begin語句:對于一個binlog組,從begin開始,到commit結(jié)束,不同的SQL_SLAVE_SKIP_COUNTER有不同的處理方式。如果參數(shù)SQL_SLAVE_SKIP_COUNTER值為1,則此時這個組中的所有事件都算作不計數(shù)事件,也就是說這個1代表一個事務(wù),而不是一個事件,只有遇到commit語句時,才會將計數(shù)1減為0,那么下一個事務(wù)組會正常執(zhí)行。如果參數(shù)SQL_SLAVE_SKIP_COUNTER值大于1,那么這個組中的事件就被認(rèn)為是一個個的事件,處理一個事件,參數(shù)SQL_SLAVE_SKIP_COUNTER的值就減去1。當(dāng)減到1的時候,如果這個事務(wù)組還沒有結(jié)束,則回到上面,跳過值為1的情況,如果結(jié)束了,但還沒有減為0,那么下一個事務(wù)組會繼續(xù)重新處理。
Commit或Rollback語句:遇到這個語句時,不管任何情況,參數(shù)SQL_SLAVE_SKIP_COUNTER的值都會減1。如果SQL_SLAVE_SKIP_COUNTER的值為1,commit之前所有的時間都會被算為不計數(shù)事件,這里減1之后,就完成了一個事務(wù)的skip。
其他Query語句:當(dāng)SQL_SLAVE_SKIP_COUNTER為1的時候,會將組內(nèi)事件都跳過,否則它會被減1。
Rows事件:這種類型是在行模式下,一個行的事件類型。針對一條SQL語句產(chǎn)生的若干個事件,分別計數(shù)。如果設(shè)置的SQL_SLAVE_SKIP_COUNTER大于1,則針對每一個事件都會減1,如果減到了1或設(shè)置為1了,則直到commit事件之后才會計數(shù),之前所有的操作都不會被計數(shù)。
不計數(shù)事件:這種類型的意思是,只要遇到這種事件,并且設(shè)置了SQL_SLAVE_SKIP_COUNTER為1或遞減之后值為1,那么就跳過,并且不會影響SQL_SLAVE_SKIP_COUNTER的值。而如果設(shè)置的SQL_SLAVE_SKIP_COUNTER值大于1,則計數(shù)遞減1,直到遞減到1時這類事件才不會算入計數(shù)。這種類型的事件包括Table_map、Intvar、Rand、User_var、BEGIN_load這五個事件,所以在binlog中如果有這五個事件,則在計數(shù)中不做計數(shù),直接忽略。

“參數(shù)SQL_SLAVE_SKIP_COUNTER的分析”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

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

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

sql
AI