” Mariabackup 으로 MariaDB Backup하는 방법 “
DB정보는 정보시스템의 핵심요소 입니다.
이러한 핵심 데이터가 각종 장애/손상/공격으로 유실될 경우를 대비하여 반드시 백업이 필요하며,
DB백업은 엔지니어에게 가장 기본적인 업무라 할 수 있습니다.
이 포스트에서는 백업의 방식과 종류, 백업 명령어 간의 차이점, 사용법에 대해 설명합니다.
[개 요] 종 류 : 엔지니어링 난이도 : 내용요약 : 백업에 대한 간단한 이론과 Mariabackup 명령어 사용법 테스트환경 : Linux OS 7 관련직무 : 시스템&클라우드 엔지니어 |
[기초이론&용어설명]
|
[관련 기술자료] |
“시작하며”
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 ]
1️⃣ 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
2️⃣ Mariabackup 설치
(1) Mariabackup 설치
# yum install MariaDB-backup
(2) Mariabackup을 이용하여 전체 백업
# mariabackup –backup –user=root –password=비밀번호 –target-dir=백업디렉토리
* 백업디렉토리가 없다면 미리 생성해 둬야 합니다.
(3) 백업디렉토리 확인
# ll /백업디렉토리
3️⃣ 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 서비스도 버전에 따라 손쉽게 백업을 진행하고 복원할 수 있습니다.
감사합니다.