• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 1. 백업 및 복구의 종류
    2. 데이터베이스 백업 방법
    3. 백업 및 복구 전략의 예
    4. 백업에 mysqldump의 사용
    5. 바이너리 로그를 사용한 시점 (증분) 복구
    6. MyISAM 테이블의 보수와 크래쉬 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

7.2 데이터베이스 백업 방법

이 섹션에서는 백업을 만들 경우의 일반적인 방법을 요약 한 것입니다.

MySQL Enterprise Backup 의한 핫 백업 만들기

MySQL Enterprise Edition 고객은 MySQL Enterprise Backup 제품을 사용하여 인스턴스 전체 또는 선택한 데이터베이스 테이블 또는 둘의 물리적 백업을 실행할 수 있습니다. 이 제품은 증분 및 압축 백업 기능이 포함되어 있습니다. 물리적 데이터베이스 파일의 백업은 복원이 mysqldump 명령 등의 논리 기법보다 훨씬 빨라집니다. InnoDB 테이블은 핫 백업 메커니즘을 사용하여 복사됩니다. (이상적으로는 InnoDB 테이블에서 데이터의 대부분을 나타내고있다한다.) 다른 스토리지 엔진의 테이블은 웜 백업 메커니즘을 사용하여 복사됩니다. MySQL Enterprise Backup 제품의 개요는 섹션 25.2 "MySQL Enterprise Backup" 을 참조하십시오.

mysqldump 또는 mysqlhotcopy에 의한 백업 만들기

mysqldump 프로그램과 mysqlhotcopy 스크립트로 백업을 만들 수 있습니다. mysqldump는 모든 종류의 테이블을 백업 할 수 있기 때문에보다 일반적인입니다. mysqlhotcopy는 일부 스토리지 엔진에서만 작동합니다. ( 섹션 7.4 "백업에 mysqldump 사용" 및 섹션 4.6.10 "mysqlhotcopy - 데이터베이스 백업 프로그램" 을 참조하십시오.)

InnoDB 테이블의 경우, mysqldump에 --single-transaction 옵션을 사용하여 테이블을 잠그지 온라인 백업을 수행 할 수 있습니다. 섹션 7.3.1 "백업 정책 설정" 을 참조하십시오.

테이블 파일을 복사하여 백업 만들기

자신의 파일을 사용하여 각 테이블을 나타내는 스토리지 엔진의 경우, 테이블은 그 파일을 복사하여 백업 할 수 있습니다. 예를 들어, MyISAM 테이블은 파일로 저장되므로 파일 ( *.frm , * *.MYD , 및 *.MYI 파일)을 복사하여 쉽게 백업을 할 수 있습니다. 일관된 백업을 취득하려면 서버를 중지하거나 관련 테이블을 잠그고 플러시합니다.

 FLUSH TABLES tbl_list WITH READ LOCK;

읽기 잠금 만 필요합니다. 이는 데이터베이스 디렉토리의 파일을 복사하는 동안 다른 클라이언트가 계속 테이블을 쿼리 할 수​​ 있습니다. 백업을 시작하기 전에 모든 액티브 인덱스 페이지를 디스크에 기록하도록하기 위해 플래시가 필요합니다. 섹션 13.3.5 "LOCK TABLES 및 UNLOCK TABLES 구문" 및 섹션 13.7.6.3 "FLUSH 구문" 을 참조하십시오.

서버가 아무것도 업데이트하지 않는 한, 모든 테이블 파일을 복사해서 바이너리 백업을 쉽게 만들 수 있습니다. mysqlhotcopy 스크립트는이 방법을 사용합니다. (단, 테이블 파일 복사 방법은 데이터베이스에 InnoDB 테이블이 포함되어있는 경우 작동하지 않습니다. InnoDB 는 반드시 데이터베이스 디렉토리에 테이블 내용을 저장하지 않기 때문에 mysqlhotcopy은 InnoDB 테이블에서 작동하지 않습니다. 또한 서버 이 활성화 데이터를 업데이트하지 않는 경우, InnoDB 는 변경된 데이터를 아직 메모리에 캐시하고 디스크에 플래시하지 않을 수 있습니다.)

구분 된 텍스트 파일 백업 만들기

테이블의 데이터가 포함 된 텍스트 파일을 작성하려면 SELECT * INTO OUTFILE ' file_name ' FROM tbl_name 를 사용할 수 있습니다. 이 파일은 클라이언트 호스트가 아니라 MySQL 서버 호스트에 생성됩니다. 이 문의 경우, 파일의 덮어 쓰기를 허용하면 보안 위험하므로 출력 파일이 이미 존재하고있어되지 않습니다. 섹션 13.2.9 "SELECT 구문" 을 참조하십시오. 이 방법은 모든 종류의 데이터 파일에 작동하지만 테이블 데이터 만 저장하고 테이블 구조는 저장되지 않습니다.

텍스트 데이터 파일 (백업 된 테이블의 CREATE TABLE 문이 포함 된 파일 이외에)를 만드는 다른 방법은 mysqldump와 --tab 옵션을 사용하는 것입니다. 섹션 7.4.3 "mysqldump에 의한 구분 된 텍스트 형식으로 데이터의 덤프" 를 참조하십시오.

구분 된 텍스트 데이터 파일을 다시로드하려면 LOAD DATA INFILE 또는 mysqlimport를 사용합니다.

바이너리 로깅을 사용해서 증분 백업의 작성

MySQL은 증분 백업을 지원합니다. --log-bin 옵션으로 서버를 시작하고 바이너리 로깅을 활성화해야합니다. 섹션 5.2.4 "바이너리 로그" 를 참조하십시오. 바이너리 로그 파일은 백업을 수행 한 시점의 뒤에 열린 데이터베이스에 변경 복제 할 필요가있는 정보를 제공합니다. 증분 백업 (마지막 전체 백업 또는 증분 백업 이후에 발생한 모든 변경을 포함)을 만들려고 할 때 FLUSH LOGS 를 사용하여 바이너리 로그를 순환합니다. 이것이 완료되면 마지막 전체 또는 증분 백업의 순간부터 마지막​​ 하나 전 범위의 모든 바이너리 로그를 백업 위치에 복사해야합니다. 이러한 바이너리 로그는 증분 백업 복원시 섹션 7.5 "바이너리 로그를 사용한 시점 (증분) 복구" 에 설명 된대로 그들을 적용합니다. 다음으로 전체 백업을하고자한다면, 역시 FLUSH LOGS , mysqldump --flush-logs, 또는 mysqlhotcopy --flushlog를 사용하여 바이너리 로그를 순환합니다. 섹션 4.5.4 "mysqldump - 데이터베이스 백업 프로그램" 및 섹션 4.6.10 "mysqlhotcopy - 데이터베이스 백업 프로그램" 을 참조하십시오.

리플리케이션을 사용하여 백업 만들기

백업을 만드는 동안 마스터 서버에 성능 문제가있는 경우 유용 할 수있는 하나의 전략은 마스터가 아닌 슬레이브에 복제를 설치하고 백업을 수행하는 것입니다. 섹션 17.3.1 "백업을 위해 복제 사용" 을 참조하십시오.

슬레이브 복제 서버를 백업하는 경우 선택한 백업 방법에 관계없이 슬레이브 데이터베이스를 백업 할 때 그 마스터 정보와 릴레이 로그 정보 저장소를 백업하십시오 ( 섹션 17.2.2 "복제 릴레이 및 상태 로그" 를 참조하십시오). 이러한 정보 파일은 슬레이브의 데이터를 복원 한 후 복제를 다시 시작하기 위해 항상 필요합니다. 슬레이브가 LOAD DATA INFILE 명령문을 복제 할 때 슬레이브가이를 위해 사용하는 디렉토리 내에 존재하는 SQL_LOAD-* 파일도 백업하십시오. 노예 중단 된 LOAD DATA INFILE 조작의 복제를 재개하기 위해이 파일을 필요로합니다. 이 디렉토리의 위치는 --slave-load-tmpdir 옵션의 값입니다. 옵션으로 서버를 시작하지 않은 경우, 디렉토리 위치는 tmpdir 시스템 변수의 값입니다.

손상된 테이블 복구

손상된 MyISAM 테이블을 복원해야하는 경우, 먼저 REPAIR TABLE 또는 myisamchk -r을 사용하여 그 복구를 시도합니다. 그것은 모든 경우의 99.9 %에서 작동하는 것입니다. myisamchk가 실패했을 경우 섹션 7.6 "MyISAM 테이블의 보수와 크래쉬 복구" 를 참조하십시오.

파일 시스템 스냅 샷을 사용하여 백업 만들기

Veritas 파일 시스템을 사용하는 경우 다음과 같이 백업을 만들 수 있습니다.

  1. 클라이언트 프로그램에서 FLUSH TABLES WITH READ LOCK 을 실행합니다.

  2. 다른 쉘에서 mount vxfs snapshot 을 실행합니다.

  3. 첫 번째 클라이언트에서 UNLOCK TABLES 를 실행합니다.

  4. 스냅 샷에서 파일을 복사합니다.

  5. 스냅 샷을 마운트 해제합니다.

같은 스냅 샷 기능은 LVM이나 ZFS와 같은 다른 파일 시스템에서도 사용할 수 있습니다.

서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved