7.1 백업 및 복구의 종류
이 섹션에서는 다양한 유형의 백업의 특성에 대해 설명합니다.
물리적 (raw) 백업 및 논리적 백업
물리적 백업은 데이터베이스의 내용을 포함하는 디렉토리와 파일의 raw 복사로 구성됩니다. 이 유형의 백업은 문제 발생시 신속하게 복구 할 필요가있는 대규모의 중요한 데이터베이스에 적합합니다.
논리적 백업은 논리 데이터베이스 구조로 표현 정보 ( CREATE DATABASE
, CREATE TABLE
문)과 내용 ( INSERT
문 또는 구분 된 텍스트 파일)을 저장합니다. 이 유형의 백업은 사용자가 데이터 값이나 테이블 구조를 편집하거나 다른 시스템 아키텍처에 데이터를 다시 생성 할 수있는 소량의 데이터에 적합합니다.
물리적 백업 방법은 이러한 특성이 있습니다.
백업은 데이터베이스 디렉토리 및 파일의 정확한 복사본으로 구성됩니다. 일반적으로, 이것은 MySQL 데이터 디렉토리의 전체 또는 일부를 복사합니다.
물리적 백업 방법은 변환하지 않는 파일 복사본 만 포함되므로 논리보다 빠릅니다.
출력은 논리적 백업의 경우보다 컴팩트합니다.
바쁜 중요한 데이터베이스 백업의 속도와 컴팩트 함이 중요하기 때문에, MySQL Enterprise Backup 제품은 물리적 백업을 수행합니다. MySQL Enterprise Backup 제품의 개요는 섹션 25.2 "MySQL Enterprise Backup" 을 참조하십시오.
백업 및 복원 입도는 데이터 디렉토리 전체 수준에서 개별 파일 수준까지의 범위입니다. 이것은 스토리지 엔진에 따라 테이블 수준의 입도를 제공하는 경우와하지 않을 수 있습니다. 예를 들어,
InnoDB
테이블은 별도의 파일로하거나 다른InnoDB
테이블 및 파일 스토리지를 공유 할 수 있습니다. 각MyISAM
테이블은 파일 세트에 고유하게 대응합니다.데이터베이스 이외에 백업은 로그 파일이나 구성 파일 등의 관련 파일을 포함 할 수 있습니다.
MEMORY
테이블의 내용을 디스크에 저장되지 않기 때문에, 그 데이터를이 방법으로 백업하는 것은 어렵습니다. (MySQL Enterprise Backup 제품은 백업 중에MEMORY
테이블에서 데이터를 검색 할 수있는 기능이 있습니다.)백업은 동일 또는 유사한 하드웨어 특성을 가진 다른 머신에만 이식 가능합니다.
백업은 MySQL 서버가 실행하지 않는 동안 수행 할 수 있습니다. 서버가 실행중인 경우 백업 중에 서버가 데이터베이스의 내용을 변경하지 않도록 적절한 잠금을 실행해야합니다. MySQL Enterprise Backup이 잠금이 필요한 테이블을 자동으로 잠금을 실행합니다.
물리적 백업 도구는
InnoDB
또는 다른 테이블 용 MySQL Enterprise Backup의 mysqlbackup 파일 시스템 레벨의 명령 (cp, scp, tar, rsync 등) 또는MyISAM
테이블 용 mysqlhotcopy가 포함되어 있습니다.복원의 경우 :
MySQL Enterprise Backup은 백업 된
InnoDB
및 기타 테이블을 복원합니다.ndb_restore는
NDB
테이블을 복원합니다.파일 시스템 수준 또는 mysqlhotcopy에 의해 복사 된 파일은 파일 시스템 명령에 의해 그 원래 위치로 복사 할 수 있습니다.
논리적 백업 방법은 이러한 특성이 있습니다.
백업은 MySQL 서버에 질의하고 데이터베이스 구조 및 내용 정보를 취득하여 수행됩니다.
서버가 데이터베이스 정보에 액세스하고 논리 포맷으로 변환 할 필요가 있기 때문에 백업은 물리적 방법보다 느립니다. 클라이언트 측에서 출력이 기록 된 경우, 서버는 그것을 백업 프로그램에 전송해야합니다.
출력은 특히 텍스트 형식으로 저장된 경우 물리적 백업보다 큽니다.
백업 및 복원 입도는 서버 수준 (모든 데이터베이스) 데이터베이스 수준 (특정 데이터베이스의 모든 테이블) 또는 테이블 레벨에서 사용할 수 있습니다. 이것은 스토리지 엔진에 관계없이 적용됩니다.
백업 로그 파일과 구성 파일 또는 데이터베이스의 일부가 아닌 다른 데이터베이스 파일은 포함되지 않습니다.
논리 포맷으로 저장되어있는 백업 시스템에 의존하지 않고 고도로 이식 가능합니다.
논리적 백업은 MySQL 서버를 실행하는 동안 실행됩니다. 서버가 오프라인되지 않습니다.
논리적 백업 도구는 mysqldump 프로그램과
SELECT ... INTO OUTFILE
문이 포함됩니다. 이들은MEMORY
에도 모든 스토리지 엔진에서 작동합니다.논리적 백업을 복원하려면 mysql 클라이언트를 사용하여 SQL 포맷 덤프 파일을 처리 할 수 있습니다. 구분 된 텍스트 파일을로드하려면
LOAD DATA INFILE
문 또는 mysqlimport 클라이언트를 사용합니다.
온라인 및 오프라인 백업
온라인 백업은 데이터베이스 서버에서 정보를 얻을 수 있도록 MySQL 서버가 실행되는 동안 이루어집니다. 오프라인 백업 서버가 정지 된 상태에서 이루어집니다. 이 구별은 "핫"백업과 "콜드"백업으로 나타낼 수도 있습니다. "웜"백업 서버가 실행중인 상태입니다 만, 외부에서 데이터베이스 파일에 액세스하는 동안 데이터의 변경에 잠겨 있습니다.
온라인 백업 방법은 이러한 특성이 있습니다.
이 백업은 다른 클라이언트의 방해가 어렵고, 클라이언트는 백업 중에 MySQL 서버에 연결하여 실행해야하는 작업에 따라 데이터에 액세스 할 수 있습니다.
백업의 무결성을 손상시킬 수있는 데이터의 변경이 발생하지 않도록 적절한 잠금을 적용하는 경우에는주의해야합니다. MySQL Enterprise Backup 제품은 그러한 잠금을 자동으로 실행합니다.
오프라인 백업 방법은 이러한 특성이 있습니다.
백업하는 동안 서버를 사용할 수 없기 때문에 클라이언트는 영향을받을 수 있습니다. 따라서 이러한 백업은 종종 가용성을 손상시키지 않고 오프라인에있는 리플리케이션 슬레이브 서버에서 이루어집니다.
백업 절차는 클라이언트의 활동에서 간섭의 가능성이 없기 때문에 간단합니다.
온라인과 오프라인의 비슷한 차이는 복구 작업에도 적용 비슷한 특성이 적용됩니다. 그러나 복구에는 더 강력한 잠금이 필요하기 때문에 온라인 복구는 온라인 백업보다 클라이언트가 영향을받을 가능성이 높아집니다. 백업시 클라이언트는 백업 중에 데이터를 읽을 수 있습니다. 복구는 데이터를 변경하고 읽을뿐만 않기 때문에 데이터 복원중인 클라이언트의 데이터에 대한 액세스를 제한해야합니다.
로컬 백업과 원격 백업
로컬 백업은 MySQL 서버가 실행중인 동일한 호스트에서 실행되는 원격 백업은 다른 호스트에서 실행됩니다. 특정 유형의 백업은 출력이 서버 호스트에 로컬로 기록됨 경우에도 백업을 원격 호스트에서 시작할 수 있습니다.
mysqldump는 로컬 또는 원격 서버에 연결할 수 있습니다. SQL 출력 (
CREATE
및INSERT
문)의 경우 로컬 또는 원격 덤프를 수행 할 클라이언트에 출력이 생성됩니다. 구분 된 텍스트 출력 (--tab
옵션을 사용하여)의 경우 서버 호스트에 데이터 파일이 생성됩니다.mysqlhotcopy는 로컬 백업 만 수행합니다. 그것은 서버에 연결하고 데이터 변경에 그것을 잠그고 로컬 테이블 파일을 복사합니다.
SELECT ... INTO OUTFILE
는 로컬 또는 원격 클라이언트 호스트에서 시작할 수 있지만, 출력 파일은 서버 호스트에서 만들어집니다.물리적 백업 방법은 일반적으로 서버를 오프라인으로 할 수 있도록 MySQL 서버 호스트에서 로컬로 시작되지만 복사되는 파일의 대상은 원격으로 할 수 있습니다.
스냅 샷 백업
일부 파일 시스템 구현 "스냅 샷"을 얻을 수 있습니다. 이들은 전체 파일 시스템의 물리적 사본을 필요로하지 않고 특정 시점의 파일 시스템의 논리적 사본을 제공합니다. (예를 들어, 구현에서는 스냅 숏 시간 후 변경된 파일 시스템 부분 만 복사되도록 기록 중 복사 (copy-on-write) 기법을 사용할 수 있습니다.) MySQL 자체는 파일 시스템 스냅 샷을 취득하기위한 기능을 제공하지 않습니다. 이것은 Veritas, LVM 또는 ZFS와 같은 타사 솔루션에서 사용할 수 있습니다.
전체 및 증분 백업
전체 백업은 특정 시점의 MySQL 서버에 의해 관리되는 모든 데이터가 포함됩니다. 증분 백업은 특정 기간 (특정 시점에서 다른 시점까지) 동안 데이터에 변경된 내용으로 구성되어 있습니다. MySQL에서는이 섹션의 앞부분 한 것 등 전체 백업을 수행하기위한 다양한 방법이 있습니다. 증분 백업은 서버의 바이너리 로그를 사용함으로써 가능합니다. 서버는 그것을 데이터의 변경을 기록하는 데 사용합니다.
완전 복구 및 포인트 인 타임 (증분) 복구
완전 복구는 전체 백업에서 모든 데이터를 복원합니다. 이것은 서버 인스턴스를 백업이 수행되었을 때의 상태로 복원합니다. 그 상태가 충분히 최신이 아닌 경우 완전히 복구 후 전체 백업 이후의 증분 백업의 복구를 수행하여 서버를 최신 상태로 할 수 있습니다.
증분 복구는 특정 기간 동안 변경된 복구합니다. 이것은 서버의 상태를 특정 시점의 최신하기 위해 시점 복구라고도합니다. 시점 복구는 바이너리 로그에 따라 일반적으로 백업이 수행되었을 때의 상태로 서버를 복원 할 백업 파일에서 전체 복구 후에 이루어집니다. 바이너리 로그 파일에 기록 된 데이터의 변경이 증분 복구로 적용되어 데이터의 변경이 취소되고 서버가 원하는 시점으로합니다.
테이블의 유지 보수
테이블이 손상된 경우 데이터 무결성이 손상 될 수 있습니다. InnoDB
테이블의 경우, 이것은 일반적인 문제가 없습니다. MyISAM
테이블을 확인하고 문제가 발견되면이를 복구하는 프로그램 내용은 섹션 7.6 "MyISAM 테이블의 보수와 크래쉬 복구" 를 참조하십시오.
백업 스케줄링, 압축 및 암호화
백업 스케줄링 백업 절차를 자동화하는 데 도움이됩니다. 백업 출력 압축하여 공간 요구 사항을 축소하고 출력 암호화하여 백업 된 데이터의 무단 액세스에 대한 보안이 강화됩니다. MySQL 자체는이 기능을 제공하지 않습니다. MySQL Enterprise Backup 제품에 따라 InnoDB
백업을 압축하고 백업 출력의 압축과 암호화는 파일 시스템 유틸리티를 사용하여 얻을 수 있습니다. 기타 서드 파티 솔루션을 사용할 수 있습니다.