高可用数据库主从复制延时的解决
从现象上,如果从库执行SHOW SLAVE STATUS的输出中,检查Exec_Master_Log_Pos一直未动,在排除主库执行大事务的情况下,那么就有可能是在执行大表的 DDL。这一点结合分析主库binlog,看主库当前执行的事务就可以进行确认。 DDL语句的执行情况,可以进一步细分现象来更好地判断: 1.DDL未开始,被阻塞,这时SHOW SLAVE STATUS的结果能检查到Slave_SQL_Running_State为waiting for table metadata lock,且Exec_Master_Log_Pos不变; 2.DDL正在执行,SQL Thread单线程应用导致延时增加。这种情况下观察SHOW SLAVE STATU的结果能发现Slave_SQL_Running_State为altering table,而Exec_Master_Log_Pos不变。 如果有上述的现象,那么很有可能主库对大表执行DDL语句,同步到从库并在从库回放时,就产生了主从复制延时。 原因分析 DDL导致的主从复制延时的原因和大事务类似,也是因为从库执行DDL的binlog较慢而产生了主从复制延时。 解决思路 遇到这种情况,我们主要通过SHOW PROCESSLIST或对information_schema.innodb_trx做查询,来找到阻塞DDL语句,并KILL掉相关查询,让DDL正常在从库执行。 (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |