日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

詳解MySQL的Seconds_Behind_Master

瀏覽:352日期:2023-10-02 19:26:20
目錄Seconds_Behind_Master原始實現last_master_timestampclock_diff_with_master其他exec_time時間函數總結Seconds_Behind_Master

對于mysql主備實例,seconds_behind_master是衡量master與slave之間延時的一個重要參數。通過在slave上執行'show slave status;'可以獲取seconds_behind_master的值。

原始實現

Definition:The number of seconds that the slave SQL thread is behind processing the master binary log.

Type:time_t(long)

計算方式如下:

rpl_slave.cc::show_slave_status_send_data()if ((mi->get_master_log_pos() == mi->rli->get_group_master_log_pos()) && (!strcmp(mi->get_master_log_name(),mi->rli->get_group_master_log_name()))) { if (mi->slave_running == MYSQL_SLAVE_RUN_CONNECT) protocol->store(0LL); else protocol->store_null(); } else { long time_diff = ((long)(time(0) - mi->rli->last_master_timestamp) - mi->clock_diff_with_master); protocol->store( (longlong)(mi->rli->last_master_timestamp ? max(0L, time_diff) : 0)); }

主要分為以下兩種情況:

SQL線程等待IO線程獲取主機binlog,此時seconds_behind_master為0,表示備機與主機之間無延時; SQL線程處理relay log,此時seconds_behind_master通過(long)(time(0) ? mi->rli->last_master_timestamp) ? mi->clock_diff_with_master計算得到;last_master_timestamp

定義:

主庫binlog中事件的時間。

type: time_t (long)

計算方式:

last_master_timestamp根據備機是否并行復制有不同的計算方式。

非并行復制:

rpl_slave.cc:exec_relay_log_event()if ((!rli->is_parallel_exec() || rli->last_master_timestamp == 0) && !(ev->is_artificial_event() || ev->is_relay_log_event() || (ev->common_header->when.tv_sec == 0) || ev->get_type_code() == binary_log::FORMAT_DESCRIPTION_EVENT || ev->server_id == 0)){ rli->last_master_timestamp= ev->common_header->when.tv_sec + (time_t) ev->exec_time; DBUG_ASSERT(rli->last_master_timestamp >= 0);}

在該模式下,last_master_timestamp表示為每一個event的結束時間,其中when.tv_sec表示event的開始時間,exec_time表示事務的執行時間。該值的計算在apply_event之前,所以event還未執行時,last_master_timestamp已經被更新。由于exec_time僅在Query_log_event中存在,所以last_master_timestamp在應用一個事務的不同event階段變化。以一個包含兩條insert語句的事務為例,在該代碼段的調用時,打印出event的類型、時間戳和執行時間

create table t1(a int PRIMARY KEY AUTO_INCREMENT ,b longblob) engine=innodb;begin;insert into t1(b) select repeat(’a’,104857600);insert into t1(b) select repeat(’a’,104857600);commit;

10T06:41:32.628554Z 11 [Note] [MY-000000] [Repl] event_type: 33 GTID_LOG_EVENT

2020-02-10T06:41:32.628601Z 11 [Note] [MY-000000] [Repl] event_time: 1581316890

2020-02-10T06:41:32.628614Z 11 [Note] [MY-000000] [Repl] event_exec_time: 0

2020-02-10T06:41:32.628692Z 11 [Note] [MY-000000] [Repl] event_type: 2   QUERY_EVENT

2020-02-10T06:41:32.628704Z 11 [Note] [MY-000000] [Repl] event_time: 1581316823

2020-02-10T06:41:32.628713Z 11 [Note] [MY-000000] [Repl] event_exec_time: 35

2020-02-10T06:41:32.629037Z 11 [Note] [MY-000000] [Repl] event_type: 19   TABLE_MAP_EVENT

2020-02-10T06:41:32.629057Z 11 [Note] [MY-000000] [Repl] event_time: 1581316823

2020-02-10T06:41:32.629063Z 11 [Note] [MY-000000] [Repl] event_exec_time: 0

2020-02-10T06:41:33.644111Z 11 [Note] [MY-000000] [Repl] event_type: 30    WRITE_ROWS_EVENT

2020-02-10T06:41:33.644149Z 11 [Note] [MY-000000] [Repl] event_time: 1581316823

2020-02-10T06:41:33.644156Z 11 [Note] [MY-000000] [Repl] event_exec_time: 0

2020-02-10T06:41:43.520272Z 0 [Note] [MY-011953] [InnoDB] Page cleaner took 9185ms to flush 3 and evict 0 pages

2020-02-10T06:42:05.982458Z 11 [Note] [MY-000000] [Repl] event_type: 19   TABLE_MAP_EVENT

2020-02-10T06:42:05.982488Z 11 [Note] [MY-000000] [Repl] event_time: 1581316858

2020-02-10T06:42:05.982495Z 11 [Note] [MY-000000] [Repl] event_exec_time: 0

2020-02-10T06:42:06.569345Z 11 [Note] [MY-000000] [Repl] event_type: 30    WRITE_ROWS_EVENT

2020-02-10T06:42:06.569376Z 11 [Note] [MY-000000] [Repl] event_time: 1581316858

2020-02-10T06:42:06.569384Z 11 [Note] [MY-000000] [Repl] event_exec_time: 0

2020-02-10T06:42:16.506176Z 0 [Note] [MY-011953] [InnoDB] Page cleaner took 9352ms to flush 8 and evict 0 pages

2020-02-10T06:42:37.202507Z 11 [Note] [MY-000000] [Repl] event_type: 16    XID_EVENT

2020-02-10T06:42:37.202539Z 11 [Note] [MY-000000] [Repl] event_time: 1581316890

2020-02-10T06:42:37.202546Z 11 [Note] [MY-000000] [Repl] event_exec_time: 0

并行復制:

rpl_slave.cc mts_checkpoint_routinets = rli->gaq->empty() ? 0 : reinterpret_cast<Slave_job_group *>(rli->gaq->head_queue())->ts; rli->reset_notified_checkpoint(cnt, ts, true); /* end-of 'Coordinator::'commit_positions' */

在該模式下備機上存在一個分發隊列gaq,如果gaq為空,則設置last_commit_timestamp為0;如果gaq不為空,則此時維護一個checkpoint點lwm,lwm之前的事務全部在備機上執行完成,此時last_commit_timestamp被更新為lwm所在事務執行完成后的時間。該時間類型為time_t類型。

ptr_group->ts = common_header->when.tv_sec + (time_t)exec_time; // Seconds_behind_master relatedrli->rli_checkpoint_seqno++;

if (update_timestamp) { mysql_mutex_lock(&data_lock); last_master_timestamp = new_ts; mysql_mutex_unlock(&data_lock);}

在并行復制下,event執行完成之后才會更新last_master_timestamp,所以非并行復制和并行復制下的seconds_behind_master會存在差異。

clock_diff_with_master

定義:

The difference in seconds between the clock of the master and the clock of the slave (second - first). It must be signed as it may be <0 or >0. clock_diff_with_master is computed when the I/O thread starts; for this the I/O thread does a SELECT UNIX_TIMESTAMP() on the master. type: long

rpl_slave.cc::get_master_version_and_clock()if (!mysql_real_query(mysql, STRING_WITH_LEN('SELECT UNIX_TIMESTAMP()')) && (master_res= mysql_store_result(mysql)) && (master_row= mysql_fetch_row(master_res))) { mysql_mutex_lock(&mi->data_lock); mi->clock_diff_with_master= (long) (time((time_t*) 0) - strtoul(master_row[0], 0, 10)); DBUG_EXECUTE_IF('dbug.mts.force_clock_diff_eq_0', mi->clock_diff_with_master= 0;); mysql_mutex_unlock(&mi->data_lock); }

該差值僅被計算一次,在master與slave建立聯系時處理。

其他exec_time

定義:

the difference from the statement’s original start timestamp and the time at which it completed executing. type: unsigned long

struct timeval end_time;ulonglong micro_end_time = my_micro_time();my_micro_time_to_timeval(micro_end_time, &end_time);exec_time = end_time.tv_sec - thd_arg->query_start_in_secs();時間函數

(1)time_t time(time_t timer) time_t為long類型,返回的數值僅精確到秒;

(2)int gettimeofday (struct timeval *tv, struct timezone *tz) 可以獲得微秒級的當前時間;

(3)timeval結構

#include <time.h>stuct timeval { time_t tv_sec; /*seconds*/ suseconds_t tv_usec; /*microseconds*/}總結

使用seconds_behind_master衡量主備延時只能精確到秒級別,且在某些場景下,seconds_behind_master并不能準確反映主備之間的延時。主備異常時,可以結合seconds_behind_master源碼進行具體分析。

以上就是詳解MySQL的Seconds_Behind_Master的詳細內容,更多關于MySQL Seconds_Behind_Master的資料請關注好吧啦網其它相關文章!

標簽: MySQL 數據庫
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久国产人妖系列| 国产精品一区二区精品| 国产日产高清欧美一区二区三区 | 精品久久影院| 国产999精品在线观看| 欧美一区激情| 视频福利一区| 成人小电影网站| 国产精品毛片久久| av免费不卡国产观看| 欧美日韩精品免费观看视完整 | 蜜桃久久久久久| 日本不卡一二三区黄网| 日韩综合一区二区| 欧美日本三区| 国产欧美日韩在线观看视频| 青青草91视频| 国产精品久久久久久久免费观看| 成人一二三区| 欧美在线观看视频一区| 精品捆绑调教一区二区三区| 在线一区视频观看| 国产精品老牛| 国产精品一区三区在线观看| 国产在线视频欧美一区| 久久要要av| 日韩精品一区二区三区免费视频 | 在线天堂中文资源最新版| 午夜av成人| 亚洲精品黄色| 夜鲁夜鲁夜鲁视频在线播放| 视频一区二区三区中文字幕| 国产精品一区二区精品| 久久精品资源| 午夜影院欧美| 青草综合视频| 影音国产精品| 欧美经典一区| 美日韩精品视频| 精品日韩一区| 蜜桃视频一区二区三区| 精品视频一二| 亚洲毛片在线| 亚洲成人精品| 国产激情一区| 亚洲美女91| 日韩视频一区| 黄色在线网站噜噜噜| 久久亚洲欧洲| 日韩成人三级| 欧美国产极品| 亚洲精品系列| 亚洲福利专区| 国产精品一页| 另类av一区二区| 美女久久久久| 天堂√8在线中文| 精品不卡一区| 国产精久久久| 国产免费av一区二区三区| 国产一区导航| 午夜一区在线| 日本欧美在线看| 91日韩免费| 精品精品久久| 国产精品久久久一区二区| 天堂久久一区| 日韩激情视频网站| 婷婷成人av| 欧美日韩精品一区二区三区视频| 免费在线观看视频一区| 噜噜噜躁狠狠躁狠狠精品视频| 免费视频亚洲| 免费久久99精品国产自在现线| 香蕉国产精品| 亚洲精品伦理| 奇米狠狠一区二区三区| 日韩精品三区四区| 日韩精品三区四区| 欧美精品第一区| 日韩成人精品一区| 欧美日韩精品免费观看视欧美高清免费大片| 久久久久久久欧美精品| 激情不卡一区二区三区视频在线| 久久午夜影院| 日韩福利一区| 香蕉成人久久| 国产日韩1区| 日韩国产一区二区三区| 亚洲二区精品| 视频一区日韩| 国产66精品| 欧美日韩国产探花| 日韩精品久久久久久久软件91| 国产精成人品2018| 亚洲国产日韩欧美在线| 另类亚洲自拍| 成人午夜在线| 男人的天堂久久精品| 久久国产婷婷国产香蕉| 日本不良网站在线观看| 亚洲精品高潮| 亚洲一本视频| 久久不见久久见免费视频7| 久久伦理在线| 麻豆国产91在线播放| 黄色精品网站| 欧美精品不卡| 亚洲91网站| 亚洲特色特黄| 国产福利资源一区| 99国产一区| 国产a亚洲精品| 日本中文字幕一区二区视频| 日韩在线综合| 丰满少妇一区| 国产剧情在线观看一区| 黑丝一区二区三区| 亚洲国产福利| 美女视频黄 久久| 日韩高清欧美激情| 久久国产66| 亚洲在线电影| 蜜桃av一区| 日韩在线卡一卡二| 性欧美长视频| 久久久久蜜桃| 999久久久精品国产| 在线一区av| 日韩精品永久网址| 久久久久久夜| 一区二区视频欧美| 亚洲黄色免费看| yellow在线观看网址| 精品91福利视频| 久久香蕉网站| 精品日韩一区| 日韩成人精品一区| 日韩在线短视频| 99久久久久久中文字幕一区| 日韩一区欧美| 国产精品久久久久久久久久久久久久久 | 蜜桃av.网站在线观看| 日韩a一区二区| 久久超级碰碰| 国产一区二区三区不卡视频网站 | 婷婷综合五月| 午夜在线一区| 最新国产精品视频| 中文字幕日韩欧美精品高清在线| 欧美在线综合| 欧美日本久久| 精品免费av在线| 亚洲激情黄色| 国产欧美日韩一区二区三区四区| 日本午夜免费一区二区| 亚洲深深色噜噜狠狠爱网站| 久久精品不卡| 日韩免费在线| 久久久久99| 精品久久视频| 日韩欧美不卡| 玖玖精品视频| 日韩高清国产一区在线| 国产精品片aa在线观看| 丝袜av一区| 欧美精品中文字幕亚洲专区| 国产h片在线观看| 午夜久久av| 91精品推荐| 国产精品毛片aⅴ一区二区三区| 日韩国产一二三区| 日韩高清欧美激情| 成人羞羞在线观看网站| 免费人成精品欧美精品| 国产精品免费99久久久| 国产午夜精品一区二区三区欧美| 久久99蜜桃| 日本不卡高清| 精品一区二区三区免费看| 尹人成人综合网| 成人精品国产亚洲| 亚洲2区在线| 国产精品普通话对白| 国产自产自拍视频在线观看| 欧美亚洲一区二区三区| 午夜久久福利| 久久精品欧美一区| av资源中文在线| 你懂的亚洲视频| 青草国产精品| 天堂精品久久久久| 亚洲精品少妇| 综合视频一区| 久热re这里精品视频在线6| 亚洲欧美日韩国产| 亚洲免费高清| 亚洲久久视频| 欧美一区二区三区久久精品| 国产欧美日韩影院|