昨天晚上为了回收表空间,打算用pt-online-schema-change对一张58G的大表进行重建,不想执行到99%的时候竟然异常退出,一股蛋蛋的忧伤顿时袭上心头。
还是来看看报错吧:
绿色框框里的报错,毫无征兆,执行的时间点正是数据库压力处于低峰的时候,没有任何理由异常退出,可能是参数设置不当或者内核发送了退出信号最差的情况可能遇到了bug,不管如何先看了一下源代码,找到信号捕获和处理的地方:
理论上可以直接注释exit 1即可,在测试环境里执行确实可行,不过心里还是不踏实,最后一不做二不休将重建脚本写入到一个文件并且在脚本文件头部加入:
trap "get sigup" SIGHUP
即屏蔽SIGHUP信号,只输出提示信息,之后执行重建操作顺利完成。