메뉴 닫기

MariaDB백업 : Mariabackup 이용하기

” Mariabackup 으로 MariaDB Backup하는 방법 “ 


DB정보는 정보시스템의 핵심요소 입니다.

이러한 핵심 데이터가 각종 장애/손상/공격으로 유실될 경우를 대비하여 반드시 백업이 필요하며,

DB백업은 엔지니어에게 가장 기본적인 업무라 할 수 있습니다.

이 포스트에서는 백업의 방식과 종류, 백업 명령어 간의 차이점, 사용법에 대해 설명합니다. 

[개  요]

✅ 종    류 : 엔지니어링

✅ 난이도 : ⭐

✅ 내용요약 : 백업에 대한 간단한 이론과 Mariabackup 명령어 사용법 

✅ 테스트환경 : Linux OS 7

✅ 관련직무 : 시스템&클라우드 엔지니어

[기초이론&용어설명]

  • MariaDB : MariaDB사가 제작한 오픈소스 RDMBS 소프트웨어

 

“시작하며”


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 구문으로 변환하는 논리적 백업입니다.

XtraBackupMariabackup은 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 서비스도 버전에 따라 손쉽게 백업을 진행하고 복원할 수 있습니다.

감사합니다.

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x