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-ddb_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_named: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_setgtid_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-hhost_name지정된 호스트의 MySQL 서버에서 바이너리 로그를 가져옵니다.
--include-gtids =gtid_setgtid_set에 나열된 그룹 만 표시합니다. MySQL 5.6.5에서 추가되었습니다.--local-load=,path-lpath지정된 디렉토리에
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-oN로그의 첫 번째
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-Pport_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 =typeCOM_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-rname--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_nameSET NAMES문을 출력에 추가하여 로그 파일 처리에 사용되는 문자 세트를 지정합니다.charset_name--shared-memory-base-name =nameWindows에서 공유 메모리를 사용하여 생성되는 로컬 서버에 연결 공유 메모리 이름. 기본값은
MYSQL입니다. 공유 메모리 이름은 대소 문자를 구분합니다.공유 메모리 연결을 가능하게하려면 서버는
--shared-memory옵션으로 시작해야합니다.--short-form,-s추가 정보 및 행 기반의 이벤트없이 로그에 포함 된 명령문만을 표시합니다. 이것은 테스트 전용 프로덕션 시스템에 사용해서는 없습니다.
--skip-gtids [= (true | false)]출력에 GTID을 표시하지 않습니다. 이것은 다음의 예와 같이 GTID를 포함하는 하나 이상의 바이너리 로그에서 덤프 파일로 내보낼 경우에 필요합니다.
shell>
mysqlbinlog --skip-gtids binlog.000001 > /tmp/dump.sqlshell>mysqlbinlog --skip-gtids binlog.000002 >> /tmp/dump.sqlshell>mysql -u root -p -e "source /tmp/dump.sql"그렇지 않은 경우에는이 옵션을 프로덕션 환경에서 사용하는 것은 일반적으로 권장되지 않습니다.
이 옵션은 MySQL 5.6.5에서 추가되었습니다.
--socket=,path-Spathlocalhost에 연결하는 데 사용되는 Unix 소켓 파일 또는 Windows에서 사용하는 명명 된 파이프의 이름.--start-datetime =datetimedatetime인수와 동일하거나 느린 타임 스탬프를 가지는 첫 번째 이벤트에서 바이너리 로그를 읽기 시작합니다.datetime값은 mysqlbinlog를 실행하는 컴퓨터의 로컬 시간대에 상대적입니다. 값은DATETIME또는TIMESTAMP데이터 유형에 받아 들일 수있는 형식으로하십시오. 예 :shell>mysqlbinlog --start-datetime="2005-12-25 11:25:56" binlog.000003이 옵션은 시점 복구에 유용합니다. 섹션 7.3 "백업 및 복구 전략의 예" 를 참조하십시오.
--start-position=,N-jNN이상의 위치를 가진 첫 번째 이벤트에서 바이너리 로그를 읽기 시작합니다. 이 옵션은 명령 행에서 첫 번째로 지명 된 로그 파일에 적용됩니다.이 옵션은 시점 복구에 유용합니다. 섹션 7.3 "백업 및 복구 전략의 예" 를 참조하십시오.
--stop-datetime =datetimedatetime인수와 동일하거나 느린 타임 스탬프를 가지는 첫 번째 이벤트에서 바이너리 로그를 읽기를 종료합니다. 이 옵션은 시점 복구에 유용합니다.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 =NN이상의 위치를 가진 첫 번째 이벤트에서 바이너리 로그를 읽기를 종료합니다. 이 옵션은 명령 행에서 마지막에 지명 된 로그 파일에 적용됩니다.이 옵션은 시점 복구에 유용합니다. 섹션 7.3 "백업 및 복구 전략의 예" 를 참조하십시오.
--to-last-log,-tMySQL 서버에서 요청 된 바이너리 로그의 마지막으로 종료하지 않고, 마지막 바이너리 로그의 끝까지 계속 출력합니다. 동일한 MySQL 서버에 출력을 전송 한 경우 무한 루프 될 수 있습니다. 이 옵션은
--read-from-remote-server가 필요합니다.--user=,user_name-uuser_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> tmpfileshell> ...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.sqlshell>mysqlbinlog binlog.000002 >> /tmp/statements.sqlshell>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 - # - # 와 같은 이름이 붙어 있습니다.