” Mariabackup 으로 MariaDB Backup하는 방법 “
DB정보는 정보시스템의 핵심요소 입니다.
이러한 핵심 데이터가 각종 장애/손상/공격으로 유실될 경우를 대비하여 반드시 백업이 필요하며,
DB백업은 엔지니어에게 가장 기본적인 업무라 할 수 있습니다.
이 포스트에서는 백업의 방식과 종류, 백업 명령어 간의 차이점, 사용법에 대해 설명합니다.
[개 요]
|
[기초이론&용어설명]
|
[관련 기술자료] |
“시작하며”
DB 백업 시 mysqldump 명령어로 백업을 진행하는 것이 가장 흔하지만 DB 백업의 명령어가 mysqldupm 뿐만아니라 xtraBackup, Mariabackup 도 있다는 것을 아셨나요?
각 명령어들이 어떤 차이가 있고, 어떻게 사용 가능한지, Mariabackup으로 백업 및 복원하는 방법까지 알아보겠습니다.
그전에 간단하게 백업의 방식과 백업의 종류에대해 간단히 설명하겠습니다.
1. 백업의 방식
DB data 백업을 하는 방식은 크게 2가지로 논리적 백업과 물리적인 백업이 있습니다.
논리적 백업
– 데이터 복원 작업이 수월합니다.
– 물리적 백엡에 비해 복원시 데이터 손상을 막아주며 문제 발생 시 원인 파악 및 해결이 쉽습니다.
– 백업 및 복원 시 시스템 리소스를 물리적 백업보다 더 많이 사용합니다.
– 부동 소수점 데이터의 백업 및 복원 시 데이터의 정확성을 잃을 수 있습니다.
물리적 백업
– 논리적 백업보다 백업 기준으로 약 2배, 복원 기준으로 약 6배 차이가 발생하게 빠른 장점이 있습니다.
=> 데이터가 증가할 수록 백업과 증분에 소요되는 시간은 물리적인 백업이 더 빠릅니다.
2. 백업의 종류
DB Data 백업은 크게 전체 백업과 증분 백업으로 나눠집니다.
전체 백업(Full Backup)
– 선택된 디텍터리의 데이터를 모두 백업하는 방식입니다.
– 매번 전체 데이터를 백업하기에 데이터 양이 많고, 소요 시간이 큽니다.
– 복원은 증분백업에 비해 간단합니다.
증분 백업(Incremental Backup)
– 디렉터리의 전체 백업 이후, 변경되거나 추가된 데이터만 선택적으로 백업하는 방식입니다.
– 전체 백업보다 데이터양이 적고, 소요시간이 짧습니다.
– 전체 백업에 종속적입니다.
– 복원의 복잡성은 매뉴얼화로 해결이 가능합니다.
3. mysqldump, XtraBackup, Mariabackup 은 무엇이 다른가?
백업 방식의 차이로 나누어집니다.
mysqldump는 전체 테이블과 행 하나하나를 INSERT 구문으로 변환하는 논리적 백업입니다.
XtraBackup과 Mariabackup은 DB데이터를 통채로 복사하는 물리적인 백업입니다.
4. XtraBackup 과 Mariabackup의 차이점
MariaDB 10.1 버전 이후부터는 xtraBackup 대신 Mariabackup을 사용하는 것을 추천하며, MariaDB 10.3 버전부터는 xtraBackup을 지원하지 않습니다.
Mariabackup은 Percona사의 xtraBackup으로 부터 fork해서 만든 MariaDB의 물리적인 백업 툴로, 전체 백업 또는 증분 백업을 할때 사용합니다.
xtraBackup에서 지원하는 libgcrypt 기반 암호화는 Mariabackup에서 지원하지 않습니다.
xtraBackup은 InnoDB redo log 파일을 xtrabackup_logfile 로 복사를 하며, Maiabackup은 ib_logfile을 사용합니다.
Mariabackup은 잠금 없는 binlong를 지원하지 않습니다.
XtraBackup 설치 및 백업
XtraBackup 설치 및 백업은 스마일 서브 IDCHOWTO에 올려진 포스트를 아래 링크로 확인할 수 있습니다.
MariaBackup 설치 및 백업
MariaDB repo변경하여 패키지 설치
설치 작업은 CentOS7인 환경에서 진행했으며, MariaDB를 패키지로 설치 시 기본 5.5 버전으로 설치됩니다.
repo를 수정하면 MariaDB를 최신 버전으로 설치 가능하며, MariaDB 홈페이지에 가면 10.4버전부터 최신 버전을 repo를 다운받아 설치할 수 있으니 이 부분 홈페이지 참고하여 원하는 버전으로 설치합니다. (OS 선택도 가능)
[링크 – MariaDB 홈페이지 URL : https://mariadb.org/download/?t=repo-config&d=CentOS+7&v=10.4&r_m=blendbyte ]
MariaDB 10.4 버전 설치
(1) MariaDB yum 저장소 추가
# vi /etc/yum.repos.d/mariadb.repo
(2) MariaDB server, client 설치
# yum install MariaDB-server MariaDB-client
(3) 설치된 MariaDB 버전 확인
# mariadb –version
(4) MariaDB 부팅시 자동실행, 데몬 실행
# systemctl enable mariadb
# systemctl start mariadb
(5) MariaDB 데몬 실행 확인
# netstat -ntlp
(6) 초기 설치시 MariaDB 패스워드 변경
# /usr/bin/mysqladmin -u root password
(7) 변경된 패스워드로 MariaDB 접속
# mysql -u root -p
Mariabackup 설치
(1) Mariabackup 설치
# yum install MariaDB-backup
(2) Mariabackup을 이용하여 전체 백업
# mariabackup –backup –user=root –password=비밀번호 –target-dir=백업디렉토리
* 백업디렉토리가 없다면 미리 생성해 둬야 합니다.
(3) 백업디렉토리 확인
# ll /백업디렉토리
Mariabackup으로 전체 백업본으로 복구
백업본으로 DB 복구 시 주의사항
- 복원을 위해 MariaDB의 서비스를 잠시 중단해야 합니다.
- DB data 디렉토리(일반적으로 ‘/var/lib/mysql’)가 비워져 있어야 합니다.
테스트로 진행했기 때문에 기존 /var/lib/mysql 폴더 이름을 변경한 후 복원을 진행했습니다.
(1) MariaDB 데몬 중단
# systemctl stop mariadb
(2) 기존 DB data 디렉토리는 복원 전 이름 변경
# ls -al /var/lib | grep mysql
(3) 백업본으로 DB data 복구
# mariabackup –copy-back –target-dir /백업파일디렉토리
(4) DB data 디렉토리 확인
# ls -al /var/lib | grep mysql
=> 복원 완료 후 mysql 폴더 확인 시 해당 폴더가 root 권한으로 생성된 것을 확인할 수 있습니다.
(5) 복원한 DB data 디렉토리 권한 변경
=> MariaDB 서비스 실행을 위해서 복원한 DB data의 권한을 mysql 권한으로 변경합니다.
# chown -R mysql. /var/lib/mysql
# ls -al /var/lib | grep mysql
(6) 권한 변경 후 DB 서비스 실행
# systemctl start mariadb
# systemctl status mariadb
MariaDB 서비스도 버전에 따라 손쉽게 백업을 진행하고 복원할 수 있습니다.
감사합니다.