• 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.2 mysqlbinlog row 이벤트보기

다음 예는 데이터의 변경을 지정하는 행 이벤트를 mysqlbinlog가 표시하는 방법을 설명하고 있습니다. 이들은 WRITE_ROWS_EVENT , UPDATE_ROWS_EVENT 및 DELETE_ROWS_EVENT 타입 코드를 가진 이벤트에 대응합니다. --base64-output=DECODE-ROWS 옵션 및 --verbose 옵션을 줄 이벤트 출력에 영향을 미치는 데 사용할 수 있습니다.

서버가 행 기반의 바이너리 로깅을 사용하고 다음 명령문 시퀀스를 실행합니다.

 CREATE TABLE t
 (
   id INT NOT NULL,
   name VARCHAR (20) NOT NULL,
   date DATE NULL
 ) ENGINE = InnoDB;

 START TRANSACTION;
 INSERT INTO t VALUES (1, 'apple', NULL);
 UPDATE t SET name = 'pear', date = '2009-01-01'WHERE id = 1;
 DELETE FROM t WHERE id = 1;
 COMMIT;

기본적으로 mysqlbinlog 행 이벤트를 BINLOG 문을 사용하여 base-64 문자열로 인코딩하여 표시합니다. 무관 한 행을 생략하면 이전 문 순서에 의해 생성되는 행 이벤트의 출력은 다음과 같이됩니다.

 shell> mysqlbinlog log_file
 ...
 # at 218
 # 080828 15:03:08 server id 1 end_log_pos 258 Write_rows : table id 17 flags : STMT_END_F

 BINLOG '
 fAS3SBMBAAAALAAAANoAAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ =
 fAS3SBcBAAAAKAAAAAIBAAAQABEAAAAAAAEAA // 8AQAAAAVhcHBsZQ ==
 '/ *! * /;
 ...
 # at 302
 # 080828 15:03:08 server id 1 end_log_pos 356 Update_rows : table id 17 flags : STMT_END_F

 BINLOG '
 fAS3SBMBAAAALAAAAC4BAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ =
 fAS3SBgBAAAANgAAAGQBAAAQABEAAAAAAAEAA //// AEAAAAFYXBwbGX4AQAAAARwZWFyIbIP
 '/ *! * /;
 ...
 # at 400
 # 080828 15:03:08 server id 1 end_log_pos 442 Delete_rows : table id 17 flags : STMT_END_F

 BINLOG '
 fAS3SBMBAAAALAAAAJABAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ =
 fAS3SBkBAAAAKgAAALoBAAAQABEAAAAAAAEAA // 4AQAAAARwZWFyIbIP
 '/ *! * /;

행 이벤트를 "의사 SQL"문 형식의 주석 표시하려면 mysqlbinlog를 --verbose 옵션 또는 -v 옵션으로 실행합니다. 출력은 ### 로 시작하는 행이 포함됩니다.

 shell> mysqlbinlog -v log_file
 ...
 # at 218
 # 080828 15:03:08 server id 1 end_log_pos 258 Write_rows : table id 17 flags : STMT_END_F

 BINLOG '
 fAS3SBMBAAAALAAAANoAAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ =
 fAS3SBcBAAAAKAAAAAIBAAAQABEAAAAAAAEAA // 8AQAAAAVhcHBsZQ ==
 '/ *! * /;
 ### INSERT INTO test.t
 ### SET
 ### @ 1 = 1
 ### @ 2 = 'apple'
 ### @ 3 = NULL
 ...
 # at 302
 # 080828 15:03:08 server id 1 end_log_pos 356 Update_rows : table id 17 flags : STMT_END_F

 BINLOG '
 fAS3SBMBAAAALAAAAC4BAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ =
 fAS3SBgBAAAANgAAAGQBAAAQABEAAAAAAAEAA //// AEAAAAFYXBwbGX4AQAAAARwZWFyIbIP
 '/ *! * /;
 ### UPDATE test.t
 ### WHERE
 ### @ 1 = 1
 ### @ 2 = 'apple'
 ### @ 3 = NULL
 ### SET
 ### @ 1 = 1
 ### @ 2 = 'pear'
 ### @ 3 = '2009 : 01 : 01'
 ...
 # at 400
 # 080828 15:03:08 server id 1 end_log_pos 442 Delete_rows : table id 17 flags : STMT_END_F

 BINLOG '
 fAS3SBMBAAAALAAAAJABAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ =
 fAS3SBkBAAAAKgAAALoBAAAQABEAAAAAAAEAA // 4AQAAAARwZWFyIbIP
 '/ *! * /;
 ### DELETE FROM test.t
 ### WHERE
 ### @ 1 = 1
 ### @ 2 = 'pear'
 ### @ 3 = '2009 : 01 : 01'

--verbose 또는 -v 를 두 번 지정하면 각 컬럼의 데이터 유형 및 일부 메타 데이터도 표시됩니다. 출력은 각 컬럼의 변경에 따라 추가 의견이 포함됩니다.

 shell> mysqlbinlog -vv log_file
 ...
 # at 218
 # 080828 15:03:08 server id 1 end_log_pos 258 Write_rows : table id 17 flags : STMT_END_F

 BINLOG '
 fAS3SBMBAAAALAAAANoAAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ =
 fAS3SBcBAAAAKAAAAAIBAAAQABEAAAAAAAEAA // 8AQAAAAVhcHBsZQ ==
 '/ *! * /;
 ### INSERT INTO test.t
 ### SET
 ### @ 1 = 1 / * INT meta = 0 nullable = 0 is_null = 0 * /
 ### @ 2 = 'apple'/ * VARSTRING (20) meta = 20 nullable = 0 is_null = 0 * /
 ### @ 3 = NULL / * VARSTRING (20) meta = 0 nullable = 1 is_null = 1 * /
 ...
 # at 302
 # 080828 15:03:08 server id 1 end_log_pos 356 Update_rows : table id 17 flags : STMT_END_F

 BINLOG '
 fAS3SBMBAAAALAAAAC4BAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ =
 fAS3SBgBAAAANgAAAGQBAAAQABEAAAAAAAEAA //// AEAAAAFYXBwbGX4AQAAAARwZWFyIbIP
 '/ *! * /;
 ### UPDATE test.t
 ### WHERE
 ### @ 1 = 1 / * INT meta = 0 nullable = 0 is_null = 0 * /
 ### @ 2 = 'apple'/ * VARSTRING (20) meta = 20 nullable = 0 is_null = 0 * /
 ### @ 3 = NULL / * VARSTRING (20) meta = 0 nullable = 1 is_null = 1 * /
 ### SET
 ### @ 1 = 1 / * INT meta = 0 nullable = 0 is_null = 0 * /
 ### @ 2 = 'pear'/ * VARSTRING (20) meta = 20 nullable = 0 is_null = 0 * /
 ### @ 3 = '2009 : 01 : 01'/ * DATE meta = 0 nullable = 1 is_null = 0 * /
 ...
 # at 400
 # 080828 15:03:08 server id 1 end_log_pos 442 Delete_rows : table id 17 flags : STMT_END_F

 BINLOG '
 fAS3SBMBAAAALAAAAJABAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ =
 fAS3SBkBAAAAKgAAALoBAAAQABEAAAAAAAEAA // 4AQAAAARwZWFyIbIP
 '/ *! * /;
 ### DELETE FROM test.t
 ### WHERE
 ### @ 1 = 1 / * INT meta = 0 nullable = 0 is_null = 0 * /
 ### @ 2 = 'pear'/ * VARSTRING (20) meta = 20 nullable = 0 is_null = 0 * /
 ### @ 3 = '2009 : 01 : 01'/ * DATE meta = 0 nullable = 1 is_null = 0 * /

--base64-output=DECODE-ROWS 옵션을 사용하여 행 이벤트에 대한 BINLOG 문을 억제하도록 mysqlbinlog에 지시 할 수 있습니다. 이것은 --base64-output=NEVER 과 비슷하지만 행 이벤트가 감지 된 경우 오류로 종료하지 않습니다. --base64-output=DECODE-ROWS 및 --verbose 의 조합으로 줄 이벤트를 SQL 문으로 만 표시하는 편리한 방법을 제공합니다.

 shell> mysqlbinlog -v --base64-output=DECODE-ROWS log_file
 ...
 # at 218
 # 080828 15:03:08 server id 1 end_log_pos 258 Write_rows : table id 17 flags : STMT_END_F
 ### INSERT INTO test.t
 ### SET
 ### @ 1 = 1
 ### @ 2 = 'apple'
 ### @ 3 = NULL
 ...
 # at 302
 # 080828 15:03:08 server id 1 end_log_pos 356 Update_rows : table id 17 flags : STMT_END_F
 ### UPDATE test.t
 ### WHERE
 ### @ 1 = 1
 ### @ 2 = 'apple'
 ### @ 3 = NULL
 ### SET
 ### @ 1 = 1
 ### @ 2 = 'pear'
 ### @ 3 = '2009 : 01 : 01'
 ...
 # at 400
 # 080828 15:03:08 server id 1 end_log_pos 442 Delete_rows : table id 17 flags : STMT_END_F
 ### DELETE FROM test.t
 ### WHERE
 ### @ 1 = 1
 ### @ 2 = 'pear'
 ### @ 3 = '2009 : 01 : 01'
참고

mysqlbinlog의 출력을 다시 수행 할 예정이다 경우 BINLOG 문을 억제해야하는 것이 아닙니다.

--verbose 이 줄 이벤트에 의해 생성 된 SQL 문은 해당 BINLOG 문보다 훨씬 쉽게 읽을 수 있습니다. 그러나 이벤트를 생성 한 원래의 SQL 문과 정확히 대응하지 않습니다. 다음 제한 사항이 적용됩니다.

  • 원래 컬럼 이름은 잃어 @ N 으로 대체됩니다. N 은 열 번호입니다.

  • 바이너리 로그는 문자 집합 정보를 사용할 수 없습니다. 이것은 문자열 컬럼의 표시에 영향을줍니다.

    • 해당 바이너리 문자열과 비 이진 문자열 사이에 구분하지 않습니다 ( BINARY 와 CHAR , VARBINARY 과 VARCHAR , BLOB 및 TEXT ). 출력은 고정 길이 문자열에 대해 STRING 가변 길이 문자열에 VARSTRING 데이터 형식이 사용됩니다.

    • 멀티 바이트 문자 집합은 문자 당 최대 바이트 수는 바이너리 로그에 나타나지 않기 때문에 문자열의 길이는 문자가 아닌 바이트 단위로 표시됩니다. 예를 들어, STRING(4) 는 다음의 컬럼 형 중 하나의 값의 데이터 형식으로 사용됩니다.

       CHAR (4) CHARACTER SET latin1
       CHAR (2) CHARACTER SET ucs2
      
    • UPDATE_ROWS_EVENT 형 이벤트의 스토리지 포맷 때문에 UPDATE 문은 WHERE 절이 SET 절 앞에 표시됩니다.

행 이벤트를 적절히 해석하려면 바이너리 로그의 처음에있는 형식의 계정 정보가 필요합니다. mysqlbinlog는 로그의 나머지 부분에 줄 이벤트가 포함되는지 여부는 미리 알 수 없기 때문에 기본적으로 출력의 첫 부분에 BINLOG 문을 사용하여 형식 설명 이벤트를 표시합니다.

바이너리 로그에 BINLOG 문을 필요로하는 이벤트가 포함되지 않는 것을 알 수있다 (즉 행 이벤트가없는) 경우 --base64-output=NEVER 옵션을 사용하여이 헤더가 기록되는 것을 방지 할 수 합니다.


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