MHA报错:Checking if super_read_only is defined and turned ...Unknown system variable ‘super_read_only‘

最近在部署mysql环境的时候,用到mha,但是中间遇到了问题,在这记录一下,希望能帮助更多的朋友:


(1)报错信息如下:

Checking if super_read_only is defined and turned on..DBD::mysql::st execute failed: Unknown system variable 'super_read_only' at /usr/share/perl5/vendor_perl/MHA/SlaveUtil.pm line 245.

......

MySQL Replication Health is NOT OK!
 

(2)分析

由于MariaDB没有全局的super_read_only变量,在使用masterha_check_repl做主从状态检查或其他命令做切换的时候会抛出异常,所以需要对源代码进行修改。

(3)解决

修改vim /usr/share/perl5/vendor_perl/MHA/SlaveUtil.pm文件,所有安装MHA的节点都要改(我这里是一个master节点两个slave节点一个manager节点)

第244行:

my $sth = $dbh->prepare("SELECT \@\@global.super_read_only as Value");

改为

my $sth = $dbh->prepare("SELECT 0 as Value");

第262行:

$dbh->do("SET GLOBAL super_read_only=off;");

这一行注释起来就行了。

第275行:

$dbh->do("SET GLOBAL super_read_only=on;");

改为

$dbh->do("SET GLOBAL read_only=on;");

修改完成后,保存。就可以了。

注意:pm文件修改完成后是即时生效的,无需做其他操作。我这里就是重新执行命令:masterha_check_repl --conf=/etc/masterha/app1.cnf

就不会报错了。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部