mysqlbinlog
이것은 Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터와 같은 여러 무료 온라인 워크스테이션 중 하나를 사용하여 OnWorks 무료 호스팅 공급자에서 실행할 수 있는 mysqlbinlog 명령입니다.
프로그램:
이름
mysqlbinlog - 바이너리 로그 파일을 처리하기 위한 유틸리티
개요
mysqlbinlog [옵션] 로그 파일 ...
기술
서버의 바이너리 로그는 수정 사항을 설명하는 "이벤트"가 포함된 파일로 구성됩니다.
데이터베이스 콘텐츠에. 서버는 이러한 파일을 바이너리 형식으로 기록합니다. 그들의
텍스트 형식의 콘텐츠를 사용하려면 mysqlbinlog 공익 사업. 당신은 또한 사용할 수 있습니다 mysqlbinlog 에
복제 설정에서 슬레이브 서버가 작성한 릴레이 로그 파일의 내용을 표시합니다.
릴레이 로그는 바이너리 로그와 형식이 동일하기 때문입니다. 바이너리 로그와 릴레이 로그는
섹션 5.2.4, “바이너리 로그” 및 섹션 17.2.2, “복제
릴레이 및 상태 로그”.
호출 mysqlbinlog 이렇게 :
쉘> mysqlbinlog [옵션] 로그 파일 ...
예를 들어, binlog.000003이라는 바이너리 로그 파일의 내용을 표시하려면 다음을 사용하십시오.
명령:
쉘> mysqlbinlog binlog.0000003
출력에는 binlog.000003에 포함된 이벤트가 포함됩니다. 명령문 기반 로깅의 경우 이벤트
정보에는 SQL 문, 실행된 서버의 ID,
명령문이 실행된 시간, 소요된 시간 등. 을위한
행 기반 로깅의 경우 이벤트는 SQL 문이 아닌 행 변경을 나타냅니다. 보다
로깅 모드에 대한 정보는 17.1.2절. “복제 형식”을 참조하십시오.
이벤트 앞에는 추가 정보를 제공하는 헤더 주석이 옵니다. 예를 들어:
# 141시에
#100309 9:28:36 서버 아이디 123 end_log_pos 245
쿼리 thread_id=3350 exec_time=11 error_code=0
첫 번째 줄에서 at 뒤에 오는 숫자는 파일 오프셋 또는 시작을 나타냅니다.
바이너리 로그 파일의 이벤트 위치.
두 번째 줄은 명령문이 에서 시작된 날짜와 시간으로 시작합니다.
이벤트가 발생한 서버입니다. 복제를 위해 이 타임스탬프는 슬레이브로 전파됩니다.
서버. server id는 이벤트가 발생한 서버의 server_id 값입니다.
end_log_pos는 다음 이벤트가 시작되는 위치를 나타냅니다(즉,
현재 이벤트 + 1). thread_id는 이벤트를 실행한 스레드를 나타냅니다. exec_time은
마스터 서버에서 이벤트를 실행하는 데 소요된 시간입니다. 노예의 경우 차이가 있습니다.
슬레이브의 종료 실행 시간에서 마스터의 시작 실행 시간을 뺀 값.
이 차이는 복제가 마스터보다 지연되는 정도를 나타내는 지표 역할을 합니다.
error_code는 이벤트 실행 결과를 나타냅니다. XNUMX은 오류가 없음을 의미합니다.
발생했습니다.
주의 사항
이벤트 그룹을 사용할 때 이벤트의 파일 오프셋은 함께 그룹화될 수 있으며
이벤트의 댓글을 함께 그룹화할 수 있습니다. 이러한 그룹화된 이벤트를 다음과 같이 혼동하지 마십시오.
빈 파일 오프셋.
출력 mysqlbinlog 다시 실행할 수 있습니다(예: 입력으로 사용하여
MySQL은) 로그의 명령문을 다시 실행합니다. 이것은 다음 복구 작업에 유용합니다.
서버 충돌. 다른 사용 예는 이 섹션의 뒷부분과
7.5절. “바이너리 로그를 사용한 특정 시점(증분) 복구”.
일반적으로 사용하는 mysqlbinlog 바이너리 로그 파일을 직접 읽어서 적용
로컬 MySQL 서버. 다음을 사용하여 원격 서버에서 바이너리 로그를 읽을 수도 있습니다.
전에, --원격 서버에서 읽기 옵션. 원격 바이너리 로그를 읽으려면 연결 매개변수
서버에 연결하는 방법을 나타내기 위해 옵션을 지정할 수 있습니다. 이러한 옵션은 --주인,
--비밀번호, --포트, --규약, --소켓및 --사용자; 당신이
또한 사용 --원격 서버에서 읽기 옵션을 선택합니다.
mysqlbinlog 명령줄에서 지정할 수 있는 다음 옵션을 지원하거나
옵션 파일의 [mysqlbinlog] 및 [client] 그룹에 있습니다. 옵션에 대한 정보는
MySQL 프로그램에서 사용하는 파일은 4.2.6절. “옵션 파일 사용”을 참조하십시오.
· --도움, -?
도움말 메시지를 표시하고 종료합니다.
· --base64-출력=가치
이 옵션은 이벤트를 base-64 문자열로 인코딩하여 표시해야 하는 시기를 결정합니다.
BINLOG 문을 사용합니다. 옵션에는 다음과 같은 허용 값이 있습니다(대소문자 구분 안 함).
· AUTO("자동") 또는 UNSPEC("지정되지 않음")은 BINLOG 문을 표시합니다.
필요할 때 자동으로(즉, 형식 설명 이벤트 및 행의 경우
이벤트). 그렇지 않은 경우 --base64-출력 옵션이 주어지면 효과는 다음과 같습니다.
--base64-출력=자동.
주의 사항
자동 BINLOG 표시는 사용하려는 경우 유일한 안전한 동작입니다.
출력 mysqlbinlog 바이너리 로그 파일 내용을 재실행합니다. 다른 옵션
값은 디버깅 또는 테스트 목적으로만 사용됩니다.
모든 이벤트를 실행 가능한 형식으로 포함하지 않는 출력을 생성합니다.
· NEVER는 BINLOG 문이 표시되지 않도록 합니다. mysqlbinlog 로 종료
BINLOG를 사용하여 표시해야 하는 행 이벤트가 발견되면 오류가 발생합니다.
· DECODE-ROWS는 다음을 지정합니다. mysqlbinlog 행 이벤트를 디코딩하려는 의도
또한 다음을 지정하여 주석이 달린 SQL 문으로 표시됩니다. --말 수가 많은 옵션을 선택합니다.
NEVER와 마찬가지로 DECODE-ROWS는 BINLOG 문의 표시를 억제하지만 NEVER와 달리
행 이벤트가 발견되면 오류와 함께 종료되지 않습니다.
의 효과를 보여주는 예를 들면 --base64-출력 그리고 --말 수가 많은 행 이벤트
출력은 "MYSQLBINLOG ROW EVENT DISPLAY" 섹션을 참조하십시오.
· --바인드 주소=IP 주소
여러 네트워크 인터페이스가 있는 컴퓨터에서 이 옵션을 사용하여
MySQL 서버에 연결하는 데 사용할 인터페이스입니다.
이 옵션은 MySQL 5.6.1부터 지원됩니다.
· --binlog-행-이벤트-최대 크기=N
┌────────────────────┬────────────────────────────── ──────────────┐
│명령 줄 형성 │ --binlog-row-event-max-size=# │
├────────────────────┼───────────────────────────── ──────────────┤
│ │ 허용 마케팅은: │
│ ├────────────────────┬───────────────────────┤
│ │ 플랫폼 비트 크기 │ 64 │
│ ├────────────────────┼───────────────────────┤
│ │ 타입 │ 숫자 │
│ ├────────────────────┼───────────────────────┤
│ │ 태만 │ 4294967040 │
│ ├────────────────────┼───────────────────────┤
│ │ Min 가치관 │ 256 │
│ ├────────────────────┼───────────────────────┤
│ │ Max 가치관 │ 18446744073709547520 │
└────────────────────┴──────────────────────────────── ──────────────┘
행 기반 바이너리 로그 이벤트의 최대 크기를 바이트 단위로 지정합니다. 행이 그룹화됨
가능하면 이 크기보다 작은 이벤트로. 값은 256의 배수여야 합니다.
기본값은 4GB입니다.
· --character-set-dir=통로
문자 집합이 설치된 디렉터리입니다. 10.5절. “문자 집합을 참조하십시오.
구성".
· --연결-서버-id=서버 아이디
이 옵션은 BINLOG_DUMP_NON_BLOCK 지원을 위해 MySQL 서버를 테스트하는 데 사용됩니다.
MySQL 5.6.5에서 실수로 제거되고 MySQL에서 복원된 연결 플래그
5.6.20(버그 #18000079, 버그 #71178). 정상 작동에는 필요하지 않습니다.
이 옵션의 유효한 기본값과 최소값은 다음 여부에 따라 다릅니다. mysqlbinlog
차단 모드 또는 비차단 모드에서 실행됩니다. 언제 mysqlbinlog 차단 실행됩니다
모드에서 기본(및 최소) 값은 1입니다. 비차단 모드에서 실행할 때 기본값은
(및 최소) 값은 0입니다.
이 옵션은 MySQL 5.6.20에 추가되었습니다.
· --데이터베이스=DB_이름, -d DB_이름
이 옵션은 mysqlbinlog 바이너리 로그에서 항목을 출력하기 위해(로컬 로그만)
동안 발생하는 DB_이름 USE에서 기본 데이터베이스로 선택했습니다.
The --데이터 베이스 에 대한 옵션 mysqlbinlog 받는 사람과 유사 --binlog-do-db 에 대한 옵션
mysqld를, 그러나 하나의 데이터베이스만 지정하는 데 사용할 수 있습니다. 만약에 --데이터 베이스 여러 개가 주어진다
시간, 마지막 인스턴스만 사용됩니다.
이 옵션의 효과는 명령문 기반 또는 행 기반 로깅 여부에 따라 다릅니다.
의 효과와 동일한 방식으로 형식이 사용 중입니다. --binlog-do-db 여부에 따라
명령문 기반 또는 행 기반 로깅이 사용 중입니다.
명령문 기반 로깅. 그만큼 --데이터 베이스 옵션은 다음과 같이 작동합니다.
· 하는 동안 DB_이름 기본 데이터베이스이고 수정 여부에 관계없이 명령문이 출력됩니다.
테이블 DB_이름 또는 다른 데이터베이스.
· 하지 않는 한 DB_이름 기본 데이터베이스로 선택하면 명령문이 출력되지 않습니다.
테이블을 수정하더라도 DB_이름.
· CREATE DATABASE, ALTER DATABASE, DROP DATABASE는 예외입니다. NS
데이터베이스 만들어진, 변경된, or 떨어 뜨린 기본값으로 간주됩니다
명령문을 출력할지 여부를 결정할 때 데이터베이스.
다음을 사용하여 이러한 명령문을 실행하여 이진 로그가 생성되었다고 가정합니다.
명령문 기반 로깅:
test.t1에 삽입(i) Values(100);
db2.t2(j)에 삽입 Values(200);
사용 테스트;
test.t1에 삽입(i) Values(101);
t1(i)에 삽입 Values(102);
db2.t2(j)에 삽입 Values(201);
사용 DB2;
test.t1에 삽입(i) Values(103);
db2.t2(j)에 삽입 Values(202);
t2(j)에 삽입 Values(203);
mysqlbinlog --데이터베이스=테스트 때문에 처음 두 개의 INSERT 문을 출력하지 않습니다.
기본 데이터베이스가 없습니다. USE 다음에 오는 세 개의 INSERT 문을 출력합니다.
테스트하지만 USE db2 다음에 오는 세 개의 INSERT 문이 아닙니다.
mysqlbinlog --데이터베이스=db2 때문에 처음 두 개의 INSERT 문을 출력하지 않습니다.
기본 데이터베이스가 없습니다. 다음 세 개의 INSERT 문을 출력하지 않습니다.
USE 테스트를 수행하지만 USE db2 다음에 오는 세 개의 INSERT 문을 출력합니다.
행 기반 로깅. mysqlbinlog 에 속하는 테이블을 변경하는 항목만 출력합니다.
DB_이름. 기본 데이터베이스는 이에 영향을 미치지 않습니다. 바이너리 로그가
설명은 명령문 기반 로깅이 아닌 행 기반 로깅을 사용하여 생성되었습니다.
mysqlbinlog --데이터베이스=테스트 테스트에서 t1을 수정하는 항목만 출력합니다.
USE가 발행되었는지 여부 또는 기본 데이터베이스가 무엇인지에 관계없이 데이터베이스. 만약
서버가 binlog_format을 MIXED로 설정하여 실행 중이고 다음을 수행할 수 있기를 원합니다.
사용 mysqlbinlog 와 더불어 --데이터 베이스 옵션을 사용하려면 다음과 같은 테이블이
수정된 것은 USE가 선택한 데이터베이스에 있습니다. (특히, 교차 데이터베이스가 없습니다.
업데이트를 사용해야 합니다.)
MySQL 5.6.10 이전에는 --데이터 베이스 옵션이 기록된 로그와 함께 올바르게 작동하지 않았습니다.
GTID가 활성화된 MySQL 서버에 의해 (버그 #15912728)
· --디버그[=디버그 옵션], -# [디버그 옵션]
디버깅 로그를 작성합니다. 전형적인 디버그 옵션 문자열은 d:t:o,파일 이름. 기본값
d:t:o,/tmp/mysqlbinlog.trace입니다.
· --디버그 확인
프로그램이 종료될 때 일부 디버깅 정보를 인쇄합니다.
· --디버그 정보
프로그램이 실행될 때 디버깅 정보와 메모리 및 CPU 사용 통계를 인쇄합니다.
출구.
· --기본 인증=플러그인
사용할 클라이언트 측 인증 플러그인입니다. 6.3.7절. “플러그 가능
입증".
이 옵션은 MySQL 5.6.2에 추가되었습니다.
· --defaults-추가 파일=파일 이름
전역 옵션 파일 다음에 이 옵션 파일을 읽지만 (Unix의 경우) 사용자 앞에
옵션 파일. 파일이 존재하지 않거나 액세스할 수 없는 경우 오류가 발생합니다.
파일 이름 상대 경로로 주어진 경우 현재 디렉토리를 기준으로 해석됩니다.
전체 경로 이름이 아닌 이름.
· --기본 파일=파일 이름
주어진 옵션 파일만 사용하십시오. 파일이 존재하지 않거나 존재하지 않는 경우
액세스할 수 없는 경우 오류가 발생합니다. 파일 이름 현재를 기준으로 해석됩니다.
전체 경로 이름이 아닌 상대 경로 이름으로 제공된 경우 디렉토리입니다.
· --defaults-그룹-접미사=하위 버전
일반적인 옵션 그룹뿐만 아니라 일반적인 이름과
접미사 하위 버전. 예를 들어, mysqlbinlog 일반적으로 [client] 및 [mysqlbinlog]를 읽습니다.
여러 떼. 만약 --defaults-그룹-접미사=_기타 옵션이 주어지고, mysqlbinlog 또한 읽는다
[client_other] 및 [mysqlbinlog_other] 그룹.
· --비활성화-로그-빈, -D
바이너리 로깅을 비활성화합니다. 이것은 다음을 사용하는 경우 무한 루프를 피하는 데 유용합니다.
--마지막 로그까지 옵션을 선택하고 출력을 동일한 MySQL 서버로 보내고 있습니다. 이 옵션
또한 충돌 후 복원할 때 명령문의 중복을 피하기 위해 유용합니다.
로그인했습니다.
이 옵션을 사용하려면 SUPER 권한이 있어야 합니다. 그것은 원인 mysqlbinlog 에
출력에 SET sql_log_bin = 0 문을 포함하여 이진 로깅을 비활성화합니다.
남은 출력. SET 문은 SUPER가 없으면 효과가 없습니다.
특권.
· --제외-gtids=gtid_set
목록에 나열된 그룹을 표시하지 마십시오. gtid_set. MySQL 5.6.5에 추가되었습니다.
· --열면 강제 실행, -F
열려 있거나 제대로 닫히지 않은 경우에도 바이너리 로그 파일을 읽습니다.
· --강제 읽기, -f
이 옵션을 사용하면 mysqlbinlog 인식하지 못하는 바이너리 로그 이벤트를 읽고,
경고를 인쇄하고 이벤트를 무시하고 계속합니다. 이 옵션이 없으면
mysqlbinlog 그러한 이벤트를 읽으면 중지됩니다.
· --hexdump, -H
섹션에 설명된 대로 주석에 로그인의 XNUMX진수 덤프를 표시합니다.
"MYSQLBINLOG XNUMX진 덤프 형식". XNUMX진수 출력은 복제에 도움이 될 수 있습니다.
디버깅.
· --호스트=호스트 이름, -h 호스트 이름
주어진 호스트의 MySQL 서버에서 바이너리 로그를 가져옵니다.
· --include-gtids=gtid_set
목록에 나열된 그룹만 표시 gtid_set. MySQL 5.6.5에 추가되었습니다.
· --로컬 로드=통로, -l 통로
지정된 디렉토리에서 LOAD DATA INFILE에 대한 로컬 임시 파일을 준비하십시오.
중대한
이러한 임시 파일은 자동으로 제거되지 않습니다. mysqlbinlog 또는 기타
MySQL 프로그램.
· --로그인 경로=name
.mylogin.cnf 로그인 파일의 명명된 로그인 경로에서 옵션을 읽습니다. "로그인 경로"
제한된 옵션 집합만 허용하는 옵션 그룹입니다. 주인, 사용자및
암호. 로그인 경로를 서버 호스트 및
서버 인증을 위한 자격 증명. 로그인 경로 파일을 생성하려면 다음을 사용하십시오.
전에, mysql_config_editor 공익 사업. 보다 mysql_config_editor(1). 이 옵션은
MySQL 5.6.6.
· --no-기본값
옵션 파일을 읽지 마십시오. 알 수 없는 옵션을 읽어서 프로그램 시작에 실패하는 경우
옵션 파일에서 --no-기본값 읽지 못하게 하는 데 사용할 수 있습니다.
예외는 .mylogin.cnf 파일이 있는 경우 모든 경우에 읽는다는 것입니다. 이것
다음과 같은 경우에도 명령줄에서보다 안전한 방법으로 암호를 지정할 수 있습니다.
--no-기본값 사용. (.mylogin.cnf는 mysql_config_editor 유용.
mysql_config_editor(1).)
· --오프셋=N, -o N
첫 번째 건너뛰기 N 로그의 항목.
· --비밀번호[=암호], -NS[암호]
서버에 연결할 때 사용할 암호입니다. 짧은 옵션 형식을 사용하는 경우
(-p), 당신 옵션과 암호 사이에 공백이 있어야 합니다. 생략하면
암호 다음 값 --비밀번호 or -p 명령줄의 옵션, mysqlbinlog
하나를 묻는 메시지가 표시됩니다.
명령줄에 암호를 지정하는 것은 안전하지 않은 것으로 간주되어야 합니다. 보다
6.1.2.1절. “암호 보안을 위한 최종 사용자 지침”. 옵션을 사용할 수 있습니다
명령줄에 암호를 제공하지 않도록 파일을 삭제합니다.
· --플러그인 디렉토리=통로
플러그인을 찾을 디렉토리입니다. 이 옵션을 지정해야 할 수도 있습니다
경우 --기본 인증 옵션은 인증 플러그인을 지정하는 데 사용되지만
mysqlbinlog 찾지 않습니다. 6.3.7절. “플러그 가능한 인증”을 참조하십시오.
이 옵션은 MySQL 5.6.2에 추가되었습니다.
· --포트=포트 번호, -P 포트 번호
원격 서버에 연결하는 데 사용할 TCP/IP 포트 번호입니다.
· --인쇄 기본값
프로그램 이름과 옵션 파일에서 가져온 모든 옵션을 인쇄합니다.
· --protocol={TCP|소켓|파이프|메모리}
서버에 연결하는 데 사용할 연결 프로토콜입니다. 때 유용합니다.
다른 연결 매개변수는 일반적으로 다른 프로토콜이 사용되도록 합니다.
당신이 원하는 하나. 허용 가능한 값에 대한 자세한 내용은 4.2.2절. “연결
MySQL 서버”.
· --노골적인
기본적으로, mysqlbinlog 바이너리 로그 파일을 읽고 이벤트를 텍스트 형식으로 씁니다. NS
--노골적인 옵션 mysqlbinlog 원래 바이너리 형식으로 작성합니다. 그 용도
그것을 요구 --원격 서버에서 읽기 또한 파일이 요청되기 때문에 사용됩니다.
서버에서. mysqlbinlog 서버에서 읽은 각 파일에 대해 하나의 출력 파일을 씁니다.
The --노골적인 옵션을 사용하여 서버의 바이너리 로그를 백업할 수 있습니다. 이랑
--중지-절대 옵션을 선택하면 백업이 "라이브"이므로 mysqlbinlog 에 연결된 상태를 유지합니다.
섬기는 사람. 기본적으로 출력 파일은 동일한 이름으로 현재 디렉토리에 기록됩니다.
이름을 원본 로그 파일로 사용합니다. 출력 파일 이름은 다음을 사용하여 수정할 수 있습니다.
--결과 파일 옵션. 자세한 내용은 "MYSQLBINLOG 사용" 섹션을 참조하십시오.
바이너리 로그 파일을 백업하려면”.
이 옵션은 MySQL 5.6.0에 추가되었습니다.
· --원격 마스터에서 읽기=유형
COM_BINLOG_DUMP 또는 COM_BINLOG_DUMP_GTID를 사용하여 MySQL 서버에서 바이너리 로그 읽기
옵션 값을 BINLOG-DUMP-NON-GTIDS 또는
각각 BINLOG-DUMP-GTIDS. 만약에 --read-from-remote-master=BINLOG-DUMP-GTIDS is
과 결합 --제외-gtids, 트랜잭션은 마스터에서 필터링할 수 있습니다.
불필요한 네트워크 트래픽을 방지합니다.
에 대한 설명도 참조하십시오. --원격 서버에서 읽기.
이 옵션은 MySQL 5.6.5에 추가되었습니다.
· --원격 서버에서 읽기, -R
로컬 로그 파일을 읽는 대신 MySQL 서버에서 바이너리 로그를 읽습니다. 어느
이 옵션도 제공되지 않는 한 연결 매개변수 옵션은 무시됩니다. 이것들
옵션은 --주인, --비밀번호, --포트, --규약, --소켓및 --사용자.
이 옵션을 사용하려면 원격 서버가 실행 중이어야 합니다. 바이너리 로그에서만 작동합니다.
릴레이 로그 파일이 아닌 원격 서버의 파일.
MySQL 5.6.5부터 이 옵션은 다음과 같습니다.
--read-from-remote-master=BINLOG-DUMP-NON-GTIDS.
· --결과 파일=name, -r name
없이 --노골적인 옵션인 경우 이 옵션은 mysqlbinlog 쓰기
텍스트 출력. 와 함께 --노골적인, mysqlbinlog 각 로그 파일에 대해 하나의 바이너리 출력 파일을 씁니다.
서버에서 전송하여 기본적으로 현재 디렉토리에 씁니다.
원본 로그 파일과 동일한 이름. 이 경우, --결과 파일 옵션 가치
출력 파일 이름을 수정하는 접두사로 처리됩니다.
· --보안 인증
이전(4.1 이전) 형식으로 서버에 암호를 보내지 마십시오. 이것은 연결을 방지합니다
최신 암호 형식을 사용하는 서버는 제외합니다. 이 옵션은 다음에 의해 활성화됩니다.
기본; 사용하다 --건너뛰기 보안 인증 비활성화합니다. 이 옵션은 MySQL 5.6.17에 추가되었습니다.
주의 사항
4.1 이전 해싱 방법을 사용하는 암호는 다음과 같은 암호보다 덜 안전합니다.
기본 암호 해싱 방법을 사용하고 피해야 합니다. 4.1 이전 암호
더 이상 사용되지 않으며 이에 대한 지원은 향후 MySQL 릴리스에서 제거됩니다. 을위한
계정 업그레이드 지침은 6.3.8.3절. “4.1 이전 버전에서 마이그레이션하기
비밀번호 해싱 및 mysql_old_password 플러그인”.
· --서버 아이디=id
주어진 서버 ID를 가진 서버에서 생성된 이벤트만 표시합니다.
· --서버 아이디 비트=N
첫 번째만 사용 N 서버를 식별하기 위한 server_id의 비트. 바이너리 로그라면
에 의해 작성되었다 mysqld를 server-id-bits가 32 미만으로 설정되고 사용자 데이터가 저장됨
가장 중요한 비트에서 실행 mysqlbinlog 과 --서버 아이디 비트 32으로 설정
이 데이터를 볼 수 있습니다.
이 옵션은 다음 버전에서만 지원됩니다. mysqlbinlog MySQL과 함께 제공
클러스터 배포 또는 MySQL Cluster 소스에서 빌드됩니다.
· --세트-문자세트=charset_name
SET 이름 추가 charset_name 문자 집합을 지정하는 출력에 대한 문
로그 파일을 처리하는 데 사용됩니다.
· --공유 메모리 기반 이름=name
Windows에서 공유 메모리를 사용하여 만든 연결에 사용할 공유 메모리 이름
로컬 서버. 기본값은 MYSQL입니다. 공유 메모리 이름은 대소문자를 구분합니다.
서버는 다음으로 시작해야 합니다. --공유 메모리 공유 메모리를 활성화하는 옵션
연결.
· --짧은 형식, -s
추가 정보 없이 로그에 포함된 명령문만 표시하거나
행 기반 이벤트. 이것은 테스트용이며 프로덕션에서 사용해서는 안 됩니다.
시스템.
· --skip-gtids[=(참|거짓)]
출력에 GTID를 표시하지 마십시오. 덤프 파일에 쓸 때 필요합니다.
다음 예와 같이 GTID가 포함된 하나 이상의 바이너리 로그에서
쉘> mysqlbinlog --건너뛰기-gtids binlog.000001 > /tmp/dump.sql
쉘> mysqlbinlog --건너뛰기-gtids binlog.000002 >> /tmp/dump.sql
쉘> MySQL은 -u 뿌리 -p -e "원천 /tmp/dump.sql"
일반적으로 프로덕션 환경에서는 이 옵션을 사용하지 않는 것이 좋습니다.
이 옵션은 MySQL 5.6.5에 추가되었습니다.
· --소켓=통로, -S 통로
localhost에 대한 연결의 경우 사용할 Unix 소켓 파일 또는 Windows의 경우
사용할 명명된 파이프입니다.
· --시작 날짜 시간=날짜 시간
타임스탬프가 같거나 그 이후인 첫 번째 이벤트에서 바이너리 로그 읽기 시작
보다 날짜 시간 논의. 그만큼 날짜 시간 값은 의 현지 시간대를 기준으로 합니다.
당신이 달리는 기계 mysqlbinlog. 값은 허용되는 형식이어야 합니다.
DATETIME 또는 TIMESTAMP 데이터 유형. 예를 들어:
쉘> mysqlbinlog --start-datetime="2005-12-25 11:25:56" binlog.000003
이 옵션은 특정 시점 복구에 유용합니다. 7.3절. “백업 및
회복 전략”.
· --시작 위치=N, -j N
위치가 같거나 더 큰 첫 번째 이벤트에서 바이너리 로그 읽기 시작
보다 N. 이 옵션은 명령줄에 명명된 첫 번째 로그 파일에 적용됩니다.
이 옵션은 특정 시점 복구에 유용합니다. 7.3절. “백업 및
회복 전략”.
· --정지 날짜 시간=날짜 시간
타임스탬프가 같거나 그 이후인 첫 번째 이벤트에서 바이너리 로그 읽기를 중지합니다.
보다 날짜 시간 논쟁. 이 옵션은 특정 시점 복구에 유용합니다. 참조
설명 --시작 날짜 시간 에 대한 정보 옵션 날짜 시간 값.
이 옵션은 특정 시점 복구에 유용합니다. 7.3절. “백업 및
회복 전략”.
· --중지-절대
이 옵션은 다음과 함께 사용됩니다. --원격 서버에서 읽기. 그것은 말한다 mysqlbinlog 남아
서버에 연결되었습니다. 그렇지 않으면 mysqlbinlog 마지막 로그 파일이 완료되면 종료
서버에서 전송됩니다. --중지-절대 의미하다 --마지막 로그까지, 그래서 첫 번째
전송할 로그 파일은 명령줄에서 이름을 지정해야 합니다.
--중지-절대 와 함께 일반적으로 사용됩니다 --노골적인 라이브 바이너리 로그 백업을 만들 뿐만 아니라
없이 사용할 수 있습니다 --노골적인 로그 이벤트의 지속적인 텍스트 표시를 유지하기 위해
서버가 생성합니다.
이 옵션은 MySQL 5.6.0에 추가되었습니다.
· --stop-never-slave-server-id=id
와 --중지-절대, mysqlbinlog 서버에 연결할 때 서버 ID 65535를 보고합니다.
서버. --stop-never-slave-server-id 보고할 서버 ID를 명시적으로 지정합니다. 그것
슬레이브 서버 또는 다른 서버의 ID와 충돌을 피하기 위해 사용할 수 있습니다. mysqlbinlog
프로세스. "MYSQLBINLOG 서버 ID 지정" 섹션을 참조하십시오.
이 옵션은 MySQL 5.6.0에 추가되었습니다.
· --정지 위치=N
위치가 같거나 더 큰 첫 번째 이벤트에서 바이너리 로그 읽기를 중지합니다.
보다 N. 이 옵션은 명령줄에 명명된 마지막 로그 파일에 적용됩니다.
이 옵션은 특정 시점 복구에 유용합니다. 7.3절. “백업 및
회복 전략”.
· --마지막 로그까지, -t
MySQL 서버에서 요청한 바이너리 로그의 끝에서 멈추지 말고,
마지막 바이너리 로그가 끝날 때까지 인쇄를 계속합니다. 출력을 보내면
동일한 MySQL 서버에서 무한 루프가 발생할 수 있습니다. 이 옵션에는 다음이 필요합니다.
--원격 서버에서 읽기.
· --사용자=_ 이름, -u _ 이름
원격 서버에 연결할 때 사용할 MySQL 사용자 이름입니다.
· --말 수가 많은, -v
행 이벤트를 재구성하고 주석이 달린 SQL 문으로 표시합니다. 이 옵션이
두 번 주어지면 출력에는 열 데이터 유형을 나타내는 주석이 포함되고 일부는
메타 데이터.
의 효과를 보여주는 예를 들면 --base64-출력 그리고 --말 수가 많은 행 이벤트
출력은 "MYSQLBINLOG ROW EVENT DISPLAY" 섹션을 참조하십시오.
· --verify-binlog-체크섬, -c
바이너리 로그 파일의 체크섬을 확인합니다. 이 옵션은 MySQL 5.6.1에 추가되었습니다.
· --번역, -V
버전 정보를 표시하고 종료합니다.
MySQL 5.6.11 이전에는 mysqlbinlog 표시된 버전 번호는 3.3입니다. MySQL 5.6.11에서
나중에 이것은 3.4입니다. (버그 #15894381, 버그 #67643)
다음을 사용하여 다음 변수를 설정할 수도 있습니다. --var_name=가치 통사론:
· open_files_limit
예약할 열린 파일 설명자의 수를 지정하십시오.
의 출력을 파이프할 수 있습니다. mysqlbinlog 로 MySQL은 이벤트를 실행하는 클라이언트
바이너리 로그에 포함되어 있습니다. 이 기술은 다음과 같은 경우 충돌에서 복구하는 데 사용됩니다.
이전 백업(7.5절. “바이너리를 사용한 특정 시점(증분) 복구 참조
통나무"). 예를 들어:
쉘> mysqlbinlog binlog.000001 | MySQL은 -u 뿌리 -p
또는 :
쉘> mysqlbinlog binlog.[0-9]* | MySQL은 -u 뿌리 -p
에 의해 생성된 진술의 경우 mysqlbinlog BLOB 값을 포함할 수 있으며 이로 인해
문제 MySQL은 처리합니다. 이 경우 호출 MySQL은 와 더불어 --바이너리 모드
옵션을 선택합니다.
의 출력을 리디렉션할 수도 있습니다. mysqlbinlog 필요한 경우 대신 텍스트 파일로
명령문 로그를 먼저 수정하십시오(예: 원하지 않는 명령문을 제거하려면
어떤 이유로 실행). 파일을 편집한 후 포함된 명령문을 실행합니다.
에 대한 입력으로 사용하여 MySQL은 프로그램 :
쉘> mysqlbinlog binlog.000001 > 임시 파일
쉘> ... 편집 임시 파일 ...
쉘> MySQL은 -u 뿌리 -p < 임시 파일
인셀덤 공식 판매점인 mysqlbinlog 와 함께 호출됩니다. --시작 위치 옵션을 선택하면 해당 항목만 표시됩니다.
바이너리 로그의 오프셋이 주어진 위치보다 크거나 같은 이벤트(
주어진 위치는 한 이벤트의 시작과 일치해야 합니다). 중지 및 시작 옵션도 있습니다.
지정된 날짜와 시간의 이벤트를 볼 때. 이를 통해 다음을 수행할 수 있습니다.
를 사용한 특정 시점 복구 --중지 날짜 시간 옵션(예를 들어,
"내 데이터베이스를 오늘 오전 10시 30분으로 롤포워드").
MySQL 서버에서 실행할 바이너리 로그가 두 개 이상인 경우 안전한 방법은
서버에 대한 단일 연결을 사용하여 모두 처리합니다. 다음은 다음과 같은 예입니다.
무엇인지 보여줍니다 위험한:
쉘> mysqlbinlog binlog.000001 | MySQL은 -u 뿌리 -p # 위험!!
쉘> mysqlbinlog binlog.000002 | MySQL은 -u 뿌리 -p # 위험!!
서버에 대한 다중 연결을 사용하여 이 방법으로 바이너리 로그를 처리하면 문제가 발생합니다.
첫 번째 로그 파일에 CREATE TEMPORARY TABLE 문과 두 번째 로그가 포함된 경우
임시 테이블을 사용하는 명령문이 포함되어 있습니다. 처음 MySQL은 방법
종료되면 서버는 임시 테이블을 삭제합니다. 두 번째 때 MySQL은 프로세스 시도
테이블을 사용하기 위해 서버는 "알 수 없는 테이블"을 보고합니다.
이와 같은 문제를 방지하려면 다음을 사용하십시오. 단일 MySQL은 모든 내용을 실행하는 프로세스
처리하려는 바이너리 로그. 한 가지 방법은 다음과 같습니다.
쉘> mysqlbinlog binlog.000001 binlog.000002 | MySQL은 -u 뿌리 -p
또 다른 접근 방식은 모든 로그를 단일 파일에 작성한 다음 파일을 처리하는 것입니다.
쉘> mysqlbinlog binlog.000001 > /tmp/statements.sql
쉘> mysqlbinlog binlog.000002 >> /tmp/statements.sql
쉘> MySQL은 -u 뿌리 -p -e "원천 /tmp/statements.sql"
mysqlbinlog 없이 LOAD DATA INFILE 작업을 재현하는 출력을 생성할 수 있습니다.
원본 데이터 파일. mysqlbinlog 데이터를 임시 파일에 복사하고 LOAD를 씁니다.
파일을 참조하는 DATA LOCAL INFILE 문. 디렉토리의 기본 위치
이러한 파일이 기록되는 위치는 시스템에 따라 다릅니다. 디렉토리를 명시적으로 지정하려면 다음을 사용하십시오.
전에, --로컬 로드 옵션을 선택합니다.
때문에 mysqlbinlog LOAD DATA INFILE 문을 LOAD DATA LOCAL INFILE로 변환합니다.
명령문(즉, LOCAL을 추가함)에 사용하는 클라이언트와 서버 모두
LOCAL 기능이 활성화된 상태에서 명령문을 구성해야 합니다. 보다
6.1.6절. “LOAD DATA LOCAL의 보안 문제”.
경고
LOAD DATA LOCAL 문에 대해 생성된 임시 파일은 다음과 같습니다. 지원 자동적으로
실제로 해당 명령문을 실행할 때까지 필요하기 때문에 삭제됩니다. 너
명령문 로그가 더 이상 필요하지 않으면 임시 파일을 직접 삭제해야 합니다.
파일은 임시 파일 디렉토리에서 찾을 수 있으며 다음과 같은 이름을 갖습니다.
원본_파일_이름-#-#.
MySQLBINLOG HEX 버리다 FORMAT
The --hexdump 옵션 원인 mysqlbinlog 바이너리 로그 내용의 XNUMX진 덤프를 생성하려면:
쉘> mysqlbinlog --hexdump 마스터 빈.000001
XNUMX진수 출력은 #으로 시작하는 주석 행으로 구성되므로 출력은 다음과 같을 수 있습니다.
이전 명령에 대해 다음을 수행합니다.
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
# 4시에
#051024 17:24:13 서버 아이디 1 end_log_pos 98
# 위치 타임스탬프 유형 마스터 ID 크기 마스터 위치 플래그
# 00000004 9d fc 5c 43 0f 01 00 00 00 5e 00 00 00 62 00 00 00 00 00
# 00000017 04 00 35 2e 30 2e 31 35 2d 64 65 62 75 67 2d 6c |..5.0.15.debug.l|
# 00000027 6f 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |오..............|
# 00000037 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |............|
# 00000047 00 00 00 00 9d fc 5c 43 13 38 0d 00 08 00 12 00 |.......C.8.......|
# 00000057 04 04 04 04 12 00 00 4b 00 04 1a |.......케이...|
# 시작: binlog v 4, 서버 v 5.0.15-debug-log 생성 051024 17:24:13
# 시작할 때
롤백;
XNUMX진 덤프 출력에는 현재 다음 목록의 요소가 포함되어 있습니다. 이 형식은
변경될 수 있습니다. (바이너리 로그 형식에 대한 자세한 내용은 MySQL의 내부: The
이진 로그[1].
· 위치: 로그 파일 내의 바이트 위치.
· 타임스탬프: 이벤트 타임스탬프입니다. 표시된 예에서 '9d fc 5c 43'은
'051024 17:24:13'을 XNUMX진수로 표시합니다.
· 유형: 이벤트 유형 코드입니다. 표시된 예에서 '0f'는
FORMAT_DESCRIPTION_EVENT. 다음 표에는 가능한 유형 코드가 나열되어 있습니다.
┌─────┬───────────────────────────┬────────────────── ───────────────────────┐
│타입 │ 성함 │ 의미 │
├─────┼────────────────────────────┼───────────────── ────────────────────────┤
│00 │ UNKNOWN_EVENT │ 이 이벤트는 절대 │
│ │ │ 로그에 있어야 합니다. │
├─────┼────────────────────────────┼───────────────── ────────────────────────┤
│01 │ START_EVENT_V3 │ 시작을 나타냅니다 │
│ │ │ 님이 작성한 로그 파일
│ │ │ MySQL 4 이하. │
├─────┼────────────────────────────┼───────────────── ────────────────────────┤
│02 │ QUERY_EVENT │ 가장 일반적인 유형의 │
│ │ │ 이벤트. 여기에는 │이 포함됩니다.
│ │ │ │에 실행된 문
│ │ │ │
│ │ │ 마스터. │
├─────┼────────────────────────────┼───────────────── ────────────────────────┤
│03 │ STOP_EVENT │ 마스터에 │가 있음을 나타냅니다.
│ │ │ 멈췄습니다. │
├─────┼────────────────────────────┼───────────────── ────────────────────────┤
│04 │ ROTATE_EVENT │ 마스터 │ 때 작성
│ │ │ 새 로그 파일로 전환합니다. │
├─────┼────────────────────────────┼───────────────── ────────────────────────┤
│05 │ INTVAR_EVENT │ AUTO_INCREMENT에 사용 │
│ │ │ 값 또는 │일 때
│ │ │ LAST_INSERT_ID() │
│ │ │ 기능 │
│ │ │는 문장에서 사용됩니다. │
├─────┼────────────────────────────┼───────────────── ────────────────────────┤
│06 │ LOAD_EVENT │ LOAD DATA에 사용 │
│ │ │ MySQL의 INFILE │
│ │ │ 3.23. │
├─────┼────────────────────────────┼───────────────── ────────────────────────┤
│07 │ SLAVE_EVENT │ 향후 사용을 위해 예약되어 있습니다. │
├─────┼────────────────────────────┼───────────────── ────────────────────────┤
│08 │ CREATE_FILE_EVENT │ LOAD DATA에 사용 │
│ │ │ 인파일 │
│ │ │ 문. │를 나타냅니다.
│ │ │ │ 시작
│ │ │ 그러한 진술의 실행. │
│ │ │ 임시 │
│ │ │ 파일 생성 │
│ │ │ 노예에서. MySQL 4에서만 사용됩니다. │
├─────┼────────────────────────────┼───────────────── ────────────────────────┤
│09 │ APPEND_BLOCK_EVENT │ │에서 사용할 데이터를 포함합니다.
│ │ │ 데이터 로드 │
│ │ │ 인파일 │
│ │ │ 문. 데이터는 │에 저장됩니다.
│ │ │ 임시 │
│ │ │ 슬레이브의 파일. │
├─────┼────────────────────────────┼───────────────── ────────────────────────┤
│0a │ EXEC_LOAD_EVENT │ LOAD DATA에 사용 │
│ │ │ 인파일 │
│ │ │ 문. │의 내용
│ │ │ 임시 파일 │
│ │ │은 슬레이브의 테이블에 저장됩니다. │
│ │ │ MySQL 4에서 사용 │
│ │ │만. │
├─────┼────────────────────────────┼───────────────── ────────────────────────┤
│0b │ DELETE_FILE_EVENT │ LOAD DATA 롤백 │
│ │ │ 인파일 │
│ │ │ 문. 임시 파일 │
│ │ │는 │이어야 합니다.
│ │ │ 슬레이브에서 삭제되었습니다. │
├─────┼────────────────────────────┼───────────────── ────────────────────────┤
│0c │ NEW_LOAD_EVENT │ LOAD DATA에 사용 │
│ │ │ MySQL의 INFILE │
│ │ │ 4 이하. │
├─────┼────────────────────────────┼───────────────── ────────────────────────┤
│0d │ RAND_EVENT │ │에 대한 정보를 보내기 위해 사용
│ │ │ │인 경우 임의의 값
│ │ │ RAND() 함수 │
│ │ │는 │
│ │ │ │에서 사용
│ │ │ 문. │
├─────┼────────────────────────────┼───────────────── ────────────────────────┤
│0e │ USER_VAR_EVENT │ 사용자 변수를 복제하는 데 사용됩니다. │
├─────┼────────────────────────────┼───────────────── ────────────────────────┤
│0f │ FORMAT_DESCRIPTION_EVENT │ 로그의 시작을 나타냅니다 │
│ │ │ MySQL 5 이상으로 작성된 파일. │
├─────┼────────────────────────────┼───────────────── ────────────────────────┤
│10 │ XID_EVENT │ XA의 커밋을 나타내는 이벤트 │
│ │ │ 거래. │
├─────┼────────────────────────────┼───────────────── ────────────────────────┤
│11 │ BEGIN_LOAD_QUERY_EVENT │ LOAD DATA에 사용 │
│ │ │ 인파일 │
│ │ │ MySQL 5 및 이후 버전의 문. │
├─────┼────────────────────────────┼───────────────── ────────────────────────┤
│12 │ EXECUTE_LOAD_QUERY_EVENT │ LOAD DATA에 사용 │
│ │ │ 인파일 │
│ │ │ MySQL 5 및 이후 버전의 문. │
├─────┼────────────────────────────┼───────────────── ────────────────────────┤
│13 │ TABLE_MAP_EVENT │ 테이블 정보 │
│ │ │ 정의. MySQL 5.1.5 및 │에서 사용
│ │ │ 나중에. │
├─────┼────────────────────────────┼───────────────── ────────────────────────┤
│14 │ PRE_GA_WRITE_ROWS_EVENT │ 단일 테이블에 대한 행 데이터 │
│ │ │을 만들어야 합니다. MySQL에서 사용 │
│ │ │ 5.1.5 │
│ │ │ ~ 5.1.17. │
├─────┼────────────────────────────┼───────────────── ────────────────────────┤
│15 │ PRE_GA_UPDATE_ROWS_EVENT │ 단일 테이블에 대한 행 데이터 │
│ │ │ 업데이트가 필요합니다. MySQL에서 사용 │
│ │ │ 5.1.5 ~ 5.1.17. │
├─────┼────────────────────────────┼───────────────── ────────────────────────┤
│16 │ PRE_GA_DELETE_ROWS_EVENT │ 단일 테이블에 대한 행 데이터 │
│ │ │ 삭제해야 합니다. MySQL에서 사용 │
│ │ │ 5.1.5 │
│ │ │ ~ 5.1.17. │
├─────┼────────────────────────────┼───────────────── ────────────────────────┤
│17 │ WRITE_ROWS_EVENT │ 단일 테이블에 대한 행 데이터 │
│ │ │을 만들어야 합니다. MySQL에서 사용 │
│ │ │ 5.1.18 │
│ │ │ 이후. │
├─────┼────────────────────────────┼───────────────── ────────────────────────┤
│18 │ UPDATE_ROWS_EVENT │ 단일 테이블에 대한 행 데이터 │
│ │ │ 업데이트가 필요합니다. MySQL에서 사용 │
│ │ │ 5.1.18 및 │
│ │ │ 나중에. │
├─────┼────────────────────────────┼───────────────── ────────────────────────┤
│19 │ DELETE_ROWS_EVENT │ 단일 테이블에 대한 행 데이터 │
│ │ │ 삭제해야 합니다. MySQL에서 사용 │
│ │ │ 5.1.18 │
│ │ │ 이후. │
├─────┼────────────────────────────┼───────────────── ────────────────────────┤
│1a │ INCIDENT_EVENT │ 평범한 것 │
│ │ │ 일어났습니다. MySQL 5.1.18에 추가되었습니다. │
└─────┴───────────────────────────┴───────────────── ───────────────────────┘
· 마스터 ID: 이벤트를 생성한 마스터의 서버 ID입니다.
· 크기: 이벤트의 크기(바이트)입니다.
· 마스터 위치: 원본 마스터 로그 파일에서 다음 이벤트의 위치.
· 깃발: 16개 깃발. 현재 다음 플래그가 사용됩니다. 나머지는 예약
향후 사용.
┌─────┬───────────────────────────────┬────────────── ────────────────────────────────────┐
│플래그 │ 성함 │ 의미 │
├─────┼──────────────────────────────┼────────────── ─────────────────────────────────────┤
│01 │ LOG_EVENT_BINLOG_IN_USE_F │ 올바른 로그 파일 │
│ │ │ 폐쇄. (│에서만 사용
│ │ │ FORMAT_DESCRIPTION_EVENT.) │
│ │ │ 만약 │
│ │ │ 이것 │
│ │ │ 플래그가 설정됩니다(│
│ │ │ 플래그는 예를 들어 │
│ │ │ '01 │
│ │ │ 00')에서 │
│ │ │ FORMAT_DESCRIPTION_EVENT, │
│ │ │ 로그 │
│ │ │ 파일 │
│ │ │ 제대로 되지 않았다 │
│ │ │ 폐쇄. 아마도 │
│ │ │ 이것 │
│ │ │ 주인님 때문에 │
│ │ │ 충돌(예: 만기 │
│ │ │ ~ │
│ │ │ 정전). │
├─────┼──────────────────────────────┼────────────── ─────────────────────────────────────┤
│02 │ │ 향후 사용을 위해 예약되어 있습니다. │
├─────┼──────────────────────────────┼────────────── ─────────────────────────────────────┤
│04 │ LOG_EVENT_THREAD_SPECIFIC_F │ 이벤트가 │에 의존하는 경우 설정
│ │ │ 실행된 연결(│
│ │ │ 예, '04 00'), │의 경우
│ │ │ 예, │
│ │ │ 이벤트가 │를 사용하는 경우
│ │ │ 임시 테이블. │
├─────┼──────────────────────────────┼────────────── ─────────────────────────────────────┤
│08 │ LOG_EVENT_SUPPRESS_USE_F │ 이벤트가 │일 때 일부 상황에서 설정
│ │ │ 기본값에 의존하지 않음 │
│ │ │ 데이터베이스. │
└─────┴──────────────────────────────┴────────────── ─────────────────────────────────────┘
MySQLBINLOG 열 이달의 이벤트 DISPLAY
다음 예는 방법을 보여줍니다 mysqlbinlog 데이터를 지정하는 행 이벤트를 표시합니다.
수정. WRITE_ROWS_EVENT, UPDATE_ROWS_EVENT,
및 DELETE_ROWS_EVENT 유형 코드. NS --base64-출력=디코드-행 그리고 --말 수가 많은 옵션
행 이벤트 출력에 영향을 주는 데 사용할 수 있습니다.
서버가 행 기반 바이너리 로깅을 사용 중이고 다음을 실행한다고 가정합니다.
다음 명령문 시퀀스:
테이블 만들기
(
아이디 INT NOT NULL,
name 바르차르(20) NULL이 아님,
날짜 날짜 NULL
) 엔진 = InnoDB;
거래 시작;
INSERT INTO t VALUES(1, '사과', NULL);
업데이트 t SET 이름 = '배', 날짜 = '2009-01-01' WHERE id = 1;
t WHERE에서 삭제 ID = 1;
범하다;
기본적으로, mysqlbinlog BINLOG를 사용하여 base-64 문자열로 인코딩된 행 이벤트를 표시합니다.
진술. 불필요한 줄을 생략하면 행 이벤트에 대한 출력이 생성됩니다.
이전 명령문 시퀀스는 다음과 같습니다.
쉘> mysqlbinlog 로그 파일
...
# 218시에
#080828 15:03:08 서버 ID 1 end_log_pos 258 Write_rows: 테이블 ID 17 플래그: STMT_END_F
빈로그 '
fAS3SBMBAAAALAAAA아니요AAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBcBAAAAKAAAAAIBAAAQABEAAAAAAAEAA//8AQAAAAVhcHBsZQ==
'/*!*/;
...
# 302시에
#080828 15:03:08 서버 ID 1 end_log_pos 356 Update_rows: 테이블 ID 17 플래그: STMT_END_F
빈로그 '
fAS3SBMBAAAALAAAAC4BAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBgBAAAANGAAAGQBAAAQABEAAAAAAAEAA////AEAAAAFYXBwbGX4AQAAAARwZWFyIbIP
'/*!*/;
...
# 400시에
#080828 15:03:08 서버 ID 1 end_log_pos 442 Delete_rows: 테이블 ID 17 플래그: STMT_END_F
빈로그 '
fAS3SMBBAAAALAAAAJABAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBkBAAAAKgAAALoBAAAQABEAAAAAAAEAA//4AQAAAARwZWFyIbIP
'/*!*/;
행 이벤트를 "의사 SQL" 문 형식의 주석으로 보려면 다음을 실행합니다. mysqlbinlog
와 더불어 --말 수가 많은 or -v 옵션. 출력에는 ###으로 시작하는 줄이 포함됩니다.
쉘> mysqlbinlog -v 로그 파일
...
# 218시에
#080828 15:03:08 서버 ID 1 end_log_pos 258 Write_rows: 테이블 ID 17 플래그: STMT_END_F
빈로그 '
fAS3SBMBAAAALAAAA아니요AAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBcBAAAAKAAAAAIBAAAQABEAAAAAAAEAA//8AQAAAAVhcHBsZQ==
'/*!*/;
### test.t에 삽입
### 세트
### @1=1
### @2='사과'
### @3=NULL
...
# 302시에
#080828 15:03:08 서버 ID 1 end_log_pos 356 Update_rows: 테이블 ID 17 플래그: STMT_END_F
빈로그 '
fAS3SBMBAAAALAAAAC4BAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBgBAAAANGAAAGQBAAAQABEAAAAAAAEAA////AEAAAAFYXBwbGX4AQAAAARwZWFyIbIP
'/*!*/;
### 업데이트 test.t
### 어디
### @1=1
### @2='사과'
### @3=NULL
### 세트
### @1=1
### @2='배'
### @3='2009:01:01'
...
# 400시에
#080828 15:03:08 서버 ID 1 end_log_pos 442 Delete_rows: 테이블 ID 17 플래그: STMT_END_F
빈로그 '
fAS3SMBBAAAALAAAAJABAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBkBAAAAKgAAALoBAAAQABEAAAAAAAEAA//4AQAAAARwZWFyIbIP
'/*!*/;
### test.t에서 삭제
### 어디
### @1=1
### @2='배'
### @3='2009:01:01'
지정 --말 수가 많은 or -v 데이터 유형과 각각에 대한 일부 메타데이터도 표시하려면 두 번
열. 출력에는 각 열 변경 후 추가 주석이 포함됩니다.
쉘> mysqlbinlog -vv 로그 파일
...
# 218시에
#080828 15:03:08 서버 ID 1 end_log_pos 258 Write_rows: 테이블 ID 17 플래그: STMT_END_F
빈로그 '
fAS3SBMBAAAALAAAA아니요AAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBcBAAAAKAAAAAIBAAAQABEAAAAAAAEAA//8AQAAAAVhcHBsZQ==
'/*!*/;
### test.t에 삽입
### 세트
### @1=1 /* INT 메타=0 nullable=0 is_null=0 */
### @2='사과' /* 바스트링(20) 메타=20 nullable=0 is_null=0 */
### @3=NULL /* 바스트링(20) 메타=0 nullable=1 is_null=1 */
...
# 302시에
#080828 15:03:08 서버 ID 1 end_log_pos 356 Update_rows: 테이블 ID 17 플래그: STMT_END_F
빈로그 '
fAS3SBMBAAAALAAAAC4BAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBgBAAAANGAAAGQBAAAQABEAAAAAAAEAA////AEAAAAFYXBwbGX4AQAAAARwZWFyIbIP
'/*!*/;
### 업데이트 test.t
### 어디
### @1=1 /* INT 메타=0 nullable=0 is_null=0 */
### @2='사과' /* 바스트링(20) 메타=20 nullable=0 is_null=0 */
### @3=NULL /* 바스트링(20) 메타=0 nullable=1 is_null=1 */
### 세트
### @1=1 /* INT 메타=0 nullable=0 is_null=0 */
### @2='배' /* 바스트링(20) 메타=20 nullable=0 is_null=0 */
### @3='2009:01:01' /* 날짜 메타=0 nullable=1 is_null=0 */
...
# 400시에
#080828 15:03:08 서버 ID 1 end_log_pos 442 Delete_rows: 테이블 ID 17 플래그: STMT_END_F
빈로그 '
fAS3SMBBAAAALAAAAJABAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBkBAAAAKgAAALoBAAAQABEAAAAAAAEAA//4AQAAAARwZWFyIbIP
'/*!*/;
### test.t에서 삭제
### 어디
### @1=1 /* INT 메타=0 nullable=0 is_null=0 */
### @2='배' /* 바스트링(20) 메타=20 nullable=0 is_null=0 */
### @3='2009:01:01' /* 날짜 메타=0 nullable=1 is_null=0 */
당신을 말할 수있다 mysqlbinlog 다음을 사용하여 행 이벤트에 대한 BINLOG 문을 억제하려면
--base64-출력=디코드-행 옵션. 이것은 유사하다 --base64-출력=절대 하지만 하지 않는다
행 이벤트가 발견되면 오류와 함께 종료됩니다. 의 조합 --base64-출력=디코드-행
그리고 --말 수가 많은 행 이벤트를 SQL 문으로만 볼 수 있는 편리한 방법을 제공합니다.
쉘> mysqlbinlog -v --base64-출력=디코드-행 로그 파일
...
# 218시에
#080828 15:03:08 서버 ID 1 end_log_pos 258 Write_rows: 테이블 ID 17 플래그: STMT_END_F
### test.t에 삽입
### 세트
### @1=1
### @2='사과'
### @3=NULL
...
# 302시에
#080828 15:03:08 서버 ID 1 end_log_pos 356 Update_rows: 테이블 ID 17 플래그: STMT_END_F
### 업데이트 test.t
### 어디
### @1=1
### @2='사과'
### @3=NULL
### 세트
### @1=1
### @2='배'
### @3='2009:01:01'
...
# 400시에
#080828 15:03:08 서버 ID 1 end_log_pos 442 Delete_rows: 테이블 ID 17 플래그: STMT_END_F
### test.t에서 삭제
### 어디
### @1=1
### @2='배'
### @3='2009:01:01'
주의 사항
다시 실행하려는 경우 BINLOG 문을 억제해서는 안 됩니다. mysqlbinlog
출력.
에 의해 생성된 SQL 문 --말 수가 많은 행 이벤트의 경우
해당 BINLOG 문. 그러나 그들은 원본과 정확히 일치하지 않습니다.
이벤트를 생성한 SQL 문. 다음 제한 사항이 적용됩니다.
· 원래 열 이름이 손실되고 @로 대체됩니다.N어디로 N 열 번호입니다.
· 문자열에 영향을 미치는 바이너리 로그에서 문자 집합 정보를 사용할 수 없습니다.
열 표시:
· 해당 바이너리 문자열과 비 바이너리 문자열의 구분이 없습니다.
유형(BINARY 및 CHAR, VARBINARY 및 VARCHAR, BLOB 및 TEXT). 출력은 다음을 사용합니다.
고정 길이 문자열의 경우 STRING, 가변 길이의 경우 VARSTRING 데이터 유형
문자열.
· 멀티바이트 문자 집합의 경우 문자당 최대 바이트 수는
바이너리 로그에 있으므로 문자열 유형의 길이는 바이트 단위로 표시됩니다.
캐릭터보다는. 예를 들어, STRING(4) 데이터 유형으로 사용됩니다.
다음 열 유형 중 하나의 값:
숯(4) CHARACTER SET 라틴1
숯(2) 캐릭터 세트 ucs2
· UPDATE_ROWS_EVENT 유형의 이벤트에 대한 저장 형식으로 인해 UPDATE 문
SET 절 앞에 WHERE 절과 함께 표시됩니다.
행 이벤트의 적절한 해석에는 형식 설명의 정보가 필요합니다.
바이너리 로그 시작 부분의 이벤트. 때문에 mysqlbinlog 미리 모른다
로그의 나머지 부분이 행 이벤트를 포함하는지 여부, 기본적으로 형식을 표시합니다.
출력의 초기 부분에서 BINLOG 문을 사용하는 설명 이벤트.
바이너리 로그가 BINLOG 문을 필요로 하는 이벤트를 포함하지 않는 것으로 알려진 경우(
행 이벤트 없음), --base64-출력=절대 이 헤더를 방지하기 위해 옵션을 사용할 수 있습니다.
작성되는 것부터.
사용 MySQLBINLOG ~까지 BACK UP BINARY LOG 파일
기본적으로, mysqlbinlog 바이너리 로그 파일을 읽고 그 내용을 텍스트 형식으로 표시합니다.
이를 통해 파일 내의 이벤트를 보다 쉽게 검사하고 다시 실행할 수 있습니다.
(예를 들어, 출력을 입력으로 사용하여 MySQL은). mysqlbinlog 로그 파일을 읽을 수 있습니다
로컬 파일 시스템에서 직접 또는 --원격 서버에서 읽기 옵션, 할 수 있습니다
서버에 연결하고 해당 서버에서 바이너리 로그 내용을 요청합니다. mysqlbinlog 쓰기
표준 출력으로의 텍스트 출력 또는 값으로 명명된 파일
--결과 파일=파일 이름 해당 옵션이 제공된 경우 옵션입니다.
MySQL 5.6부터, mysqlbinlog 바이너리 로그 파일을 읽고 다음을 포함하는 새 파일을 작성할 수 있습니다.
동일한 내용, 즉 텍스트 형식이 아닌 이진 형식입니다. 이 기능은
바이너리 로그를 원래 형식으로 쉽게 백업할 수 있습니다. mysqlbinlog 정적을 만들 수 있습니다
백업, 로그 파일 세트 백업 및 마지막 파일이 끝날 때 중지
도달했다. 또한 서버에 연결된 상태를 유지하면서 연속("라이브") 백업을 수행할 수 있습니다.
마지막 로그 파일의 끝에 도달하고 새 이벤트를 있는 그대로 계속 복사할 때
생성. 연속 백업 작업에서, mysqlbinlog 연결이 끝날 때까지 실행됩니다(
예: 서버가 종료될 때) 또는 mysqlbinlog 강제 종료됩니다. 연결 시
끝, mysqlbinlog 슬레이브 복제와 달리 연결을 기다렸다가 재시도하지 않습니다.
섬기는 사람. 서버가 다시 시작된 후 라이브 백업을 계속하려면 다음 작업도 수행해야 합니다.
다시 시작 mysqlbinlog.
바이너리 로그 백업에는 다음을 호출해야 합니다. mysqlbinlog 최소 두 가지 옵션:
· --원격 서버에서 읽기 (또는 -R) 옵션은 mysqlbinlog 서버에 연결하려면
바이너리 로그를 요청합니다. (슬레이브 복제 서버가 연결하는 것과 유사합니다.
마스터 서버로 이동합니다.)
· --노골적인 옵션 mysqlbinlog 텍스트 출력이 아닌 원시(이진) 출력을 작성합니다.
와 함께 --원격 서버에서 읽기, 다른 옵션을 지정하는 것이 일반적입니다. --주인
서버가 실행 중인 위치를 나타내며 연결 옵션을 지정해야 할 수도 있습니다.
등 --사용자 그리고 --비밀번호.
몇 가지 다른 옵션은 다음과 함께 유용합니다. --노골적인:
· --중지-절대: 마지막 로그 파일의 끝에 도달한 후 서버에 연결 유지
새로운 이벤트를 계속 읽으십시오.
· --stop-never-slave-server-id=id: 해당 서버 ID mysqlbinlog 서버에 보고
언제 --중지-절대 사용. 기본값은 65535입니다. 충돌을 피하기 위해 사용할 수 있습니다.
슬레이브 서버 또는 다른 서버의 ID로 mysqlbinlog 프로세스. 라는 섹션을 참조하십시오.
"MYSQLBINLOG 서버 ID 지정".
· --결과 파일: 나중에 설명하는 출력 파일 이름의 접두사.
다음을 사용하여 서버의 바이너리 로그 파일을 백업하려면 mysqlbinlog, 다음과 같은 파일 이름을 지정해야 합니다.
실제로 서버에 존재합니다. 이름을 모르는 경우 서버에 연결하여
SHOW BINARY LOGS 문을 사용하여 현재 이름을 확인합니다. 진술이
다음 출력을 생성합니다.
MySQL> 표시 BINARY 로그;
+---------------+----------+
| 로그 이름 | 파일 크기 |
+---------------+----------+
| binlog.000130 | 27459 |
| binlog.000131 | 13719 |
| binlog.000132 | 43268 |
+---------------+----------+
해당 정보로 다음을 사용할 수 있습니다. mysqlbinlog 바이너리 로그를 현재로 백업하기 위해
디렉토리는 다음과 같습니다(각 명령을 한 줄에 입력).
· binlog.000130에서 binlog.000132까지의 정적 백업을 만들려면 다음 중 하나를 사용하십시오.
명령 :
mysqlbinlog --원격 서버에서 읽기 --호스트=호스트 이름 --노골적인
binlog.000130 binlog.000131 binlog.000132
mysqlbinlog --원격 서버에서 읽기 --호스트=호스트 이름 --노골적인
--마지막 로그까지 binlog.000130
첫 번째 명령은 모든 파일 이름을 명시적으로 지정합니다. 두 번째 이름만
첫 번째 파일 및 사용 --마지막 로그까지 마지막까지 읽으십시오. 이들의 차이점
명령은 서버가 전에 binlog.000133을 여는 경우입니다. mysqlbinlog
binlog.000132의 끝에 도달하면 첫 번째 명령은 읽지 않지만 두 번째 명령은
명령합니다.
· 라이브 백업을 만들려면 mysqlbinlog binlog.000130으로 시작하여 기존 복사
로그 파일을 생성한 다음 서버가 생성할 때 새 이벤트를 복사하기 위해 연결된 상태를 유지합니다.
mysqlbinlog --원격 서버에서 읽기 --호스트=호스트 이름 --노골적인
--stop-never binlog.000130
와 --중지-절대, 지정할 필요는 없습니다 --마지막 로그까지 끝까지 읽기
해당 옵션이 내포되어 있기 때문입니다.
출력 파일 Naming.PP 없이 --노골적인, mysqlbinlog 텍스트 출력을 생성하고
--결과 파일 옵션이 주어지면 모든 출력이 있는 단일 파일의 이름을 지정합니다.
쓰여지 다. 와 함께 --노골적인, mysqlbinlog 각 로그 파일에 대해 하나의 바이너리 출력 파일을 씁니다.
서버에서 전송됩니다. 기본적으로, mysqlbinlog 현재 파일을 씁니다.
원본 로그 파일과 동일한 이름을 가진 디렉토리. 출력 파일 이름을 수정하려면
사용 --결과 파일 옵션. 와 함께 --노골적인Walk Through California 프로그램, --결과 파일 옵션 값은
출력 파일 이름을 수정하는 접두사로 취급됩니다.
서버에 현재 binlog.000999 이상의 바이너리 로그 파일이 있다고 가정합니다. 만약 너라면
사용 mysqlbinlog --노골적인 파일을 백업하려면 --결과 파일 옵션은 출력 파일을 생성합니다
다음 표와 같이 이름을 지정합니다. 다음을 통해 특정 디렉토리에 파일을 쓸 수 있습니다.
시작 --결과 파일 값을 디렉터리 경로와 함께 사용합니다. 만약 --결과 파일 가치
디렉터리 이름으로만 구성되며 값은 경로 이름 구분 기호로 끝나야 합니다.
캐릭터. 출력 파일이 있으면 덮어씁니다.
┌─────────────────────┬───────────────────────────── ─┐
│--결과 파일 옵션 │ 산출 입양 부모로서의 귀하의 적합성을 결정하기 위해 미국 이민국에 이름 │
├─────────────────────┼───────────────────────────── ─┤
│--결과 파일=x │ xbinlog.000999 이상 │
├─────────────────────┼───────────────────────────── ─┤
│--결과 파일=/ tmp / │ /tmp/binlog.000999 이상 │
├─────────────────────┼───────────────────────────── ─┤
│--결과 파일=/tmp/x │ /tmp/xbinlog.000999 이상 │
└─────────────────────┴───────────────────────────── ─┘
예: 백업 및 복원을 위한 mysqldump + mysqlbinlog.PP 다음 예에서는 설명합니다.
사용법을 보여주는 간단한 시나리오 mysqldump 그리고 mysqlbinlog 함께 백업
서버의 데이터 및 바이너리 로그, 데이터 손실 시 백업을 사용하여 서버를 복원하는 방법
발생합니다. 이 예에서는 서버가 호스트에서 실행되고 있다고 가정합니다. 호스트 이름 그리고 처음
바이너리 로그 파일의 이름은 binlog.000999입니다. 한 줄에 각 명령을 입력합니다.
mysqlbinlog 바이너리 로그를 지속적으로 백업하려면:
mysqlbinlog --원격 서버에서 읽기 --호스트=호스트 이름 --노골적인
--stop-never binlog.000999
mysqldump 서버 데이터의 스냅샷으로 덤프 파일을 생성합니다. 사용하다
--모든 데이터베이스, --이벤트및 -루틴 모든 데이터를 백업하고 --마스터 데이터=2 에
덤프 파일에 현재 바이너리 로그 좌표를 포함합니다.
mysqldump --호스트=호스트 이름 --all-databases --events --routines --master-data=2> 덤프 파일
실행 mysqldump 명령을 주기적으로 실행하여 원하는 대로 최신 스냅샷을 생성합니다.
데이터 손실이 발생하는 경우(예: 서버가 충돌하는 경우) 가장 최근의 덤프 파일을 사용하여
데이터 복원:
mysql --호스트=호스트 이름 -u 루트 -p 덤프 파일
그런 다음 바이너리 로그 백업을 사용하여
덤프 파일에 나열된 좌표. 파일의 좌표가 다음과 같다고 가정합니다.
이:
-- 마스터를 MASTER_LOG_FILE='binlog.001002'로 변경, MASTER_LOG_POS=27284;
가장 최근에 백업한 로그 파일의 이름이 binlog.001004인 경우 로그 이벤트를 다시 실행합니다.
이렇게 :
mysqlbinlog --start-position=27284 binlog.001002 binlog.001003 binlog.001004
| mysql --호스트=호스트 이름 -u 루트 -p
백업 파일(덤프 파일 및 바이너리 로그 파일)을
복원 작업을 더 쉽게 수행할 수 있도록 하는 서버 호스트 또는 MySQL이 허용하지 않는 경우
원격 루트 액세스.
지정 L' MySQLBINLOG 섬기는 사람 ID
와 함께 호출될 때 --원격 서버에서 읽기 선택권, mysqlbinlog MySQL에 연결
서버, 자신을 식별하기 위해 서버 ID를 지정하고 바이너리 로그 파일을 요청합니다.
섬기는 사람. 당신이 사용할 수있는 mysqlbinlog 여러 가지 방법으로 서버에서 로그 파일을 요청하려면:
· 명시적으로 명명된 파일 집합 지정: 각 파일에 대해 mysqlbinlog 연결하고
Binlog 덤프 명령을 실행합니다. 서버는 파일을 보내고 연결을 끊습니다. 하나가있다
파일당 연결.
· 시작 파일을 지정하고 --마지막 로그까지: mysqlbinlog Binlog를 연결하고 발행합니다.
모든 파일에 대한 덤프 명령. 서버는 모든 파일을 보내고 연결을 끊습니다.
· 시작 파일을 지정하고 --중지-절대 (이는 --마지막 로그까지): mysqlbinlog
모든 파일에 대해 Binlog 덤프 명령을 연결하고 실행합니다. 서버는 모든 파일을 보내고,
그러나 마지막 것을 보낸 후에는 연결을 끊지 않습니다.
와 --원격 서버에서 읽기 만, mysqlbinlog 서버 ID 0을 사용하여 연결합니다.
마지막으로 요청한 로그 파일을 보낸 후 연결을 끊으라고 서버에 알립니다.
와 --원격 서버에서 읽기 그리고 --중지-절대, mysqlbinlog XNUMX이 아닌 값을 사용하여 연결
서버 ID이므로 마지막 로그 파일을 보낸 후 서버가 연결 해제되지 않습니다. 서버
ID는 기본적으로 65535이지만 다음으로 변경할 수 있습니다. --stop-never-slave-server-id.
따라서 파일을 요청하는 처음 두 가지 방법의 경우 서버 연결이 끊어집니다.
mysqlbinlog 서버 ID를 0으로 지정합니다. --중지-절대 주어진다
때문에 mysqlbinlog XNUMX이 아닌 서버 ID를 지정합니다.
저작권
Copyright © 1997, 2014, Oracle 및/또는 그 계열사. 판권 소유.
이 문서는 무료 소프트웨어입니다. 아래에서만 재배포 및/또는 수정할 수 있습니다.
자유 소프트웨어 재단에서 발행한 GNU 일반 공중 사용 허가서의 조건;
라이센스 버전 2.
이 문서는 유용할 것이라는 희망으로 배포되지만,
보증; MERCHANTABILITY 또는 FITNESS FOR A PARTICULAR에 대한 묵시적 보증도 없이
목적. 자세한 내용은 GNU 일반 공중 사용 허가서를 참조하십시오.
프로그램과 함께 GNU 일반 공중 사용 허가서를 받았어야 합니다.
그렇지 않은 경우 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301 USA 또는 참조 http://www.gnu.org/licenses/.
노트
1. MySQL 내부: 바이너리 로그
http://dev.mysql.com/doc/internals/en/binary-log.html
onworks.net 서비스를 사용하여 온라인으로 mysqlbinlog 사용