본문 바로가기

Technical/DBMS

Percona - Xtrabackup 1.4 유틸리티의 innobackupex 스크립트 오류

반응형

extrabackup은 incremental backup을 지원하지만 innodb에 대해서만 가능하므로 MyISAM등의 복합적 엔진구성인 경우 작동하지 않는다.

이러한 경우 MySQL에서 제공하는 innobackupex base의 Percona 수정판 perl utility로 백업을 할 수 있다(innobackupex-1.5.1). 하지만 이 perl source에 버그가 숨어 있어서, 실행하면 "Invalid version format (non-numeric data) at /usr/bin/innobackupex-1.5.1 line 1708." 와 같은 에러를 뱉어 내므로 아래와 같이 수정한다.
...
} else {
$perl_version = chr($required_perl_version[0])
. chr($required_perl_version[1])
. chr($required_perl_version[2]);
#if ($^V lt $perl_version) {
#my $version = chr(48 + $required_perl_version[0])
# . "." . chr(48 + $required_perl_version[1])
# . "." . chr(48 + $required_perl_version[2]);
#print STDERR "$prefix Warning: " .
# "Your perl is too old! Innobackup requires\n";
#print STDERR "$prefix Warning: perl $version or newer!\n";
#}
}

<참고> innobackupex 사용법

- PATH 추가
xtrabackup binary 파일들을 mysql bin direcotry에 복사하고
# export PATH=$PATH:/user/service/mysql/bin
과 같이 명령 경로를 지정해야만 제대로 동작한다(옵션에서 절대 path를 지정할 수 있지만 정확히 작동하지 않음에 주의)

- 백업(Percona XtraDB일 경우)
# innobackupex-1.5.1 --defaults-file=/user/service/mysql/conf/my.cnf --user=root --password=dbpass --host=host_ip --databases=db_name --ibbackup=xtrabackup --redo-only /user/service/backups
* Target directory에 timestamp로 서브 디렉토리가 자동으로 만들어지고 여기에 데이터가 백업된다
* Percona가 아닌 MySQL에 대해서는 xtrabackup 대신 xtrabackup_51 를 지정

- 복구(copy back, Database shutdown 필요)
cp -r /user/service/backups/2011-01-01_01-15-27 /user/service/mysql/var


반응형