• 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 프로그램
  • 1. MySQL 프로그램 개요
    2. MySQL 프로그램 사용
    3. MySQL 서버와 서버 시작 프로그램
    4. 설치 관련 프로그램
    5. 클라이언트 프로그램
    6. MySQL 관리 프로그램 및 유틸리티 프로그램
    1. innochecksum - 오프라인 InnoDB 파일 체크섬 유틸리티
    2. myisam_ftdump - 전체 텍스트 인덱싱 정보보기
    3. myisamchk - MyISAM 테이블 유지 보수 유틸리티
    4. myisamlog - MyISAM 로그 파일의 내용보기
    5. myisampack - 압축 된 읽기 전용 MyISAM 테이블의 생성
    6. mysql_config_editor - MySQL 구성 유틸리티
    7. mysqlaccess - 액세스 권한을 확인하는 클라이언트
    8. mysqlbinlog - 바이너리 로그 파일을 처리하기위한 유틸리티
    1. mysqlbinlog 16 진수 덤프 형식
    2. mysqlbinlog row 이벤트보기
    3. 바이너리 로그 파일의 백업을위한 mysqlbinlog 사용
    4. mysqlbinlog 서버 ID 지정
    9. mysqldumpslow - 슬로우 쿼리 로그 파일의 요약
    10. mysqlhotcopy - 데이터베이스 백업 프로그램
    11. mysql_convert_table_format - 지정된 스토리지 엔진을 사용하는 테이블의 변환
    12. mysql_find_rows - 파일에서 SQL 문을 추출
    13. mysql_fix_extensions - 테이블 파일 확장명의 정규화
    14. mysql_setpermission - 부여 테이블에 허가를 대화식으로 설정
    15. mysql_waitpid - 프로세스를 종료하고 종료를 대기
    16. mysql_zap - 패턴과 일치하는 프로세스를 강제 종료
    7. MySQL 프로그램 개발 유틸리티
    8. 기타 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 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 새로운 기능

4.6.8.3 바이너리 로그 파일의 백업을위한 mysqlbinlog 사용

기본적으로 mysqlbinlog 바이너리 로그 파일을 읽고 그 내용을 텍스트 형식으로 표시합니다. 이렇게하면 파일의 이벤트가 조사 쉬워 (예를 들어 출력을 mysql의 입력으로 사용하여) 그들을 다시 실행할 수 있습니다. mysqlbinlog은 로컬 파일 시스템에서 직접 로그 파일을 읽거나 --read-from-remote-server 옵션에서 서버에 연결하여 해당 서버에서 바이너리 로그의 내용을 요청할 수 있습니다. mysqlbinlog은 텍스트 출력을 표준 출력 또는 --result-file= file_name 옵션이 지정된 경우 그 값으로 지명 된 파일로 내보낼 수 있습니다.

MySQL 5.6에서는 mysqlbinlog 바이너리 로그 파일을 읽고, 같은 내용, 즉 텍스트 형식이 아닌 바이너리 형식의 내용을 포함하는 새로운 파일로 내보낼 수 있습니다. 이 기능은 바이너리 로그를 쉽게 원래의 형식으로 백업 할 수 있습니다. mysqlbinlog는 로그 파일 세트의 백업을 실행하고 마지막 파일의 끝에 도달했을 때 정지하여 정적 백업을 만들 수 있습니다. 또한 마지막 로그 파일의 끝에 도달했을 때 서버와의 연결을 유지하고 새로운 이벤트가 생성 될 때마다 복사본을 계속하여 지속적인 ( "라이브") 백업을 만들 수 있습니다 . 지속적인 백업 작업은 mysqlbinlog는 연결이 끝날 때까지 (예를 들어 서버가 종료 할 때 등) 또는 mysqlbinlog가 강제로 종료 될 때까지 실행됩니다. 연결이 종료 될 때 슬레이브 복제 서버와는 달리, mysqlbinlog은 대기하고 다시 연결을 시도하지 않습니다. 서버 재부팅 후 라이브 백업을 계속하려면 mysqlbinlog도 다시 시작해야합니다.

바이너리 로그 백업은 mysqlbinlog를 적어도 두 가지 옵션을 사용하여 시작해야합니다.

  • --read-from-remote-server (또는 -R ) 옵션은 mysqlbinlog 서버에 연결하고 바이너리 로그를 요구하도록 지시합니다. (이것은 마스터 서버에 연결하는 슬레이브 복제 서버와 동일합니다.)

  • --raw 옵션은 mysqlbinlog 텍스트 출력이 아닌 원시 (이진) 출력을 내보내도록 지시합니다.

--read-from-remote-server 옵션과 함께 다음 옵션을 지정하는 것이 일반적입니다. --host 는 서버가 실행되는 위치를 표시, --user 및 --password 등의 연결 옵션도 필요할 수 있습니다.

--raw 함께 사용하면 유용한 옵션이 외에도 여러 가지가 있습니다.

  • --stop-never : 마지막 로그 파일의 끝에 도달 한 뒤, 서버와의 연결을 유지하고 새로운 이벤트 읽기를 계속합니다.

  • --stop-never-slave-server-id= id : --stop-never 가 사용되는 경우 mysqlbinlog가 보고서 서버 ID. 기본값은 65535입니다. 이것은 슬레이브 서버 또는 다른 mysqlbinlog 프로세스의 ID와의 충돌을 피하기 위해 사용할 수 있습니다. 섹션 4.6.8.4 "mysqlbinlog 서버 ID 지정" 을 참조하십시오.

  • --result-file : 나중에 설명하도록 출력 파일 이름의 접두어.

mysqlbinlog에서 서버의 바이너리 로그 파일을 백업 할 서버에 실제로 존재하는 파일 이름을 지정해야합니다. 이름을 모르는 경우 서버에 연결되어 SHOW BINARY LOGS 문을 사용하여 현재 이름을 표시합니다. 이 명령문 다음 출력이 생성된다고합니다.

 mysql> SHOW BINARY LOGS;
+---------------+-----------+
| Log_name      | File_size |
+---------------+-----------+
| binlog.000130 |     27459 |
| binlog.000131 |     13719 |
| binlog.000132 |     43268 |
+---------------+-----------+

이 정보는 mysqlbinlog를 사용하여 다음과 같이 바이너리 로그를 현재 디렉토리에 백업 할 수 있습니다 (명령은 한 줄에 하나씩 입력합니다).

  • binlog.000130 에서 binlog.000132 까지의 정적 백업하려면 다음 명령 중 하나를 사용합니다.

     mysqlbinlog --read-from-remote-server --host = host_name --raw
       binlog.000130 binlog.000131 binlog.000132
    
     mysqlbinlog --read-from-remote-server --host = host_name --raw
       --to-last-log binlog.000130
    

    첫 번째 명령은 모든 파일 이름을 명시 적으로 지정합니다. 두 번째는 첫 번째 파일 만 지명하고 --to-last-log 를 사용하여 끝까지 읽습니다. 이러한 명령의 차이점은 mysqlbinlog가 binlog.000132 의 끝에 도달하기 전에 서버가 binlog.000133 을 열 때 첫 번째 명령은 그것을 읽기 없지만 두 번째 명령은 읽을 점 입니다.

  • mysqlbinlog가 binlog.000130 에서 기존 로그 파일의 사본을 시작한 후 연결을 유지하여 서버가 새로운 이벤트를 생성하면서 그들을 복사하는 라이브 백업하려면 :

     mysqlbinlog --read-from-remote-server --host = host_name --raw
       --stop-never binlog.000130
    

    --stop-never 를 사용하면 --to-last-log 옵션은 암시되어 있기 때문에 마지막 로그 파일까지 읽을 수 있도록이 옵션을 지정할 필요가 없습니다.

출력 파일의 이름

--raw 을 사용하지 않으면 mysqlbinlog은 텍스트 출력을 생성하고 --result-file 옵션이 주어진 경우, 모든 출력이 기록되는 단일 파일의 이름을 지정합니다. --raw 를 사용하면 mysqlbinlog는 서버로부터 전송되는 각 로그 파일에 대해 하나의 바이너리 출력 파일을 내 보냅니다. 기본적으로 mysqlbinlog 파일을 현재 디렉토리에 원래 로그 파일과 동일한 이름으로 내 보냅니다. 출력 파일 이름을 변경하려면 --result-file 옵션을 사용합니다. --raw 도 지정되어있는 경우 --result-file 옵션 값은 출력 파일 이름을 변경하는 접두어로 처리됩니다.

서버에 현재 binlog.000999 이상의 이름의 바이너리 로그 파일이 있다고합니다. mysqlbinlog --raw을 사용하여 파일을 백업하는 경우 --result-file 옵션은 다음 표와 같이 출력 파일 이름을 생성합니다. --result-file 의 값을 디렉토리 경로에서 시작하게하여 파일을 특정 디렉토리로 내보낼 수 있습니다. --result-file 의 값이 디렉토리 이름만으로 구성되는 경우, 그 값은 경로 구분 문자로 끝나지 않으면 안됩니다. 출력 파일이 있으면 덮어 씁니다.

--result-file 옵션 출력 파일 이름
--result-file=x xbinlog.000999 이상
--result-file=/tmp/ /tmp/binlog.000999 이상
--result-file=/tmp/x /tmp/xbinlog.000999 이상
예 : mysqldump와 mysqlbinlog를 맞게 백업 및 복원을 할

다음의 예는 mysqldump와 mysqlbinlog를 함께 사용하여 서버의 데이터와 바이너리 로그를 백업 방법 및 데이터 손실이 발생한 경우 백업을 사용하여 서버에 복원하는 방법을 보여주는 간단한 시나리오를 설명하고 있습니다. 예를 들어, 서버는 호스트 host_name 에서 실행하고 첫 번째 바이너리 로그 파일의 이름은 binlog.000999 하다고합니다. 명령은 한 줄에 하나씩 입력합니다.

mysqlbinlog를 사용하여 바이너리 로그의 백업을 지속적으로 만듭니다.

 mysqlbinlog --read-from-remote-server --host = host_name --raw
   --stop-never binlog.000999

mysqldump를 사용하여 서버의 데이터 스냅 샷으로 덤프 파일을 만듭니다. --all-databases , --events 및 --routines 을 사용하여 모든 데이터를 백업하고 --master-data=2 를 사용하여 현재의 바이너리 로그 좌표를 덤프 파일에 포함됩니다.

 mysqldump --host = host_name --all-databases --events --routines --master-data = 2> dump_file

필요에 따라 mysqldump 명령을 정기적으로 실행하여 새 스냅 샷을 만듭니다.

데이터 손실이 발생한 경우 (예를 들어 서버 충돌 등), 최근의 덤프 파일을 사용하여 데이터를 복원합니다.

 mysql --host = host_name -u 루트 -p < dump_file

다음 바이너리 로그 백업을 사용하여 덤프 파일에 나열되어있는 좌표보다 나중에 기록 된 이벤트를 다시 실행합니다. 파일의 좌표가 다음과 같이되어 있다고합니다.

 - CHANGE MASTER TO MASTER_LOG_FILE = 'binlog.001002', MASTER_LOG_POS = 27284;

최근에 백업 된 로그 파일이 binlog.001004 라는 이름의 경우 다음과 같이 로그 이벤트를 다시 실행합니다.

 mysqlbinlog --start-position = 27284 binlog.001002 binlog.001003 binlog.001004
   | mysql --host = host_name -u 루트 -p

복원 작업을보다 쉽게 수행하기 위해, 또는 MySQL 원격 root 액세스가 허용되지 않는 경우, 백업 파일 (덤프 파일 및 바이너리 로그 파일)을 서버 호스트에 복사하는 것이 쉬운 경우도 있습니다.


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