본문 바로가기

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