본문 바로가기
  • 기억의 유한함을 기록의 무한함으로✍️            예비 개발자가 꿈꾸는 공간 여기는 안나의 개발 블로그 💻
Programming/DataBase

[Database] 물리적 백업 vs 논리적 백업

by 제가안난데여♪(´ε`*) 2024. 5. 10.
728x90

0. 들어가기 전


1. 배경

얼마 전 DB 보안점검을 하면서 보안 관련된 설정을 바꿨더니 db 재실행이 안되는 문제가 발생했다.

운영 전인 DB 였고 테이블 생성, 수정 쿼리문도 다 가지고 있었기 때문에 기존의 마리아디비 자체를 밀고 재설치 후 DB 구축을 다시하였다.

추후 중요 데이터나 사용자가 있었다면 데이터를 다 날리는 큰일이 일어났을 것이다.

상무님께서 데이터 백업작업을 요청하셨고 그 과정을 기록 하려고 한다.

2. 환경

  • os : Ubuntu 22.04.4 LTS
  • db : mysql Ver 15.1 Distrib 10.6.16-MariaDB

1. 백업의 유형


데이터베이스를 백업하는 유형에는 크게 물리적 백업논리적 백업 두 가지가 있다.

물리적 백업은 실제 데이터 파일을 복사하고, 논리적 백업은 CREATE TABLE 이나 INSERT와 같이 데이터를 다시 생성할 수 있는 SQL 쿼리문을 생성한다.

1. 물리적 백업

물리적 백업에는 디스크에 있는 모든 파일과 디렉토리의 원시 사본이 포함된다. 즉 /var/lib/mysql/sqlDB 내 DB관련 파일을 다른 디스크 공간에 백업시키는 작업이다.

논리적 백업에 비해 원시 파일을 복사하는 것이 훨씬 빠르기 때문에 대규모 데이터베이스에 적합하다.

  • 장점 :
    • 간단하고 효율적이다. (많은 메모리나 CPU 주기 실행이 필요하지 않기 때문)
    • 물리적 백업을 위한 원시 파일을 생성하는데 추가 작업이 필요하지 않으며, 원시 파일과 디렉토리를 백업 위치에 복사하기만 하면 된다.
    • 논리적 백업보다 빠르다. ( 데이터베이스 객체를 만들고 데이터를 가져올 필요가 없기 때문)
  • 단점 :
    • 논리적 백업보다 공간이 훨씬 많이 필요하다 ( InnoDB 테이블 스페이스, 트랜잭션 로그, 실행취소 로그 등이 포함되기 때문)
    • 플랫폼, 운영체제, mysql 버전 간에 이동성을 항상 보장하지 않는다.
    • 원시파일에 손상이 있는 경우 백업파일에도 손상이 복사된다.
  • MySQL 생태계에서 일반적으로 사용되는 물리적 백업 도구

2. 논리적 백업

논리적 백업에는 데이터베이스의 데이터가 mysql에서 sql 이나 구분된 텍스트로 해석할 수 있는 형식으로 포함된다.

데이터베이스 객체를 다시 만들고 데이터를 가져오기 위해 실행할 수 있는 sql 문의 시퀀스로 데이터베이스를 백업한다. 이러한 백업 파일은 일반적으로 ‘.sql’ 확장자를 가진다. 그렇기 때문에 로그나 설정정보는 포함하지 않는다.

이 백업의 유형은 소규모 데이터베이스에 적합하다. 논리적 백업을 복원하는 것이 물리적 백업을 복원하는 것보다 훨씬 시간이 오래 걸릴 수 있기 때문이다.

또한 논리적 백업 유형은 마이그레이션할 때도 유용하다.

  • 장점 :
    • 유연하다. (논리적 백업은 서버 수준(모든 데이터베이스), 데이터베이스 수준(특정 데이터베이스의 모든 테이블), 테이블 수준 또는 심지어 행 수준(지정된 WHERE 조건과 일치하는 테이블 행)에서 백업, 복원 작업이 가능하기 때문)
    • 복원이 쉽다. (백업 파일을 MYSQL 클라이언트로 파이핑하고 LOAD DATA 문 또는 mysqlimport 를 사용하여 텍스트 구분 파일을 로드하기만 하면 되기 때문)
    • 다른 머신에서 원격으로 실행할 수 있으므로 네트워크를 통해 데이터베이스를 백업하고 복원할 수 있다. 논리적 백업은 사용자가 가상 머신에 직접 액세스할 수 없는 Google Cloud SQL, Amazon RDS, Microsoft Azure와 같은 클라우드 데이터베이스에 유용하다.
    • 데이터 손상을 방지할 수 있다. (물리적 백업은 손상될 수 있으며 이는 인증될 때까지 알 수 없다. 논리적 백업은 일반적으로 텍스트 파일이므로 텍스트 편입기로 검토하여 손상을 찾아내기가 더 쉽고, 손상이 거의 일어나지 않는다.)
    • 마이그레이션에 유용하다. (물리적 백업과 달리 논리적 백업은 플랫폼, 운영체제, MySQL 버전 간에 이동성이 높기 때문)
    • 논리적 백업은 압축성이 뛰어나다.
  • 단점 :
    • 데이터베이스에 SQL 쿼리를 실행하여 스키마와 행을 얻은 다음 논리적 형식으로 변환해야하므로 생성속도가 느리다.
    • MySQL 에서 테이블을 만들고 행을 가져오고 색인을 다시 빌드하기 위해 SQL 문을 실행해야 하기 때문에 복원도 느리다.
    • 물리적 백업에 비해 논리적 백업에는 백업과 복원작업에 더많은 리소스(CPU, RAM, 디스크I/O)가 필요하다.
  • 몇 가지 일반적인 논리적 백업 도구




다음에는 백업의 방식 - Full(전체) / Incremental(증분) / Differential(차등) 에 대해 알아보고
이후 실습을 진행해보자.






📎 참고 링크

반응형