MySQL如何在不重启的情况下,修改不能动态修改的参数

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sun_ashe/article/details/84249005

如何在不重启的情况下,修改生效不能动态修改的参数

一、简介

问题来源于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

猜你喜欢

转载自blog.csdn.net/sun_ashe/article/details/84249005
今日推荐