Database/MariaDB

mariabackup 으로 데이터 백업하기

_su_min 2024. 12. 8. 14:42

데이터베이스에서 데이터를 백업하는 방법은 크게 ' 논리적 백업 ', ' 물리적 백업 ' 두 가지로 나눠볼 수 있어요.

(MariaDB 10.6.5 버전 기준으로 내용을 작성했습니다.)

 

 

논리적 백업

 

Query 형태로 데이터베이스 또는 테이블을 백업하는 방식이예요.

 

mariadb-dump 유틸리티를 사용해서 백업을 진행해요.

(mysqldump 와 사용방법이 동일합니다.)

 

백업한 결과 파일을 열어보면 Query 내용을 확인할 수 있어요.

 

 

물리적 백업

 

데이터베이스에서 사용하는 파일 자체를 통째로 백업하는 방식이예요.

 

mariabackup 유틸리티를 사용해서 백업을 진행해요.

 

쉽게 생각해서 데이터 파일을 Copy & Paste 한다고 보시면 될 것 같아요.

 

 

 

이 글에서 알아볼 백업은 mariabackup 을 이용한 물리적 백업이예요.

 

 

1. 백업 계정 생성 및 권한 부여

CREATE USER '{USER_NAME}'@'{HOST}' IDENTIFIED BY '{USER_PASSWORD}';
ex) CREATE USER 'mariabackup'@'localhost' IDENTIFIED BY '{USER_PASSWORD}';

 

GRANT RELOAD, PROCESS, LOCK TABLES, BINLOG MONITOR ON *.* TO '{USER_NAME}'@'{HOST}';
ex) GRANT RELOAD, PROCESS, LOCK TABLES, BINLOG MONITOR ON *.* TO 'mariabackup'@'localhost';

 

FLUSH PRIVILEGES;

 

 

2. bin 파일 생성 설정

bin 파일 설정이 안되어있다면 시점복구(Point in time) 를 할 수 없기 때문에 꼭 설정해주시기 바래요.

 

/etc/my.cnf.d/server.cnf  파일을 열고 아래 내용을 추가해줍니다.

[mysqld]
...
log-bin=mysql-bin
...

 

그리고 ' systemctl restart mariadb ' 명령으로 mariadb 서비스를 재시작해줍니다.

 

그러면 [mysqld] 에 세팅해준 datadir 경로 또는 설정을 안했다면 ' /var/lib/mysql ' 경로에 아래와 같이 bin 파일이 생성되실거예요.

log-bin 의 값을 mysql-bin 으로 설정해서 'mysql-bin.000001' 로 생성된 것을 알 수 있어요.

 

다른 이름을 원하시면 log-bin 설정을 원하는 이름으로 세팅해주시면 되요.

 

 

3. 백업

이제 백업할 준비가 끝났어요.

 

아래 명령어로 mariabackup 유틸리티를 사용해서 데이터를 백업해줍니다.

 

mariabackup --backup --target-dir={BACKUP_DIR} --user={USER_NAME} --password={USER_PASSWORD}

 

--backup : 백업 시 기본적으로 사용하는 옵션

--target-dir : 백업 파일을 저장할 경로를 지정하는 옵션

--user : 백업 계정명

--password : 백업 계정 비밀번호

 

datadir 에 지정된 데이터 디렉토리 혹은 설정을 안했다면 ' /var/lib/mysql ' 디렉토리의 데이터를 대상으로 백업을 진행합니다.

 

 

백업이 수행되고 나면 target-dir 에 백업 파일이 생성된 것을 확인하실 수 있을 거예요.

 

여기서 ' xtrabackup_binlog_info ' 파일이 잘 생성되었는지 확인해주시면 좋아요.

 

cat xtrabackup_binlog_info 했을 때 출력되는 내용

 

데이터 복구를 할 때 시점복구(Point in time) 의 기준점으로 활용되는 정보를 알려주기 때문이예요.

 

시점복구란 백업이 완료된 시점 이후에 생성된 바이너리 로그를 사용해 원하는 시점까지 복구를 수행하는 것을 의미해요.

 

위의 출력 내용은 mysql-bin.000001 파일의 437562 position 까지 백업이 완료되었다는 의미예요.

 

여기까지 mariabackup 을 이용한 데이터 백업에 대해서 알아봤습니다.

 

감사합니다 :)