우분투 환경에서 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 에서  ' - ' 이후 나오는 문자열들을 모두 제거하도록 파싱 함수를 수정함