华为云mysql教程_【华为云技术分享】数据库开发:MySQL Seconds_Behind_Master简要分析...

【摘要】对于mysql主备实例,seconds_behind_master是衡量master与slave之间延时的一个重要参数。通过在slave上执行"show slave status;"可以获取seconds_behind_master的值。 Seconds_Behind_Master对于mysql主备实例,seconds_behind_master是衡量master与slave之间延时的一个...
摘要由CSDN通过智能技术生成

1186456934ec7da46a4f2e1fc4c1a495.png【摘要】对于mysql主备实例,seconds_behind_master是衡量master与slave之间延时的一个重要参数。通过在slave上执行"show slave status;"可以获取seconds_behind_master的值。

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计算得到;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值