xtrabackup对于flush tables with read lock操作的设置

参数说明

版本  percona-xtrabackup-2.4.8-Linux-x86_64 
--kill-long-queries-timeout=N  指的是执行flush tables with read lock以后,如果flush操作被卡了N秒,则杀掉卡住它的线程,默认0的情况就是不杀死任何卡住flush的sql,直到该sql执行完成
--kill-long-query-type=all|select   被kill的sql种类,默认为全部
--ftwrl-wait-timeout=M  指的是执行flush tables with read lock以前,如果检测到存在长SQL,先等待M秒,如果超过M秒还存在长SQL,则备份报错退出。默认为0表示立即执行flush tables with read lock
--ftwrl-wait-threshold=X 指的是执行flush tables with read lock以前,检测长SQL的方法,如果在执行flush以前存在已经运行了超过X秒的SQL,则将该SQL定义为长SQL,默认60s,如果没有定义-ftwrl-wait-timeout=M,那么这个参数设置无效

使用概述

简单来说,--kill-long-queries-timeout是比较粗暴的设置,--ftwrl-wait-timeout是比较温和的设置,根据业务需求两者选其一就行(因为往往有些垃圾开发写的垃圾SQL,等1小时也没用),当然如果两个参数都设置,那么应该是这样的执行逻辑:
1 执行flush tables with read lock以前,如果存在超过--ftwrl-wait-threshold=X秒的长SQL,则等待M秒,如果M秒后还存在长SQL,则备份报错退出
2 如果M秒后没有长SQL了,则执行flush tables with read lock,执行以后,如果flush 操作被卡了N秒,则杀掉卡住它的线程

参考

https://www.percona.com/doc/percona-xtrabackup/LATEST/innobackupex/innobackupex_option_reference.html

https://www.percona.com/doc/percona-xtrabackup/LATEST/innobackupex/improved_ftwrl.html

你可能感兴趣的:(DB备份和恢复,MySQL)