Replication基础(九) 半同步复制status简析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sun_ashe/article/details/82969294

Rpl_semi_sync_master_clients

当前处于半同步状态的slave个数

Rpl_semi_sync_master_net_avg_wait_time/Rpl_semi_sync_master_net_wait_time

这两个参数本来用来表示ack等待的时间,现在已经不起作用了,即将被摒弃。

Rpl_semi_sync_master_net_waits

master等待slave ack的次数。

Rpl_semi_sync_master_no_times

master关闭半同步复制的次数

Rpl_semi_sync_master_no_tx

等待超时提交的事务数量

Rpl_semi_sync_master_status

当前半同步状态,on为打开状态,off为关闭状态,需要注意的是,不能通过参数 rpl_semi_sync_master_enabled来判断半同步复制状态。

Rpl_semi_sync_master_timefunc_failures

调用函数getWaitTime失败的次数

  wait_time = getWaitTime(start_ts);
        if (wait_time < 0)
        {
          if (trace_level_ & kTraceGeneral)
          {
            sql_print_information("Assessment of waiting time for commitTrx "
                                  "failed at wait position (%s, %lu)",
                                  trx_wait_binlog_name,
                                  (unsigned long)trx_wait_binlog_pos);
          }
          rpl_semi_sync_master_timefunc_fails++;

Rpl_semi_sync_master_tx_avg_wait_time/Rpl_semi_sync_master_tx_wait_time

事务等待ack的平均时间和总时间,单位是微秒。

Rpl_semi_sync_master_tx_waits

出现过等待的事务数量

Rpl_semi_sync_master_wait_pos_backtraverse

事务等待的ack位点小于之前的。这种情况在关闭binlog_order_commit的情况下可能会出现。

Rpl_semi_sync_master_wait_sessions

当前有多少个会话在等待ack。

扫描二维码关注公众号,回复: 3791455 查看本文章

官方解释

Rpl_semi_sync_master_wait_sessions 
The number of sessions currently waiting for slave replies. 
This variable is available only if the master-side semisynchronous replication plugin is installed. 
翻译一下就是,这个状态值表示,等待从机返回ack的会话数,只有在加在了半同步插件之后才会可见。 

跟此状态值相关的处理逻辑(省略了无关逻辑)如下

image_1cp98d42k87g1ubn2kujnk19u3m.png-163.1kB

总结:

在半同步设置为after_sync,并且开启binlog_order_commits下,Rpl_semi_sync_master_wait_sessions只能是1/0,1表示有session在等待从机返回ack信息,0表示没有。
Q1.为什么不会有大于1的情况呢?
因为MySQL group commit的时候只有一个session拿着最大的binlog位点去等待ack,并且这个过程中是需要加LOCK_commit锁的,其他的组提交会被阻塞。虽然是1,但是真正等待的sesion不一定是1,因为是组提交,1代表同时commit的一组事务。

Q2.和其他节点的关系?比如说和gtid_owned并入gtid_owned的关系
如图所示,先增/减少,后将gtid_owned并入gtid_executed。

Rpl_semi_sync_master_yes_tx

成功收到slave ack的事务数量

Rpl_semi_sync_slave_status

slave 半同步状态

猜你喜欢

转载自blog.csdn.net/sun_ashe/article/details/82969294