우분투 환경에서 mysql 및 MHA 구성할 때 발생했던 MHA 에러 공유드립니다.
1. MHA 기동 에러
[error][/usr/local/share/perl/5.22.1/MHA/MasterMonitor.pm, ln425] Error happened on checking configurations. Redundant argument in sprintf at /usr/local/share/perl/5.22.1/MHA/NodeUtil.pm line 190. [error][/usr/local/share/perl/5.22.1/MHA/MasterMonitor.pm, ln524] Error happened on monitoring servers.
1-1. 에러 발생 부분
sub parse_mysql_version($) { my $str = shift; my $result = sprintf( '%03d%03d%03d', $str =~ m/(\d+)/g ); return $result; } sub parse_mysql_major_version($) { my $str = shift; my $result = sprintf( '%03d%03d', $str =~ m/(\d+)/g ); return $result; }
=> MHA가 DB node에 접속하며 version parsing 할 때 발생하는 에러로 보임
Server version: 5.7.24-0ubuntu0.16.04.1-log (Ubuntu)
=> DB version
2. 해결 방법
sub parse_mysql_version($) { my $str = shift; ##editied by kimdohee ($str) = $str =~ m/^[^-]*/g; my $result = sprintf( '%03d%03d%03d', $str =~ m/(\d+)/g ); return $result; } sub parse_mysql_major_version($) { my $str = shift; ($str) = $str =~ m/^[^-]*/g; my $result = sprintf( '%03d%03d%03d', $str =~ m/(\d+)/g ); # my $result = sprintf( '%03d%03d', $str =~ m/(\d+)/g ); return $result; }
=> ($str) = $str =~ m/^[^-]*/g; 부분을 추가하여
db version 에서 ' - ' 이후 나오는 문자열들을 모두 제거하도록 파싱 함수를 수정함