版权声明:本文为博主原创文章,未经博主允许不得转载。 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的会话数,只有在加在了半同步插件之后才会可见。
跟此状态值相关的处理逻辑(省略了无关逻辑)如下
总结:
在半同步设置为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 半同步状态