데이터베이스에서 데이터를 백업하는 방법은 크게 ' 논리적 백업 ', ' 물리적 백업 ' 두 가지로 나눠볼 수 있어요.
(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 ' 파일이 잘 생성되었는지 확인해주시면 좋아요.

데이터 복구를 할 때 시점복구(Point in time) 의 기준점으로 활용되는 정보를 알려주기 때문이예요.
시점복구란 백업이 완료된 시점 이후에 생성된 바이너리 로그를 사용해 원하는 시점까지 복구를 수행하는 것을 의미해요.
위의 출력 내용은 mysql-bin.000001 파일의 437562 position 까지 백업이 완료되었다는 의미예요.
여기까지 mariabackup 을 이용한 데이터 백업에 대해서 알아봤습니다.
감사합니다 :)
'Database > MariaDB' 카테고리의 다른 글
| mariabackup 으로 데이터 복구하기 (0) | 2024.12.08 |
|---|