日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 5.7 mts_mysql5.7 中启用MTS后error log中大量Note日志分析

發(fā)布時(shí)間:2023/12/2 数据库 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 5.7 mts_mysql5.7 中启用MTS后error log中大量Note日志分析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

mysql5.7,啟用基于logical_clock的多線程復(fù)制,發(fā)現(xiàn)error日志增長很快,查看日志發(fā)現(xiàn)大量關(guān)于多線程復(fù)制的Note級別日志。1

2

3

4

5

6

7

8

9

10

11

12

13

14

152018-07-03T03:22:01.638371+08:00 8941 [Note] Multi-threaded slave statistics for channel '': seconds elapsed = 298; events assigned = 3043329; worker queues filled over ove

rrun level = 0; waited due a Worker queue full = 0; waited due the total size = 0; waited at clock conflicts = 725810947700 waited (count) when Workers occupied = 5346 wait

ed when Workers occupied = 0

2018-07-03T03:24:22.589147+08:00 8941 [Note] Multi-threaded slave statistics for channel '': seconds elapsed = 141; events assigned = 3044353; worker queues filled over ove

rrun level = 0; waited due a Worker queue full = 0; waited due the total size = 0; waited at clock conflicts = 725810947700 waited (count) when Workers occupied = 5346 wait

ed when Workers occupied = 0

2018-07-03T03:27:00.554437+08:00 8941 [Note] Multi-threaded slave statistics for channel '': seconds elapsed = 158; events assigned = 3045377; worker queues filled over ove

rrun level = 0; waited due a Worker queue full = 0; waited due the total size = 0; waited at clock conflicts = 725818557700 waited (count) when Workers occupied = 5346 wait

ed when Workers occupied = 0

2018-07-03T03:32:00.079699+08:00 8941 [Note] Multi-threaded slave statistics for channel '': seconds elapsed = 300; events assigned = 3047425; worker queues filled over ove

rrun level = 0; waited due a Worker queue full = 0; waited due the total size = 0; waited at clock conflicts = 725846344900 waited (count) when Workers occupied = 5346 wait

ed when Workers occupied = 0

2018-07-03T03:34:04.567887+08:00 8941 [Note] Multi-threaded slave statistics for channel '': seconds elapsed = 124; events assigned = 3048449; worker queues filled over ove

rrun level = 0; waited due a Worker queue full = 0; waited due the total size = 0; waited at clock conflicts = 725852036800 waited (count) when Workers occupied = 5346 wait

ed when Workers occupied = 0

通過日期可以看到,日志的打印頻率大概在3分鐘左右。error log是mysql 出現(xiàn)問題時(shí)的重要分析日志,大量的note日志可能很快就把重要日志信息埋沒,給分析日志信息帶來了不便。而且日志量隨時(shí)間遞增,還必須有rotate機(jī)制,不然占用大量磁盤空間。那么這個日志的打印頻率能不能調(diào)低一些呢?

我看了下源碼這塊的實(shí)現(xiàn)(rpl_slave.cc 4800)1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29*ptr_ev= NULL; // announcing the event is passed to w-worker

if (rli->is_parallel_exec() && rli->mts_events_assigned % 1024 == 1)

{

time_t my_now= my_time(0);

if ((my_now - rli->mts_last_online_stat) >=

mts_online_stat_period)

{

sql_print_information("Multi-threaded slave statistics%s: "

"seconds elapsed = %lu; "

"events assigned = %llu; "

"worker queues filled over overrun level = %lu; "

"waited due a Worker queue full = %lu; "

"waited due the total size = %lu; "

"waited at clock conflicts = %llu "

"waited (count) when Workers occupied = %lu "

"waited when Workers occupied = %llu",

rli->get_for_channel_str(),

static_cast

(my_now - rli->mts_last_online_stat),

rli->mts_events_assigned,

rli->mts_wq_overrun_cnt,

rli->mts_wq_overfill_cnt,

rli->wq_size_waits_cnt,

rli->mts_total_wait_overlap,

rli->mts_wq_no_underrun_cnt,

rli->mts_total_wait_worker_avail);

rli->mts_last_online_stat= my_now;

我們從兩個if語句可以看到,這個信息的打印受三個條件的控制:rli->is_parallel_exec() 這是個inline函數(shù),它判斷是否在使用多線程復(fù)制

rli->mts_events_assigned % 1024 == 1 多線程執(zhí)行的event個數(shù)剛剛超過1024個。也就是說按evnet個數(shù)來算,每隔1024個event打印一次。

最后還有個時(shí)間限制:(my_now - rli->mts_last_online_stat) >= mts_online_stat_period,距離上一次統(tǒng)計(jì)超過既定的間隔mts_online_stat_period。這個變量是60*2 ,代碼里寫死了。1

2

3

4/*

Statistics go to the error log every # of seconds when --log-warnings > 1

*/

const long mts_online_stat_period= 60 * 2;

由此可以判斷,這個日志打印頻率最少為2分鐘,沒法改了。但上面的代碼注釋中給了提示,當(dāng)–log-warnings > 1時(shí),這個統(tǒng)計(jì)間隔才生效,意味著可以通過修改日志打印級別來控制。

自mysql5.7.2,log-warnings被廢棄,引用了新的變量log_error_verbosity。這個變量有三個值:1、2、3,默認(rèn)是3. 他們的意義是:

1 – Errors Only

2 – Errors and warnings

3 – Errors, warnings, and notes

我們可以修改這個變量為2 ,不再打印Note信息。1set global log_error_verbosity=2;

總結(jié)

以上是生活随笔為你收集整理的mysql 5.7 mts_mysql5.7 中启用MTS后error log中大量Note日志分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。