4.6.8 mysqlbinlog - 바이너리 로그 파일을 처리하기위한 유틸리티
서버의 바이너리 로그는 데이터베이스의 내용에 대한 변경을 설명하는 "이벤트"를 포함하는 파일로 구성됩니다. 서버는이 파일을 바이너리 형식으로 내 보냅니다. 내용을 텍스트 형식으로 표시하려면 mysqlbinlog 유틸리티를 사용합니다. 복제 설정에서 mysqlbinlog를 사용하여 슬레이브 서버가 보낸 릴레이 로그 파일의 내용을 표시 할 수 있습니다. 릴레이 로그는 바이너리 로그와 같은 형식을 가지기 때문입니다. 바이너리 로그 및 릴레이 로그는 섹션 5.2.4 "바이너리 로그" 및 섹션 17.2.2 "복제 릴레이 및 상태 로그" 에서 더 설명합니다.
mysqlbinlog은 다음과 같이 시작합니다.
shell> mysqlbinlog [ options ] log_file ...
예를 들어 binlog.000003
라는 이름의 바이너리 로그 파일의 내용을 표시하려면이 명령을 사용하십시오.
shell> mysqlbinlog binlog.0000003
출력은 binlog.000003
에 포함 된 이벤트가 포함됩니다. 명령문 기반 로깅에서는 이벤트 정보에는 SQL 문, 그것이 실행 된 서버의 ID 명령문이 실행 된 타임 스탬프 걸린 시간 등이 포함됩니다. 행 기반 로깅 이벤트는 SQL 문이 아닌 행의 변경을 나타냅니다. 로깅 모드의 자세한 내용은 섹션 17.1.2 "복제 형식" 을 참조하십시오.
이벤트는 그 전에 추가 정보를 제공하는 헤더 댓글이 있습니다. 예 :
# at 141 # 100309 9:28:36 server id 123 end_log_pos 245 Query thread_id = 3350 exec_time = 11 error_code = 0
첫 번째 행에서 at
숫자들은 각각 바이너리 로그 파일에서 이벤트 파일 오프셋, 즉 시작 위치를 나타냅니다.
두 번째 줄은 이벤트가 발생한 서버에서 문이 언제 시작되었는지를 나타내는 날짜와 시간에 시작됩니다. 복제에 관하여는이 타임 스탬프가 슬레이브 서버에 전파됩니다. server id
는 이벤트가 발생한 서버의 server_id
입니다. end_log_pos
은 다음 이벤트가 시작 위치 (현재 이벤트의 종료 위치 + 1)를 보여줍니다. thread_id
는 이벤트를 실행 한 스레드를 나타냅니다. exec_time
는 마스터 서버에서 이벤트 실행하는 데 걸린 시간입니다. 슬레이브는이 슬레이브에서 실행 종료 시간에서 마스터에서 실행 시작 시간을 뺀 차이입니다. 이 차이는 복제가 마스터에서 얼마나 뒤쳐 졌는지를 나타냅니다. error_code
는 이벤트의 실행 결과를 보여줍니다. 제로는 오류가 발생하지 않았 음을 의미합니다.
이벤트 그룹을 사용하는 경우, 이벤트 파일 오프셋의 그룹화 및 이벤트의 댓글 그룹화 수 있습니다. 이러한 그룹화 이벤트를 공백 파일 오프셋으로 착각하지 마십시오.
mysqlbinlog의 출력은 (예를 들어 그것을 mysql의 입력으로 사용하여) 다시 실행 로그의 문을 다시 시도 할 수 있습니다. 이것은 서버가 충돌했을 때 복구 작업으로 편리합니다. 다른 예는이 섹션의 나머지 분의 설명 및 섹션 7.5 "바이너리 로그를 사용한 시점 (증분) 복구" 를 참조하십시오.
일반적으로 mysqlbinlog를 사용하여 바이너리 로그 파일을 직접 읽고 로컬 MySQL 서버에 적용합니다. --read-from-remote-server
옵션을 사용하여 원격 서버에서 바이너리 로그를 읽을 수 있습니다. 원격 바이너리 로그를 읽을 수 있도록 연결 매개 변수 옵션을 사용하여 서버에 연결하는 방법을 나타낼 수 있습니다. 이 옵션은 --host
, --password
, --port
, --protocol
, --socket
및 --user
입니다. --read-from-remote-server
옵션을 사용하는 경우 이외는 무시됩니다.
mysqlbinlog를 대규모 바이너리 로그에 대해 수행 할 경우 결과 파일에 대한 파일 시스템에 충분한 공간이있는 않도록주의하십시오. mysqlbinlog이 임시 파일에 사용할 디렉토리를 구성하려면 TMPDIR
환경 변수를 사용합니다.
mysqlbinlog는 다음 옵션을 지원합니다. 이들은 명령 행 또는 옵션 파일의 [mysqlbinlog]
그룹과 [client]
그룹에 지정할 수 있습니다. MySQL 프로그램에서 사용되는 옵션 파일에 대한 자세한 내용은 섹션 4.2.6 "옵션 파일 사용" 을 참조하십시오.
표 4.15 mysqlbinlog
옵션
형식 | 설명 | 도입 |
---|---|---|
--base64-output | 바이너리 로그 항목을 base-64 인코딩으로 출력 | |
--bind-address | 지정된 네트워크 인터페이스를 사용하여 MySQL 서버에 연결 | 5.6.1 |
--binlog-row-event-max-size | 바이너리 로그의 최대 이벤트 크기 | |
--character-sets-dir | 문자 세트가 설치되어있는 디렉토리 | |
--connection-server-id | 테스트 및 디버깅에 사용. 적용되는 기본값 및 기타 사항은 텍스트를 참조하십시오. | 5.6.20 |
--database | 이 데이터베이스에만 항목을 목록 | |
--debug | 디버깅 로그를 작성한다 | |
--debug-check | 프로그램이 종료 될 때 디버깅 정보를 출력 | |
--debug-info | 프로그램 종료시 디버그 정보, 메모리 및 CPU 통계를 출력 | |
--default-auth | 사용하는 인증 플러그인 | 5.6.2 |
--defaults-extra-file | 일반 옵션 파일 이외에 옵션 파일을 읽을 | |
--defaults-file | 지명 된 옵션 파일 만 읽을 | |
--defaults-group-suffix | 옵션 그룹의 접미사 값 | |
--disable-log-bin | 바이너리 로깅을 비활성화 | |
--exclude-gtids | 제공된 GTID 세트의 그룹을 표시하지 | 5.6.5 |
--force-if-open | 바이너리 로그 파일이 열려 있거나 제대로 청산하지 않은 경우에서도 읽을 | |
--force-read | mysqlbinlog가 인식하지 못하는 바이너리 로그 이벤트를 읽는 경우 경고를 출력 | |
--help | 도움말 메시지를 표시하고 종료 | |
--hexdump | 댓글에 로그의 16 진수 덤프를 표시 | |
--host | 지정된 호스트에서 MySQL 서버에 연결 | |
--idempotent | 서버가이 세션에서 바이너리 로그의 업데이트를 처리하는 동안에 만 제곱 모드를 사용 | |
--include-gtids | 제공된 GTID 세트 그룹 만 표시 | 5.6.5 |
--local-load | 지정된 디렉토리에 LOAD DATA INFILE 로컬 임시 파일을 준비 | |
--login-path | 로그인 경로 옵션을 .mylogin.cnf에서 읽기 | 5.6.6 |
--no-defaults | 옵션 파일을 읽지 | |
--offset | 로그의 첫 번째 N 항목을 생략 | |
--password | 서버에 연결할 때 사용하는 비밀번호 | |
--plugin-dir | 플러그인이 설치되어있는 디렉토리 | 5.6.2 |
--port | 연결에 사용하는 TCP / IP 포트 번호 | |
--print-defaults | 기본 출력 | |
--protocol | 사용하는 연결 프로토콜 | |
--raw | 이벤트를 원시 (바이너리) 형식으로 출력 파일에 쓰기 | |
--read-from-remote-master | 바이너리 로그를 로컬 로그 파일에서가 아니라 MySQL 마스터에서 읽기 | 5.6.5 |
--read-from-remote-server | 바이너리 로그를 로컬 로그 파일에서가 아니라 MySQL 서버에서 읽기 | |
--result-file | 지정된 파일에 출력을 전송 | |
--secure-auth | 오래된 (4.1.1 이전) 형식으로 서버에 암호를 전송하지 | 5.6.17 |
--server-id | 지정된 서버 ID를 가진 서버에서 생성 된 이벤트만을 추출 | |
--server-id-bits | 서버 ID 비트가 최대 값 이하로 설정되어있는 mysqld에 의해 로그가 기록 된 경우, 바이너리 로그 서버 ID를 해석하는 방법을 mysqlbinlog에 지정. MySQL Cluster 버전의 mysqlbinlog에서만 지원 | |
--set-charset | SET NAMES charset_name 문을 출력에 추가 | |
--shared-memory-base-name | 공유 메모리 연결에 사용하는 공유 메모리의 이름 | |
--short-form | 로그에 포함 된 명령문 만 표시 | |
--skip-gtids | GTID를 출력하지 않는다. 이것은 GTID을 포함 바이너리 로그에서 덤프 파일을 기록 할 때 사용합니다. | 5.6.5 |
--socket | 로컬 호스트에 연결하는 데 사용하는 Unix 소켓 파일 | |
--ssl-crl | 인증서 해지 목록을 포함하는 파일의 경로 | 5.6.3 |
--ssl-crlpath | 인증서 해지 목록 파일을 포함하는 디렉토리 경로 | 5.6.3 |
--start-datetime | 타임 스탬프가 datetime 인수와 동일하거나보다 뒤의 첫 번째 이벤트에서 바이너리 로그를 읽기 | |
--start-position | 위치 인수와 동일하거나보다 큰 첫 번째 이벤트에서 바이너리 로그를 읽기 | |
--stop-datetime | 타임 스탬프가 datetime 인수와 동일하거나보다 큰 첫 번째 이벤트에서 바이너리 로그를 읽기를 중지 | |
--stop-never | 마지막 바이너리 로그 파일의 읽기 후 서버와의 연결을 유지 | |
--stop-never-slave-server-id | 서버에 연결할 때보고하는 슬레이브 서버 ID | |
--stop-position | 위치 인수와 동일하거나보다 큰 첫 번째 이벤트에서 바이너리 로그를 읽기를 중지 | |
--to-last-log | MySQL 서버에서 요청 된 바이너리 로그의 끝에서 중단하지 않고, 마지막 바이너리 로그까지 계속 출력 | |
--user | 서버에 연결할 때 사용하는 MySQL 사용자 이름 | |
--verbose | 행 이벤트를 SQL 문으로 재 구축 | |
--verify-binlog-checksum | 바이너리 로그의 체크섬 확인 | 5.6.1 |
--version | 버전 정보를 출력하고 종료 |
--help
,-?
도움말 메시지를 표시하고 종료합니다.
--base64-output =
value
이 옵션은 이벤트를 언제
BINLOG
문을 사용하여 base-64 문자열로 인코딩하여 표시 할 것인지 여부를 결정합니다. 이 옵션은 다음의 가능한 값입니다 (대소 문자 구분하지 않음).AUTO
( "자동") 또는UNSPEC
( "미지정")는 필요할 때 (즉, 형식 설명 이벤트 및 행 이벤트) 자동으로BINLOG
문을 표시합니다.--base64-output
옵션이 지정되지 않으면 효과는--base64-output=AUTO
와 동일합니다.참고자동
BINLOG
표시는 mysqlbinlog의 출력을 사용하여 바이너리 로그 파일의 내용을 다시 실행하는 경우에만 안전한 동작입니다. 다른 옵션 값은 디버깅이나 테스트 전용입니다. 이러한 옵션에서 생성되는 출력은 모든 이벤트가 실행 가능한 형식으로 포함되는 것은 아니기 때문입니다.NEVER
을 사용하면BINLOG
문이 표시되지 않습니다. mysqlbinlog은BINLOG
를 사용하여 표시하여야한다 줄 이벤트가 감지 된 경우에는 에러로 종료합니다.DECODE-ROWS
는--verbose
옵션을 지정하여 줄 이벤트를 주석의 SQL 문으로 디코딩 및 표시하는 것을 사용자가 의도하고 있는지, mysqlbinlog로 지정합니다.NEVER
와 마찬가지로DECODE-ROWS
는BINLOG
문의 표시를 억제하지만NEVER
와 달리 행 이벤트가 발생해도 오류로 종료하지 않습니다.
--base64-output
및--verbose
줄 이벤트 출력에 영향을 예제는 섹션 4.6.8.2 "mysqlbinlog 행 이벤트보기" 를 참조하십시오.--bind-address =
ip_address
여러 네트워크 인터페이스가있는 시스템에서이 옵션을 사용하여 MySQL 서버에 연결하는 데 사용하는 인터페이스를 선택합니다.
이 옵션은 MySQL 5.6.1에서 지원되고 있습니다.
--binlog-row-event-max-size =
N
명령 줄 형식 --binlog-row-event-max-size = #
허용되는 값 (64 비트 플랫폼) 유형 수치
기본 4294967040
최소 256
최대 값 18446744073709547520
행 기반의 바이너리 로그 이벤트의 최대 크기를 바이트 단위로 지정합니다. 가능하면 행이 크기보다 작은 이벤트로 그룹화됩니다. 값은 256의 배수 여야합니다. 기본값은 4G 바이트입니다.
--character-sets-dir =
path
문자 세트가 설치되어있는 디렉토리. 섹션 10.5 "문자 세트 구성" 을 참조하십시오.
--connection-server-id =
server_id
이 옵션은 MySQL 서버가
BINLOG_DUMP_NON_BLOCK
연결 플래그를 지원하는지 여부를 테스트하는 데 사용됩니다. 이 플래그는 어떠한 사정으로 MySQL 5.6.5에서 삭제되고 MySQL 5.6.20에서 복원되었습니다 (Bug # 18000079, Bug # 71178). 정상 작동은 필요하지 않습니다.이 옵션의 실질적인 기본값 및 최소값은 mysqlbinlog가 차단 모드에서 실행되고 있는지 비 블로킹 모드에서 실행되고 있는지에 따라 다릅니다. mysqlbinlog가 차단 모드에서 실행되고있는 경우는, 디폴트 (및 최소) 값은 1입니다. 비 블로킹 모드에서 실행되고있는 경우는, 디폴트 (및 최소) 값은 0입니다.
이 옵션은 MySQL 5.6.20에서 추가되었다.
--database=
,db_name
-d
db_name
이 옵션을 사용하면 mysqlbinlog는
USE
에 의해db_name
이 기본 데이터베이스로 선택되어있는 동안 발생하는 바이너리 로그 (로컬 로그 만)에서 항목을 출력하게됩니다.mysqlbinlog의
--database
옵션은 mysqld의--binlog-do-db
옵션과 비슷하지만 지정할 수 하나의 데이터베이스 만입니다.--database
을 여러 번 지정하면 마지막 인스턴스 만 사용됩니다.이 옵션의 영향은 명령문 기반 또는 행 기반 로깅 형식의 어느 쪽이 사용되었는지에 따라 다릅니다. 이것은
--binlog-do-db
의 영향이 명령문 기반 또는 행 기반 중의 로깅을 사용하는지에 따라 다른 것과 같습니다.명령문 기반 로깅
--database
옵션은 다음과 같이 작동합니다.db_name
이 기본 데이터베이스 인 동안 문db_name
또는 다른 데이터베이스의 테이블을 수정하는 경우에도 출력됩니다.db_name
이 기본 데이터베이스로 선택되어 있지 않으면db_name
테이블을 수정하는 경우에도 문은 출력되지 않습니다.CREATE DATABASE
,ALTER DATABASE
및DROP DATABASE
는 예외입니다. 문을 출력할지 여부를 판단 할 때, 생성, 변경 또는 삭제 된 데이터베이스가 기본 데이터베이스로 간주됩니다.
이 문을 실행하여 명령문 기반 로깅을 사용하여 바이너리 로그가 생성되었다고합니다.
INSERT INTO test.t1 (i) VALUES (100); INSERT INTO db2.t2 (j) VALUES (200); USE test; INSERT INTO test.t1 (i) VALUES (101); INSERT INTO t1 (i) VALUES (102); INSERT INTO db2.t2 (j) VALUES (201); USE db2; INSERT INTO test.t1 (i) VALUES (103); INSERT INTO db2.t2 (j) VALUES (202); INSERT INTO t2 (j) VALUES (203);
기본 데이터베이스가 없기 때문에 mysqlbinlog --database = test는 처음 두 개의
INSERT
문을 출력하지 않습니다.USE test
에 이은 3 개의INSERT
문은 출력되지만USE db2
에 이은 3 개의INSERT
문은 출력하지 않습니다.기본 데이터베이스가 없기 때문에 mysqlbinlog --database = db2은 처음 두 개의
INSERT
문을 출력하지 않습니다.USE test
에 이은 3 개의INSERT
문은 출력하지 않지만USE db2
에 이은 3 개의INSERT
문을 출력합니다.행 기반 로깅 mysqlbinlog는
db_name
에 속하는 테이블을 변경하는 항목 만 출력합니다. 여기에는 기본 데이터베이스에 영향을주지 않습니다. 지금 설명했다 바이너리 로그가 문 기반 로깅이 아닌 행 기반 로깅을 사용하여 작성되었다고합니다. mysqlbinlog --database = test는USE
가 발행 된 또는 기본 데이터베이스가 뭔가에 관계없이 테스트 데이터베이스t1
을 변경하는 항목 만 출력합니다.서버가
binlog_format
이MIXED
로 설정된 상태에서 실행하고, mysqlbinlog를--database
옵션으로 사용할 수 있도록하는 경우 변경되는 테이블USE
에서 선택된 데이터베이스임을 보장해야 있습니다. (특히 크로스 데이터베이스의 업데이트는 사용하지 않도록하십시오.)MySQL 5.6.10 이전에는, GTID가 유효한 MySQL 서버에 의해 기록 된 로그는
--database
옵션은 제대로 작동하지 않았습니다. (Bug # 15912728)--debug[=
,debug_options
]-# [
debug_options
]디버그 로그를 기록합니다. 일반적인
debug_options
문자열은d:t:o,
입니다. 기본값은file_name
d:t:o,/tmp/mysqlbinlog.trace
입니다.--debug-check
프로그램 종료시 디버그 정보를 출력합니다.
--debug-info
프로그램 종료시 디버그 정보와 메모리 및 CPU 사용량 통계를 출력합니다.
--default-auth =
plugin
사용하는 클라이언트 인증 플러그인. 섹션 6.3.7 "플러그 인증" 을 참조하십시오.
이 옵션은 MySQL 5.6.2에서 추가되었습니다.
--defaults-extra-file =
file_name
이 옵션 파일은 글로벌 옵션 파일 다음에 읽을 수 있지만 (UNIX의 경우) 사용자 옵션 파일 전에 읽도록하십시오. 파일이 없거나 액세스 할 수없는 경우 오류가 발생합니다.
file_name
은 전체 경로 이름이 아닌 상대 경로 이름으로 지정된 경우 현재 디렉토리를 기준으로 해석됩니다.--defaults-file =
file_name
지정된 옵션 파일 만 사용합니다. 파일이 없거나 액세스 할 수없는 경우 오류가 발생합니다.
file_name
은 전체 경로 이름이 아닌 상대 경로 이름으로 지정된 경우 현재 디렉토리를 기준으로 해석됩니다.--defaults-group-suffix =
str
일반적인 옵션 그룹뿐만 아니라 일반 이름에
str
의 접미사가 붙은 그룹도 읽습니다. 예를 들어, mysqlbinlog은 보통[client]
그룹과[mysqlbinlog]
그룹을 읽습니다.--defaults-group-suffix=_other
옵션을 지정했을 경우, mysqlbinlog은[client_other]
그룹과[mysqlbinlog_other]
그룹도 읽습니다.--disable-log-bin
,-D
바이너리 로깅을 비활성화합니다. 이것은
--to-last-log
옵션을 사용하여 동일한 MySQL 서버에 출력을 전송하는 경우 무한 루프를 방지하는 데 유용합니다. 이 옵션은 충돌 후 이미 기록 된 문 중복을 방지하는 데에도 유용합니다.이 옵션은
SUPER
권한을 보유하고 있어야합니다. mysqlbinlog가 출력에SET sql_log_bin = 0
문을 포함하여 그 후의 출력 바이너리 로깅을 비활성화 할 수 있습니다.SET
문은SUPER
권한이없는 경우에는 효과가 없습니다.--exclude-gtids =
gtid_set
gtid_set
에 나열된 그룹을 표시하지 않습니다. MySQL 5.6.5에서 추가되었습니다.--force-if-open
,-F
바이너리 로그 파일이 열려 있거나 제대로 닫혀 있지 않은 경우에도 읽습니다.
--force-read
,-f
이 옵션은 mysqlbinlog가 인식하지 못하는 바이너리 로그 이벤트를 읽은 경우에 경고를 출력하고, 이벤트를 무시하고 계속합니다. 이 옵션을 사용하지 않는 경우는 mysqlbinlog는 그런 이벤트를 읽을 중지합니다.
--hexdump
,-H
섹션 4.6.8.1 "mysqlbinlog 16 진수 덤프 형식" 에 설명 된대로 로그의 16 진수 덤프를 댓글로 표시합니다. 16 강 력은 복제 디버깅에 유용 할 수 있습니다.
--host=
,host_name
-h
host_name
지정된 호스트의 MySQL 서버에서 바이너리 로그를 가져옵니다.
--include-gtids =
gtid_set
gtid_set
에 나열된 그룹 만 표시합니다. MySQL 5.6.5에서 추가되었습니다.--local-load=
,path
-l
path
지정된 디렉토리에
LOAD DATA INFILE
을위한 로컬 임시 파일을 준비합니다.중요이러한 임시 파일은 mysqlbinlog 및 기타 모든 MySQL 프로그램에 의해 자동으로 삭제되지 않습니다.
--login-path =
name
지명 된 로그인 경로에서
.mylogin.cnf
로그인 파일의 옵션을 읽습니다. "로그인 경로"는host
,user
및password
라는 제한된 옵션 집합 만 허용 옵션 그룹입니다. 로그인 경로는 서버 호스트 및 서버에서 인증을위한 인증 정보를 나타내는 값의 집합이라고 생각합니다. 로그인 경로 파일을 작성하려면 mysql_config_editor 유틸리티를 사용합니다. 섹션 4.6.6 "mysql_config_editor - MySQL 구성 유틸리티" 를 참조하십시오. 이 옵션은 MySQL 5.6.6에서 추가되었습니다.--no-defaults
옵션 파일을 읽지 않습니다. 옵션 파일에서 알 수없는 옵션을 읽을로 인해 프로그램의 실행에 실패 할 경우
--no-defaults
를 사용하여 옵션을 읽는 것을 방지 할 수 있습니다.예외적으로
.mylogin.cnf
파일은 존재하는 경우는 모든 경우에 읽습니다. 이는--no-defaults
가 사용 된 경우에도 명령 행보다 안전한 방법으로 암호를 지정할 수 있습니다. (.mylogin.cnf
는 mysql_config_editor 유틸리티가 작성됩니다. 섹션 4.6.6 "mysql_config_editor - MySQL 구성 유틸리티" 를 참조하십시오).--offset=
,N
-o
N
로그의 첫 번째
N
개의 항목을 생략합니다.--password[=
,password
]-p[
password
]서버에 연결할 때 사용하는 암호입니다. 짧은 옵션 형식 (
-p
)을 사용하는 경우, 옵션과 패스워드 사이에 스페이스를 가질 수 없습니다. 명령 행에서--password
옵션 또는-p
옵션 뒤에password
의 값을 지정하지 않으면, mysqlbinlog 그것을 요구합니다.명령 행에서 암호를 지정하는 것은 안전하지 않은 것으로 간주한다. 섹션 6.1.2.1 "비밀번호 보안에 대한 최종 사용자 지침" 을 참조하십시오. 옵션 파일을 사용하면 명령 행에서 암호를 지정하는 것을 방지 할 수 있습니다.
--plugin-dir =
path
플러그인을 검색하는 디렉토리.
--default-auth
옵션을 사용하여 인증 플러그인을 지정했지만, mysqlbinlog이 그것을 찾을 수없는 경우이 옵션을 지정해야 할 수도 있습니다. 섹션 6.3.7 "플러그 인증" 을 참조하십시오.이 옵션은 MySQL 5.6.2에서 추가되었습니다.
--port=
,port_num
-P
port_num
원격 서버에 연결하는 데 사용하는 TCP / IP 포트 번호.
--print-defaults
프로그램 이름과 옵션 파일에서받는 모든 옵션을 출력합니다.
--protocol = {TCP | SOCKET | PIPE | MEMORY}
서버에 연결하는 데 사용하는 연결 프로토콜. 이 옵션은 다른 연결 매개 변수는 필요한 프로토콜 이외의 것이 일반적으로 사용되는 경우에 유용합니다. 허용되는 값의 자세한 내용은 섹션 4.2.2 "MySQL 서버에 연결" 을 참조하십시오.
--raw
기본적으로 mysqlbinlog 바이너리 로그 파일을 읽고 이벤트를 텍스트 형식으로 내 보냅니다.
--raw
옵션은 mysqlbinlog에 원래 바이너리 포맷으로 내보낼 것을 지시합니다. 파일은 서버에서 요구되기 때문에이를 사용하려면--read-from-remote-server
도 사용해야합니다. mysqlbinlog는 서버에서 읽은 각 파일에 대해 하나의 출력 파일을 내 보냅니다.--raw
옵션은 서버의 바이너리 로그를 백업하는 데 사용할 수 있습니다.--stop-never
옵션을 사용하면 mysqlbinlog은 서버에 연결된 상태로되기 때문에 백업은 "라이브"입니다. 기본적으로 출력 파일은 현재 디렉토리에 원래 로그 파일과 동일한 이름으로 작성됩니다. 출력 파일 이름은--result-file
옵션을 사용하여 변경할 수 있습니다. 자세한 내용은 섹션 4.6.8.3 "바이너리 로그 파일의 백업을위한 mysqlbinlog 사용" 을 참조하십시오.이 옵션은 MySQL 5.6.0에서 추가되었습니다.
--read-from-remote-master =
type
COM_BINLOG_DUMP
명령 또는COM_BINLOG_DUMP_GTID
명령에서 옵션 값을 각각BINLOG-DUMP-NON-GTIDS
또는BINLOG-DUMP-GTIDS
로 설정하여 MySQL 서버에서 바이너리 로그를 읽습니다.--read-from-remote-master=BINLOG-DUMP-GTIDS
이--exclude-gtids
와 결합되면 트랜잭션을 마스터로 필터링 할 수 불필요한 네트워크 트래픽을 방지 할 수 있습니다.--read-from-remote-server
설명을 참조하십시오.이 옵션은 MySQL 5.6.5에서 추가되었습니다.
--read-from-remote-server
,-R
바이너리 로그를 로컬 로그 파일에서가 아니라 MySQL 서버에서 읽습니다. 다음 옵션도 지정되어 있지 않은 한, 연결 매개 변수 옵션은 무시됩니다. 이 옵션은
--host
,--password
,--port
,--protocol
,--socket
및--user
입니다.이 옵션은 원격 서버에서 실행하는 것이 필요합니다. 원격 서버의 바이너리 로그 파일에 대해서만 작동합니다. 릴레이 로그 파일에는 작동하지 않습니다.
MySQL 5.6.5에서는이 옵션은
--read-from-remote-master=BINLOG-DUMP-NON-GTIDS
과 같습니다.--result-file=
,name
-r
name
--raw
옵션이없는 경우이 옵션은 mysqlbinlog이 텍스트 출력을 내보낼 파일을 보여줍니다.--raw
이있는 경우 mysqlbinlog는 서버로부터 전송되는 각 로그 파일에 대해 하나의 바이너리 출력 파일을 기본적으로 현재 디렉토리에 원래 로그 파일과 동일한 이름으로 내 보냅니다. 이 경우--result-file
옵션 값은 출력 파일 이름을 변경하는 접두어로 처리됩니다.--secure-auth
이전 (4.1 이전) 형식으로 서버에 암호를 전송하지 않습니다. 그러면 새 암호 형식을 사용하는 서버 이외의 연결을 방지합니다. 이 옵션은 기본적으로 활성화됩니다. 해제하려면
--skip-secure-auth
를 사용합니다. 이 옵션은 MySQL 5.6.17에서 추가되었다.참고4.1 이전의 해시 방식을 사용하는 암호는 기본 암호 해시 방식을 사용하는 암호보다 안전하지 않기 때문에 사용하지 않도록하십시오. 4.1 이전 암호는 사용되지 않으며, 이러한 지원은 향후 MySQL 릴리스에서 제거 될 예정입니다. 계정 업그레이드 지침은 섹션 6.3.8.3 "4.1 이전 암호 해시 방식과 mysql_old_password 플러그인에서 마이그레이션" 을 참조하십시오.
--server-id =
id
지정된 서버 ID를 가진 서버에서 생성 된 이벤트 만 표시합니다.
--server-id-bits =
N
서버를 특정하기 위해
server_id
의 첫 번째N
비트만을 사용합니다. server-id-bits가 32 미만으로 설정되고 사용자 데이터가 최상위 비트에 저장되는 mysqld가 바이너리 로그가 기록 된 경우--server-id-bits
를 32으로 설정하고 mysqlbinlog를 실행하면 이 데이터를 볼 수 있습니다.이 옵션은 MySQL Cluster 배포에서 제공되는 버전 또는 MySQL Cluster 소스에서 빌드 된 mysqlbinlog에서만 지원됩니다.
--set-charset =
charset_name
SET NAMES
문을 출력에 추가하여 로그 파일 처리에 사용되는 문자 세트를 지정합니다.charset_name
--shared-memory-base-name =
name
Windows에서 공유 메모리를 사용하여 생성되는 로컬 서버에 연결 공유 메모리 이름. 기본값은
MYSQL
입니다. 공유 메모리 이름은 대소 문자를 구분합니다.공유 메모리 연결을 가능하게하려면 서버는
--shared-memory
옵션으로 시작해야합니다.--short-form
,-s
추가 정보 및 행 기반의 이벤트없이 로그에 포함 된 명령문만을 표시합니다. 이것은 테스트 전용 프로덕션 시스템에 사용해서는 없습니다.
--skip-gtids [= (true | false)]
출력에 GTID을 표시하지 않습니다. 이것은 다음의 예와 같이 GTID를 포함하는 하나 이상의 바이너리 로그에서 덤프 파일로 내보낼 경우에 필요합니다.
shell>
mysqlbinlog --skip-gtids binlog.000001 > /tmp/dump.sql
shell>mysqlbinlog --skip-gtids binlog.000002 >> /tmp/dump.sql
shell>mysql -u root -p -e "source /tmp/dump.sql"
그렇지 않은 경우에는이 옵션을 프로덕션 환경에서 사용하는 것은 일반적으로 권장되지 않습니다.
이 옵션은 MySQL 5.6.5에서 추가되었습니다.
--socket=
,path
-S
path
localhost
에 연결하는 데 사용되는 Unix 소켓 파일 또는 Windows에서 사용하는 명명 된 파이프의 이름.--start-datetime =
datetime
datetime
인수와 동일하거나 느린 타임 스탬프를 가지는 첫 번째 이벤트에서 바이너리 로그를 읽기 시작합니다.datetime
값은 mysqlbinlog를 실행하는 컴퓨터의 로컬 시간대에 상대적입니다. 값은DATETIME
또는TIMESTAMP
데이터 유형에 받아 들일 수있는 형식으로하십시오. 예 :shell>
mysqlbinlog --start-datetime="2005-12-25 11:25:56" binlog.000003
이 옵션은 시점 복구에 유용합니다. 섹션 7.3 "백업 및 복구 전략의 예" 를 참조하십시오.
--start-position=
,N
-j
N
N
이상의 위치를 가진 첫 번째 이벤트에서 바이너리 로그를 읽기 시작합니다. 이 옵션은 명령 행에서 첫 번째로 지명 된 로그 파일에 적용됩니다.이 옵션은 시점 복구에 유용합니다. 섹션 7.3 "백업 및 복구 전략의 예" 를 참조하십시오.
--stop-datetime =
datetime
datetime
인수와 동일하거나 느린 타임 스탬프를 가지는 첫 번째 이벤트에서 바이너리 로그를 읽기를 종료합니다. 이 옵션은 시점 복구에 유용합니다.datetime
값에 대한 자세한 내용은--start-datetime
옵션에 대한 설명을 참조하십시오.이 옵션은 시점 복구에 유용합니다. 섹션 7.3 "백업 및 복구 전략의 예" 를 참조하십시오.
--stop-never
이 옵션은
--read-from-remote-server
와 함께 사용됩니다. mysqlbinlog 대해 서버에 접속 한 상태를 유지하는 것을 지시합니다. 그렇지 않으면, mysqlbinlog는 마지막 로그 파일이 서버에서 전송 된 시점에서 종료합니다.--stop-never
는 암묵적으로--to-last-log
를 지정하기 위해 명령 행에서 지명 할 필요가있는 것은 전송되는 첫 번째 로그 파일뿐입니다.--stop-never
는 일반적으로 라이브 바이너리 로그 백업을 만드는 데--raw
와 함께 사용되지만,--raw
없이 사용하여 서버가 로그 이벤트를 생성함에 따라 그들을 지속적으로 텍스트 표시 할 수 있습니다.이 옵션은 MySQL 5.6.0에서 추가되었습니다.
--stop-never-slave-server-id =
id
--stop-never
를 사용하면 mysqlbinlog는 서버에 연결할 때 서버 ID 65535을보고합니다.--stop-never-slave-server-id
는 보고서 서버 ID를 명시 적으로 지정합니다. 슬레이브 서버 또는 다른 mysqlbinlog 프로세스의 ID와의 충돌을 피하기 위해 사용할 수 있습니다. 섹션 4.6.8.4 "mysqlbinlog 서버 ID 지정" 을 참조하십시오.이 옵션은 MySQL 5.6.0에서 추가되었습니다.
--stop-position =
N
N
이상의 위치를 가진 첫 번째 이벤트에서 바이너리 로그를 읽기를 종료합니다. 이 옵션은 명령 행에서 마지막에 지명 된 로그 파일에 적용됩니다.이 옵션은 시점 복구에 유용합니다. 섹션 7.3 "백업 및 복구 전략의 예" 를 참조하십시오.
--to-last-log
,-t
MySQL 서버에서 요청 된 바이너리 로그의 마지막으로 종료하지 않고, 마지막 바이너리 로그의 끝까지 계속 출력합니다. 동일한 MySQL 서버에 출력을 전송 한 경우 무한 루프 될 수 있습니다. 이 옵션은
--read-from-remote-server
가 필요합니다.--user=
,user_name
-u
user_name
원격 서버에 연결할 때 사용하는 MySQL 사용자 이름.
--verbose
,-v
행 이벤트를 재 구축하고 댓글 된 SQL 문으로 표시합니다. 이 옵션을 두 번 지정하면 출력은 컬럼 데이터 형과 일부 메타 데이터를 나타내는 주석이 포함됩니다.
--base64-output
및--verbose
줄 이벤트 출력에 영향을 예제는 섹션 4.6.8.2 "mysqlbinlog 행 이벤트보기" 를 참조하십시오.--verify-binlog-checksum
,-c
바이너리 로그 파일의 체크섬을 확인합니다. 이 옵션은 MySQL 5.6.1에서 추가되었습니다.
--version
,-V
버전 정보를 출력하고 종료합니다.
MySQL 5.6.11 이전에는 표시된 mysqlbinlog의 버전 번호는 3.3이었습니다. MySQL 5.6.11 이후로는 3.4입니다. (Bug # 15894381, Bug # 67643)
--
구문을 사용하여 다음 변수를 설정할 수도 있습니다. var_name
= value
open_files_limit
예약 오픈 파일 디스크립터의 수를 지정합니다.
mysqlbinlog의 출력을 mysql 클라이언트에 파이프하여 바이너리 로그에 포함 된 이벤트를 실행할 수 있습니다. 이 기술은 오래된 백업이있는 경우에 오류를 복구하는 데 사용됩니다 ( 섹션 7.5 "바이너리 로그를 사용한 시점 (증분) 복구" 를 참조하십시오). 예 :
shell> mysqlbinlog binlog.000001 | mysql -u root -p
또는 :
shell> mysqlbinlog binlog.[0-9]* | mysql -u root -p
mysqlbinlog가 생성 한 문에 BLOB
값이 포함될 가능성이있는 경우, mysql이 그들을 처리 할 때 문제가 발생할 수 있습니다. 이 경우 mysql을 --binary-mode
옵션에서 시작합니다.
문 로그를 먼저 변경해야하는 경우 (예를 들어, 어떤 이유로 실행하지 않는 문을 제거하는 등) 대신 mysqlbinlog의 출력을 텍스트 파일로 리디렉션 할 수 있습니다.파일을 편집 한 후 mysql 프로그램의 입력으로 사용하여 거기에 포함 된 문을 실행합니다.
shell>mysqlbinlog binlog.000001> tmpfile
shell> ...edit tmpfile
... shell>mysql -u root -p <tmpfile
mysqlbinlog 은 --start-position
옵션에서 시작 된 경우, 바이너리 로그의 오프셋이 지정된 위치 이상의 이벤트 만 표시합니다 (지정된 위치는 하나의 이벤트의 시작 위치와 일치해야 합니다). 지정된 날짜와 시간을 가지는 이벤트를 감지 할 때 정지 및 시작하는 옵션도 있습니다. 이렇게하면 --stop-datetime
옵션을 사용하여 특정 시점 복구를 수행 할 수 있습니다 (예를 들어, "데이터베이스를 오늘 10:30 am 현재 상태로 롤백하는 ' 것이 가능합니다).
MySQL 서버에 실행하는 여러 바이너리 로그가있는 경우 안전한 방법은 서버에 하나의 연결을 사용하여 그들 모두를 처리하는 것입니다. 이것은 안전하지 않은 가능성이 있음을 나타내는 예입니다.
shell>mysqlbinlog binlog.000001 | mysql -u root -p # DANGER!
shell>mysqlbinlog binlog.000002 | mysql -u root -p # DANGER!
서버에 대해 이렇게 여러 연결을 사용하여 바이너리 로그를 처리하려면 먼저 로그 파일에 CREATE TEMPORARY TABLE
문이 포함되어 있으며, 두 번째 로그는 임시 테이블을 사용하는 명령문이 포함 되어 있으면 문제가 발생합니다. 첫 번째 mysql 프로세스가 종료하면 서버는 임시 테이블을 삭제합니다. 두 번째 mysql 프로세스에서 테이블의 사용을 시도하면 서버는 "알 수없는 테이블" 로보고합니다.
이러한 문제를 해결하려면 하나 의 mysql 프로세스를 사용하여 처리하는 모든 바이너리 로그의 내용을 실행합니다. 이것은 그것을 실행하는 하나의 방법입니다.
shell> mysqlbinlog binlog.000001 binlog.000002 | mysql -u root -p
또 다른 방법은 모든 로그를 하나의 파일에 기록한 다음 그 파일을 처리하는 것입니다.
shell>mysqlbinlog binlog.000001> /tmp/statements.sql
shell>mysqlbinlog binlog.000002 >> /tmp/statements.sql
shell>mysql -u root -p -e "source /tmp/statements.sql"
mysqlbinlog 는 원본 데이터 파일없이 LOAD DATA INFILE
동작을 재현하는 출력을 생성 할 수 있습니다. mysqlbinlog 은 데이터를 임시 파일에 복사하고 해당 파일을 참조하는 LOAD DATA LOCAL INFILE
명령문을 작성한다. 이러한 파일이 기록 될 디렉토리의 기본 위치는 시스템마다 다릅니다. 디렉토리를 명시 적으로 지정하려면 --local-load
옵션을 사용합니다.
mysqlbinlog 은 LOAD DATA INFILE
문을 LOAD DATA LOCAL INFILE
문으로 변환하기 위해 (즉, LOCAL
를 추가합니다) 문의 처리에 사용하는 클라이언트와 서버 모두가 LOCAL
기능을 사용하여 구성되어 있지 않으면 안됩니다. 섹션 6.1.6 "LOAD DATA LOCAL의 보안 문제" 를 참조하십시오.
LOAD DATA LOCAL
명령문 용으로 생성 된 임시 파일이 문을 사용자가 실제로 실행될 때까지 필요하기 때문에 자동으로 삭제되지 않습니다 . 문 로그가 필요 없어진 시점에서 사용자가 임시 파일을 삭제하도록하십시오. 이 파일은 임시 파일 디렉토리에 존재하고 original_file_name - # - #
와 같은 이름이 붙어 있습니다.