MySQL - XtraBackup 컴파일 - Compiling Percona XtraBackup for ARM

Share

Last Updated on 10월 7, 2021 by Jade(정현호)

 

XtraBackup on ARM

사용 중인 ARM 아키텍처의 클라우드 컴퓨트 인스턴스에 설치 된 MySQL을 백업을 하기 위해서 XtraBackup 을 설치하기 위해서 DNF(yum) Repository를 구성하고 설치를 시도 하였으나 XtraBackup 에서 ARM 아키텍처로는 빌드 된 파일이 없기 때문에 별도의 컴파일 빌드를 해야 합니다.

GitHub 에서 Source 를 다운 받아서 컴파일을 진행 하도록 하겠습니다.


• 설치 환경

OS : Oracle Linux 8.3
architecture : ARM 64bit - aarch64
XtraBackup : 8.0.25-17
프롬프트 정보 : ~]# 또는 ~]$


사전 필요 패키지 설치

XtraBackup 설치 전에 필요한 패키지를 설치를 해야 합니다. Oracle Linux 를 사용 하는 환경임으로 dnf 를 통해서 설치 하도록 하겠습니다.

~]$ dnf install dirmngr make cmake wget flex bison libarchive \
automake autoconf flex bison zlib zlib-devel libzstd \
libtool libaio-devel ncurses-libs ncurses-devel zlib \
libev-devel libev libcurl-devel vim-common git \
gcc-toolset-10-gcc-c++ gcc-toolset-10-annobin


RHEL,CentOS,Oracle Linux, Rocky Linux 설치나 환경은 동일(유사) 함으로 위의 패키지를 동일하게 설치 하면 됩니다.


qpress 가 yum repository 에 존재 하지 않음으로 외부 rpm 사이트에서 qpress rpm 을 다운로드 받아서 사용하시면 됩니다.

파일을 아래 사이트에서 검색해서 다운로드 받으시면 됩니다.
rpm.pbone.net

www.rpmfind.net

다운로드 가능한 링크 하나를 기재해두도록 하겠습니다.

ftp 링크

직접 다운로드 받거나 마우스 오른쪽 버튼을 눌러서 링크를 복사하여 사용하시면 됩니다

파일을 다운로드 받았다면 아래와 같이 설치를 하시면 됩니다.
rpm -ivh qpress-1.1-9.3.aarch64.rpm

파일 다운로드

디렉토리 생성 후 git 을 통해서 소스를 다운로드 받도록 하겠습니다

진행은 root 유저로 진행하도록 하겠습니다.

~]# mkdir -p /root/compile_xtrabackup
~]# cd /root/compile_xtrabackup
~]# git clone https://github.com/percona/percona-xtrabackup.git

위의 방법으로 Source 를 다운로드 받으면 되며 다운로드 및 빌드 경로는포스팅의 예시 입니다. 경로는 원하는 경로로 진행하시면 됩니다.

Source Compile

이전 단계에서 다운로드 받은 Source 를 통해서 컴파일을 진행하도록 하겠습니다.

설치 후 XtraBackup 파일이 설치 되는 위치는 /usr/local/xtrabackup80 으로 지정하였으며 경로는 아래의 -DCMAKE_INSTALL_PREFIX= 에서 변경해서 사용하시면 됩니다

~]# cd /root/compile_xtrabackup/percona-xtrabackup

~]# mkdir build
~]# mkdir boost
~]# cd build

~]# cmake .. -DWITH_NUMA=1 \
-DDOWNLOAD_BOOST=1 \
-DCMAKE_INSTALL_PREFIX=/usr/local/xtrabackup80 \
-DWITH_BOOST=/root/compile_xtrabackup/percona-xtrabackup/boost \
-DWITH_NUMA=1

~]# make -j 4 && make install


[참고1]
make -j 4 : make의 -j 옵션은 한번에 수행할수 있는 명령(Job)을 지정하는 병렬 옵션 입니다.

현재 포스팅 시스템의 CPU Process 수는 4개 입니다.
cat /proc/cpuinfo | grep process | wc -l
4


[참고2]
-DDOWNLOAD_BOOST: boolean 값으로 Boost tarball/zip 파일을 자동으로 다운로드 받을지를 결정하는 옵션 입니다.
-DWITH_BOOST : Boost 파일의 경로를 기재합니다.


[참고3] 위에서 빌드시 build 디렉토리에서 진행하였고 build 디렉토리에서 진행하지 않으면 아래와 같은 에러가 발생되어 build 디렉토리에서 진행하였습니다.

CMake Error at CMakeLists.txt:382 (MESSAGE):
  Please do not build in-source.  Out-of source builds are highly
  recommended: you can have multiple builds for the same source, and there is
  an easy way to do cleanup, simply remove the build directory (note that
  'make clean' or 'make distclean' does *not* work)

  You *can* force in-source build by invoking cmake with
  -DFORCE_INSOURCE_BUILD=1


그래서 생성한 build 디렉토리로 이동하여 컴파일 및 빌드를 진행하시면 됩니다.

컴파일,빌드의 문제는 대부분 필요한 패키지의 누락에 의해 발생되는 경우가 많습니다 필요한 패키지의 설치 유무를 먼저 확인 해보시면 문제 해결에 도움이 될 것입니다.

Backup Testing

빌드가 완료 되었으므로 먼저 버전 확인을 해보도록 하겠습니다.

~]# xtrabackup -version
xtrabackup version 8.0.25-17 
based on MySQL server 8.0.25
Linux (aarch64) (revision id: bd9b5e518c4)

포스팅 하는 시점에서 설치된 버전은 8.0.25-17 으로 확인 됩니다.


백업을 백업 전용 유저로 수행할 경우 기존의 2.4 에서 부여하던 권한에서 변경(추가) 된 내용이 있습니다. XtraBackup 8.0 에서 백업 유저는 아래와 같이 생성 및 권한을 부여 하면 됩니다.

CREATE USER 'bkpuser'@'localhost' IDENTIFIED BY 's3cr%T';
GRANT BACKUP_ADMIN, PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'bkpuser'@'localhost';
GRANT SELECT ON performance_schema.log_status TO 'bkpuser'@'localhost';
GRANT SELECT ON performance_schema.keyring_component_status TO bkpuser@'localhost';
FLUSH PRIVILEGES;


패스워드 및 계정명은 포스팅의 예시 입니다. 사용하고자 하는 계정을 사용하시면 됩니다.



이제 정상 작동 확인을 위하여 백업을 진행해보도록 하겠습니다.
PATH(패스) 설정 및 백업 디렉토리 생성 후 백업을 진행 하도록 하겠습니다(Full Backup)

~]# export PATH=$PATH:/usr/local/xtrabackup80/bin/

~]# mkdir -p /data/backup
~]# cd /data/backup/

~]# xtrabackup --defaults-file=/etc/my.cnf \
--login-path=dba \
--no-lock --parallel=4 \
--backup --target-dir=/data/backup/

< ... 중략 ...>
210729 02:36:59 [00]        ...done
210729 02:36:59 Executing FLUSH NO_WRITE_TO_BINLOG ENGINE LOGS...
xtrabackup: The latest check point (for incremental): '2948904842'
xtrabackup: Stopping log copying thread at LSN 2948904852.
210729 02:36:59 >> log scanned up to (2948904862)
Starting to parse redo log at lsn = 2948904462

210729 02:37:00 [00] Copying ib_buffer_pool to /data/backup/ib_buffer_pool
210729 02:37:00 [00]        ...done
210729 02:37:00 Backup created in directory '/data/backup/'
MySQL binlog position: filename 'binlog.000009', position '156'
210729 02:37:00 [00] Writing /data/backup/backup-my.cnf
210729 02:37:00 [00]        ...done
210729 02:37:00 [00] Writing /data/backup/xtrabackup_info
210729 02:37:00 [00]        ...done
xtrabackup: Transaction log of lsn (2948904842) to (2948904872) was copied.
210729 02:37:01 completed OK!


prepare 까지 진행 해보도록 하겠습니다.

~]# xtrabackup --prepare --target-dir=/data/backup/
< ... 중략 ...>
Scanning temp tablespace dir:'./#innodb_temp/'
Created 128 and tracked 128 new rollback segment(s) in the temporary tablespace. 128 are now active.
8.0.25 started; log sequence number 2948904972
xtrabackup: starting shutdown with innodb_fast_shutdown = 1
FTS optimize thread exiting.
Trying to access missing tablespace 4294967294
Starting shutdown...
Log background threads are being closed...
Shutdown completed; log sequence number 2948904972
210729 02:39:02 completed OK!


정상 수행 가능한 것 까지 확인하였습니다.

ARM 아키텍처로 빌드 배포 파일이 제공 되지는 않지만 Source Code 가 제공 되기 때문에 어렵지 않게 컴파일 해서 사용하시면 될 것 같습니다.



Ref.
percona.com/percona-xtrabackup-for-arm [L]



관련된 다른 글 

 

0
글에 대한 당신의 생각을 기다립니다. 댓글 의견 주세요!x