MariadB-Backup and Restore Overview

Logical vs Physical backups

로지컬 백업은 복구에 필요한 SQL문을 이용하는 것이고 피지컬 백업은 데이터파일이나 디렉터리를 통째로 복사하는 것을 의미한다. 이 둘은 아래와 같은 차이점이 있다.

  • 로지컬 백업이 좀 더 유연성이 있다. 다른 하드웨어에서도 복구할 수 있고 다른 mariaDB버전, 심지어 다른 DBMS에서도 복구할 수도 있다.
  • 로지컬 백업은 데이터베이스와 테이블 단위에서 실행되며 피지컬 백업은 디렉터리와 파일 단위에서 실행된다.
  • 로지컬 백업의 사이즈가 피지컬 백업보다 더 크다.
  • 로지컬 백업이 피지컬 백업보다 백업/복구 시간이 더 오래 걸린다.
  • 로그 파일과 구성파일은 로지컬 백업의 대상이 아니다.

Backup tools

mysqldump

mysqldump는 로지컬 백업을 수행하는 도구이며 백업/복구 하는데 있어 가장 유연성 있다. 데이터 사이즈가 상대적으로 작으면 가장 좋은 선택이라 할 수 있다.

더 큰 데이터 사이즈에서는 백업 파일이 커질 수 있으며 복구시간도 더 길어지게 된다. mysqldump는 SQL 형식(CSV나 XML형식으로도 가능) 으로 data를 덤프하기 때문에 다른 데이터베이스에 쉽게 임포트할 수 있다. 따라서 특정 DBMS에 맞춘 SQL문법만 아니면 MySQL이나 다른 DBMS로도 임포트할 수 있다.

mysqldump로 덤프를 뜨면 트리거는 자동으로 받아지지만 스토어드 프로시저나 뷰, 이벤트들은 명시적으로 옵션을 써야한다. (–routins, –events). 프로시저와 펑션은 시스템 테이블의 일부에 속한다. (예: mysql.proc)

InnoDB logical backups

로지컬 백업을 수행하면 테이블 Full scan을 유발하게 된다. 이것은 버퍼풀의 효율성을 떨어뜨릴 수도 있는데 이 문제를 회피할 수 있는 방법 중 한가지는 innodb_old_blocks_time 변수 값을 늘리는 것이다. 이 파라미터는 새로운 페이지가 버퍼 풀에 로딩되었을 때 LRU 알고리즘에서 recent측으로 옮겨가기 전 대기해야 하는 시간을 의미한다. 단위는 밀리 세컨드이며 기본값은 1000이다. 만약 0이면 재사용되는 즉시 recent 측으로 옮겨가게 된다. 따라서 이 시간을 늘리면 그만큼 recent 측으로 옮겨갈 가능성이 줄어드므로 금방 flush 될 수 있다.

또 다른 방법 하나는 innodb_old_block_pct 변수 값을 더 작게 하는 것이다. 그럼 LRU에 insert 되는 위치가 좀 더 old 영역에 가깝게 되기 때문에 금방 flush될 수 있다.

※ 로지컬 백업을 하면 버퍼 풀의 페이지가 많이 바뀔 수 있으므로 작업 전 버퍼 풀의 내용을 dump 떠넣는 것도 좋은 방법이다. innodb_buffer_pool_dump_now 변수를 ON하는 즉시 버퍼 풀을 dump뜨며 innodb_buffer_pool_load_now 변수를 ON하는 즉시 버퍼 풀을 복구한다.

Examples

백업하기

shell> mysqldump db_name > backup-file.sql

복구하기

shell> mysql db_name < backup-file.sql

 

mysqlhotcopy

mysqlhotcopy는 물리적으로 복제를 하는 방식이며 MyISAM과 ARCHIVE 테이블에 대해서만 수행할 수 있으며 원격서버로는 불가하기 때문에 스크립트를 수행하는 서버에 존재하는 데이터베이스에 대해서만 백업할 수 있다.
작동 방식은 FLUSH TABLES 를 하고 LOCK을 건 후 cp 명령으로 데이터 파일을 복사하는 것으로 매우 간단하지만 번거로운 수작업을 덜어주는 정도라 보면 되겠다.

Examples

shell> mysqlhotcopy db_name_1 ... db_name_n /path/to/new_directory

 

XtraBackup

빠르게 핫백업할 수 있는 오픈소스 툴이며 XtraDB와 InnoDB 데이터베이스를 위해 특별히 제작되었다. 그러나 다른 스토리지 엔진에도 사용할수는 있으며 mariaDB에는 기본적으로 포함돼있지 않다.

Filesystem snapshots

Veritas 같은 파일시스템은 스냅샷 기능을 제공하고 있으며 이 때 테이블은 반드시 lock 되어 있어야 한다. 순서는 아래와 같다.

  • FLUSH TABLES WITH READ LOCK 명령으로 버퍼 풀을 플러쉬시키고 락을 건다.
  • mount vxfs snapshot  명령으로 스냅샷을 시작한다.
  • 이제 UNLOCK TABLES 으로 락을 풀어줄 수 있으며 필요하다면 수행한다.
  • 스냅샷 파일을 카피한다.
  • umount snapshot 명령으로 스냅샷을 umount한다.

LVM

생략

Percona TokuBackup

생략

댓글 남기기