MySQL如何在不重啟的情況下,修改不能動態修改的引數
阿新 • • 發佈:2018-11-21
文章目錄
如何在不重啟的情況下,修改生效不能動態修改的引數
一、簡介
問題來源於DBA內部,主從複製中提供了引數slave_skip_errors,去處理複製錯誤,
其中包含了ddl_exist_errors,在升級MySQL5.6到5.7時,這個引數配置變成了slave_skip_errors=ddl_exist_errors,線上不應該跳過這些錯誤。問題來了,這個引數不能動態更改,只能改完全部重啟資料庫,雖然可以自動化完成,但是重啟上千臺例項,有點不太現實。
二、如何解決
通過gdb工具可以完成對這個引數的修改,不需要重啟例項,指令碼如下
#!/bin/sh backtrace="call bitmap_init(&slave_error_mask,0,2000,0)" #backtrace="thread apply all bt" GDB=${GDB:-/usr/bin/gdb} # Run GDB, strip out unwanted noise. $GDB --quiet -nx /proc/$1/exe $1 <<EOF 2>&1 | $backtrace EOF /bin/sed -n \ -e 's/^\((gdb) \)*//' \ -e '/^#/p' \ -e '/^Thread/p'
但前提是,要理清楚這個引數在哪裡被使用,更改此引數會帶來什麼樣的後果,此引數依賴哪些其他的引數,或者其他的引數有沒有依賴此引數的。slave_skip_errors這個引數通過如上的gdb指令碼是可以修改的,但是其他的引數需要自己去斟酌。
感興趣的歡迎加入MySQL核心交流QQ群:860945825