Loading...
MySQL 9.5 Reference Manual 9.5의 6.6.9 mysqlbinlog — Utility for Processing Binary Log Files의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
6.6.9.1 mysqlbinlog Hex Dump Format 6.6.9.2 mysqlbinlog Row Event Display 6.6.9.3 Using mysqlbinlog to Back Up Binary Log Files 6.6.9.4 Specifying the mysqlbinlog Server ID
서버의 binary log는 데이터베이스 내용 변경을 서술하는 “events”를 담고 있는 파일들로 구성됩니다. 서버는 이 파일들을 binary 포맷으로 기록합니다. 그 내용을 text 포맷으로 표시하려면 mysqlbinlog 유틸리티를 사용하십시오. 또한 복제를 설정한 환경에서 replica 서버가 기록한 relay log 파일의 내용을 표시하는 데에도 mysqlbinlog를 사용할 수 있습니다. relay log는 binary log와 동일한 포맷을 사용하기 때문입니다. binary log와 relay log는 Section 7.4.4, “The Binary Log” 및 Section 19.2.4, “Relay Log and Replication Metadata Repositories”에서 추가로 설명합니다.
mysqlbinlog을 다음과 같이 호출합니다:
1mysqlbinlog [options] log_file ...
예를 들어, binlog.000003이라는 이름의 binary log 파일 내용을 표시하려면 다음 명령을 사용합니다:
1mysqlbinlog binlog.000003
출력에는 binlog.000003에 포함된 events가 들어 있습니다. statement 기반 로깅의 경우, event 정보에는 SQL 문, 그것이 실행된 서버의 ID, 문이 실행된 타임스탬프, 실행에 소요된 시간 등이 포함됩니다. row 기반 로깅의 경우, event는 SQL 문이 아니라 row 변경을 나타냅니다. 로깅 모드에 대한 정보는 Section 19.2.1, “Replication Formats”를 참조하십시오.
events 앞에는 추가 정보를 제공하는 헤더 주석이 붙습니다. 예를 들면 다음과 같습니다:
1# at 141 2#100309 9:28:36 server id 123 end_log_pos 245 3 Query thread_id=3350 exec_time=11 error_code=0
첫 번째 줄에서 at 다음의 숫자는 해당 event가 binary log 파일 내에서 시작되는 위치, 즉 파일 오프셋(시작 위치)을 나타냅니다.
두 번째 줄은 event가 발생한 원본 서버에서 문이 시작된 날짜와 시간을 나타내며, 이 타임스탬프는 복제 시 replica 서버로 전달됩니다. server id는 event가 발생한 서버의 server_id 값입니다. end_log_pos는 다음 event가 시작되는 위치(즉, 현재 event의 끝 위치 + 1)를 나타냅니다. thread_id는 어떤 스레드가 event를 실행했는지 나타냅니다. exec_time은 복제 소스 서버에서 event 실행에 소요된 시간입니다. replica에서는 replica에서의 실행 종료 시간에서 소스에서의 실행 시작 시간을 뺀 값이며, 이 차이는 복제가 소스에 비해 얼마나 지연되는지 나타내는 지표로 사용됩니다. error_code는 event 실행 결과를 나타냅니다. 0이면 오류가 발생하지 않았음을 의미합니다.
참고
event 그룹을 사용할 때는 event의 파일 오프셋들이 함께 그룹으로 묶이고, event의 주석도 함께 그룹으로 묶일 수 있습니다. 이러한 그룹으로 묶인 events를 빈 파일 오프셋으로 오인하지 않도록 주의하십시오.
mysqlbinlog의 출력은 (예를 들어 mysql에 입력으로 넘겨) log 안의 문들을 다시 실행하는 데 사용할 수 있습니다. 이는 예기치 않은 서버 종료 이후 복구 작업에 유용합니다. 다른 사용 예에 대해서는 이 section의 후반부 및 Section 9.5, “Point-in-Time (Incremental) Recovery”의 설명을 참조하십시오. mysqlbinlog이 사용하는 내부용 BINLOG 문을 실행하려면, 사용자에게 BINLOG_ADMIN 권한(또는 더 이상 사용되지 않는 SUPER 권한), 혹은 REPLICATION_APPLIER 권한과 각 log event를 실행하기 위한 적절한 권한이 필요합니다.
mysqlbinlog을 사용하면 binary log 파일을 직접 읽어 로컬 MySQL 서버에 적용할 수 있습니다. 또한 --read-from-remote-server 옵션을 사용하여 원격 서버의 binary log를 읽을 수도 있습니다. 원격 binary log를 읽기 위해서는 서버에 어떻게 연결할지 지정하는 연결 파라미터 옵션을 함께 지정할 수 있습니다. 이 옵션들은 --host, --password, --port, --protocol, --socket, --user입니다.
binary log 파일이 암호화되어 있는 경우, mysqlbinlog은 이를 직접 읽을 수는 없지만, --read-from-remote-server 옵션을 사용하여 서버에서 읽어올 수 있습니다. binary log 파일은 서버의 binlog_encryption 시스템 변수이 ON으로 설정된 경우 암호화됩니다. SHOW BINARY LOGS 문은 특정 binary log 파일이 암호화되었는지 여부를 보여줍니다. 암호화된 binary log 파일과 암호화되지 않은 binary log 파일은, 암호화된 log 파일의 파일 헤더 시작 부분에 있는 매직 넘버(0xFD62696E)가 암호화되지 않은 log 파일에서 사용되는 매직 넘버(0xFE62696E)와 다르므로 이를 통해 구분할 수 있습니다. 참고로, 암호화된 binary log 파일을 직접 읽으려고 시도하면 mysqlbinlog은 적절한 오류를 반환하지만, 예전 버전의 mysqlbinlog은 해당 파일을 binary log 파일로 인식하지 못합니다. binary log 암호화에 대한 자세한 내용은 Section 19.3.2, “Encrypting Binary Log Files and Relay Log Files”를 참조하십시오.
binary log 트랜잭션 페이로드가 압축된 경우, mysqlbinlog은 트랜잭션 페이로드를 자동으로 압축 해제하고 디코딩하여, 압축되지 않은 events와 동일한 방식으로 출력합니다. binlog_transaction_compression이 ON으로 설정되어 있으면, 트랜잭션 페이로드는 압축된 후 하나의 event(Transaction_payload_event)로 서버의 binary log 파일에 기록됩니다. --verbose 옵션을 사용하면, mysqlbinlog은 사용된 압축 알고리즘, 원래 수신된 압축 페이로드 크기, 압축 해제 후의 페이로드 크기를 나타내는 주석을 추가합니다.
참고
압축된 트랜잭션 페이로드의 일부였던 개별 event에 대해 mysqlbinlog이 보고하는 end position(end_log_pos)은 원래 압축 페이로드의 end position과 동일합니다. 따라서 여러 개의 압축 해제된 events가 동일한 end position을 가질 수 있습니다.
트랜잭션 페이로드가 이미 압축되어 있는 경우에는 mysqlbinlog 자체의 연결 압축이 수행하는 작업이 줄어들지만, 여전히 압축되지 않은 트랜잭션과 헤더에는 적용됩니다.
binary log 트랜잭션 압축에 대한 자세한 내용은 Section 7.4.4.5, “Binary Log Transaction Compression”를 참조하십시오.
큰 binary log에 대해 mysqlbinlog을 실행할 때는, 결과 파일을 위해 파일 시스템에 충분한 공간이 있는지 주의해야 합니다. mysqlbinlog이 임시 파일에 사용할 디렉터리를 설정하려면 TMPDIR 환경 변수를 사용하십시오.
mysqlbinlog은 SQL 문을 실행하기 전에 pseudo_replica_mode 값을 true로 설정합니다. 이 시스템 변수는 XA 트랜잭션, original_commit_timestamp 복제 지연 타임스탬프, original_server_version 시스템 변수, 지원되지 않는 SQL 모드의 처리에 영향을 줍니다.
mysqlbinlog은 명령줄이나 옵션 파일의 [mysqlbinlog], [client] 그룹에서 지정할 수 있는 다음 옵션들을 지원합니다. MySQL 프로그램에서 사용하는 옵션 파일에 대한 정보는 Section 6.2.2.2, “Using Option Files”를 참조하십시오.
Table 6.21 mysqlbinlog Options
| Option Name | Description |
|---|---|
| --base64-output | base-64 인코딩을 사용하여 binary log 엔트리 출력 |
| --bind-address | MySQL 서버에 연결할 때 사용할 네트워크 인터페이스 지정 |
| --binlog-row-event-max-size | binary log의 최대 event 크기 |
| --character-sets-dir | 문자 집합이 설치된 디렉터리 |
| --compress | 클라이언트와 서버 간에 전송되는 모든 정보 압축 |
| --compression-algorithms | 서버에 대한 연결에서 허용되는 압축 알고리즘 |
| --connection-server-id | 테스트 및 디버깅용. 적용 가능한 기본값과 기타 세부 사항은 본문 참조 |
| --database | 지정한 데이터베이스에 대한 엔트리만 출력 |
| --debug | 디버깅 로그 작성 |
| --debug-check | 프로그램 종료 시 디버깅 정보 출력 |
| --debug-info | 프로그램 종료 시 디버깅 정보, 메모리, CPU 통계 출력 |
| --defaults-extra-file | 일반 옵션 파일 외에 지정한 옵션 파일도 읽음 |
| --defaults-file | 지정한 옵션 파일만 읽음 |
| --defaults-group-suffix | 옵션 그룹 suffix 값 |
| --disable-log-bin | binary 로깅 비활성화 |
| --force-if-open | open 상태이거나 제대로 닫히지 않은 binary log 파일도 읽음 |
| --force-read | 인식할 수 없는 binary log event를 읽으면 경고를 출력 |
| --get-server-public-key | 서버에서 RSA public key 요청 |
| --help | 도움말 메시지 표시 후 종료 |
| --hexdump | 주석으로 log의 hex dump 표시 |
| --host | MySQL 서버가 위치한 호스트 |
| --idempotent | 이 세션에서만 binary log 업데이트 처리 시 서버를 idemponent 모드로 동작하도록 설정 |
| --local-load | 지정한 디렉터리에 LOAD DATA용 로컬 임시 파일 준비 |
| --login-path | .mylogin.cnf에서 로그인 경로 옵션 읽기 |
| --no-defaults | 옵션 파일을 읽지 않음 |
| --no-login-paths | 로그인 경로 파일에서 로그인 경로를 읽지 않음 |
| --offset | log에서 처음 N개의 엔트리 건너뜀 |
| --password | 서버에 연결할 때 사용할 비밀번호 |
| --port | 연결에 사용할 TCP/IP 포트 번호 |
| --print-defaults | 프로그램 이름과 옵션 파일에서 읽어온 기본 옵션 출력 |
| --print-table-metadata | 테이블 메타데이터 출력 |
| --protocol | 사용할 전송 프로토콜 |
| --raw | events를 raw (binary) 포맷으로 output 파일에 기록 |
| --read-from-remote-master | 로컬 log 파일 대신 MySQL replication 소스 서버에서 binary log를 읽기 |
| --read-from-remote-server | 로컬 log 파일 대신 MySQL 서버에서 binary log를 읽기 |
| --read-from-remote-source | 로컬 log 파일 대신 MySQL replication 소스 서버에서 binary log를 읽기 |
| --require-row-format | row 기반 binary 로깅 포맷 요구 |
| --result-file | output을 지정한 파일로 리디렉트 |
| --rewrite-db | row 기반 포맷으로 작성된 log를 되재생할 때 데이터베이스에 대한 rewrite 규칙 생성. 여러 번 사용 가능 |
| --server-id | 지정한 server ID를 가진 서버가 생성한 events만 추출 |
| --server-id-bits | server-id-bits가 최대값보다 작게 설정된 mysqld가 작성한 binary log에서 server ID를 어떻게 해석할지 mysqlbinlog에 알림; MySQL Cluster용 mysqlbinlog에서만 지원 |
| --server-public-key-path | RSA public key를 담고 있는 파일의 경로 이름 |
| --set-charset | output에 SET NAMES charset_name 문 추가 |
| --shared-memory-base-name | shared-memory 연결용 shared-memory 이름(Windows 전용) |
| --short-form | log에 포함된 문만 표시 |
| --socket | 사용할 Unix 소켓 파일 또는 Windows named pipe |
| --ssl-ca | 신뢰된 SSL 인증 기관 목록을 담고 있는 파일 |
| --ssl-capath | 신뢰된 SSL 인증 기관 인증서 파일이 들어 있는 디렉터리 |
| --ssl-cert | X.509 인증서를 담고 있는 파일 |
| --ssl-cipher | 연결 암호화에 사용할 수 있는 cipher |
| --ssl-fips-mode | 클라이언트 측에서 FIPS 모드를 활성화할지 여부 |
| --ssl-key | X.509 키를 담고 있는 파일 |
| --ssl-mode | 서버와의 연결에 원하는 보안 상태 |
| --ssl-session-data | SSL 세션 데이터를 담고 있는 파일 |
| --ssl-session-data-continue-on-failed-reuse | 세션 재사용 실패 시에도 연결을 수립할지 여부 |
| --start-datetime | 타임스탬프가 인자로 지정한 datetime 이상인 첫 event부터 binary log 읽기 |
| --start-position | position이 인자 이상인 첫 event부터 binary log 디코드 |
| --stop-datetime | 타임스탬프가 인자로 지정한 datetime 이상인 첫 event에서 binary log 읽기 중지 |
| --stop-never | 마지막 binary log 파일을 읽은 뒤에도 서버와의 연결 유지 |
| --stop-never-slave-server-id | 서버에 연결할 때 보고할 slave server ID |
| --stop-position | position이 인자 이상인 첫 event에서 binary log 디코드 중지 |
| --tls-ciphersuites | TLSv1.3 encrypted connections에 허용되는 ciphersuite |
| --tls-sni-servername | 클라이언트가 제공하는 서버 이름 |
| --tls-version | encrypted connections에 허용되는 TLS 프로토콜 |
| --to-last-log | MySQL 서버에서 요청한 binary log의 끝에서 멈추지 않고 마지막 binary log의 끝까지 계속 출력 |
| --user | 서버에 연결할 때 사용할 MySQL 사용자 이름 |
| --verbose | row events를 SQL 문으로 재구성하여 출력 |
| --verify-binlog-checksum | binary log의 checksum 검증 |
| --version | 버전 정보 표시 후 종료 |
| --zstd-compression-level | zstd 압축을 사용하는 서버 연결의 압축 레벨 |
| Option Name | Description |
|---|
--help, -?| Property | Value |
|---|---|
| Command-Line Format | --help |
help 메시지를 표시하고 종료합니다.
| Property | Value |
|---|---|
| Command-Line Format | --base64-output=value |
| Type | String |
| Default Value | AUTO |
| Valid Values | AUTO<br>NEVER<br>DECODE-ROWS |
이 옵션은 events를 BINLOG 문을 사용하여 base-64 문자열로 인코딩해 표시할 시점을 결정합니다. 허용되는 값은 다음과 같습니다(대소문자 구분 없음):
AUTO("automatic") 또는 UNSPEC("unspecified")는 포맷 설명 events 및 row events처럼 필요한 경우에만 BINLOG 문을 자동으로 표시합니다. --base64-output 옵션을 지정하지 않으면, --base64-output=AUTO와 동일한 효과를 갖습니다.
Note
binary log 파일 내용을 다시 실행하기 위해 mysqlbinlog의 output을 사용하려는 경우, 자동 BINLOG 표시가 유일하게 안전한 동작입니다. 다른 옵션 값들은 모든 events를 실행 가능한 형태로 포함하지 않는 output을 생성할 수 있으므로, 디버깅이나 테스트 용도에만 사용해야 합니다.
NEVER는 BINLOG 문을 표시하지 않도록 합니다. row event가 발견되어 이를 표시하기 위해 BINLOG이 필요하면 mysqlbinlog은 오류와 함께 종료합니다.
DECODE-ROWS는 row events를 디코딩하여, --verbose 옵션도 함께 지정했을 때 주석 처리된 SQL 문으로 표시하겠다는 의도를 mysqlbinlog에 알려줍니다. NEVER와 마찬가지로 DECODE-ROWS는 BINLOG 문 표시를 억제하지만, NEVER와 달리 row event가 발견되어도 오류로 종료하지 않습니다.
row event 출력에서 --base64-output과 --verbose의 효과를 보여주는 예시는 Section 6.6.9.2, “mysqlbinlog Row Event Display”를 참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --bind-address=ip_address |
여러 개의 네트워크 인터페이스를 가진 컴퓨터에서, MySQL 서버에 연결할 때 사용할 인터페이스를 이 옵션으로 선택합니다.
| Property | Value |
|---|---|
| Command-Line Format | --binlog-row-event-max-size=# |
| Type | Numeric |
| Default Value | 4294967040 |
| Minimum Value | 256 |
| Maximum Value | 18446744073709547520 |
row 기반 binary log event의 최대 크기를 바이트 단위로 지정합니다. 가능하다면 row는 이 크기보다 작은 events로 그룹화됩니다. 값은 256의 배수여야 합니다. 기본값은 4GB입니다.
| Property | Value |
|---|---|
| Command-Line Format | --character-sets-dir=dir_name |
| Type | Directory name |
문자 집합이 설치된 디렉터리입니다. Section 12.15, “Character Set Configuration”을 참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | `--compress[={OFF |
| Deprecated | Yes |
| Type | Boolean |
| Default Value | OFF |
가능한 경우 클라이언트와 서버 간에 전송되는 모든 정보를 압축합니다. Section 6.2.8, “Connection Compression Control”를 참조하십시오.
이 옵션은 사용 중단(deprecated)되었습니다. 향후 MySQL 버전에서 제거될 예정입니다. Configuring Legacy Connection Compression를 참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --compression-algorithms=value |
| Type | Set |
| Default Value | uncompressed |
| Valid Values | zlib<br>zstd<br>uncompressed |
서버 연결에서 허용되는 압축 알고리즘입니다. 사용 가능한 알고리즘은 protocol_compression_algorithms 시스템 변수와 동일합니다. 기본값은 uncompressed입니다.
자세한 내용은 Section 6.2.8, “Connection Compression Control”을 참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --connection-server-id=#] |
| Type | Integer |
| Default Value | 0 (1) |
| Minimum Value | 0 (1) |
| Maximum Value | 4294967295 |
--connection-server-id는 mysqlbinlog이 서버에 연결할 때 보고할 server ID를 지정합니다. 이는 replica 서버나 다른 mysqlbinlog 프로세스와 ID 충돌을 피하는 데 사용할 수 있습니다.
--read-from-remote-server 옵션이 지정된 경우, mysqlbinlog은 서버에 마지막 log 파일을 전송한 후 연결을 끊으라는 의미로 server ID 0을 보고합니다(nonblocking 동작). 서버와의 연결을 유지하기 위해 --stop-never 옵션도 지정된 경우, 기본적으로 mysqlbinlog은 0 대신 server ID 1을 보고하며, 필요 시 --connection-server-id를 사용하여 해당 server ID를 다른 값으로 대체할 수 있습니다. Section 6.6.9.4, “Specifying the mysqlbinlog Server ID”를 참조하십시오.
--database=db_name, -d db_name| Property | Value |
|---|---|
| Command-Line Format | --database=db_name |
| Type | String |
이 옵션은 mysqlbinlog이 (로컬 log에 한해) USE를 통해 _db_name_이 기본 데이터베이스로 선택되어 있는 동안 발생하는 binary log 엔트리만 출력하도록 합니다.
mysqlbinlog의 --database 옵션은 mysqld의 --binlog-do-db 옵션과 비슷하지만, 하나의 데이터베이스만 지정할 수 있습니다. --database를 여러 번 지정하면 마지막에 지정한 것만 사용됩니다.
이 옵션의 효과는 statement 기반 로깅 포맷이 사용되는지, row 기반 로깅 포맷이 사용되는지에 따라 달라지며, 이는 --binlog-do-db 옵션의 효과가 statement 기반 또는 row 기반 로깅 중 어느 것이 사용되는지에 따라 달라지는 것과 같은 방식입니다.
Statement 기반 로깅. --database 옵션은 다음과 같이 동작합니다:
_db_name_이 기본 데이터베이스인 동안에는, 해당 문이 _db_name_의 테이블을 수정하든 다른 데이터베이스의 테이블을 수정하든 관계없이 그 문을 출력합니다.
_db_name_이 기본 데이터베이스로 선택되지 않은 경우에는, 해당 문이 _db_name_의 테이블을 수정하더라도 그 문을 출력하지 않습니다.
단, CREATE DATABASE, ALTER DATABASE, DROP DATABASE에 대해서는 예외가 있습니다. 이들 문에서 _생성, 변경 또는 삭제_되는 데이터베이스는, 해당 문을 출력할지를 결정할 때 기본 데이터베이스로 간주됩니다.
statement 기반 로깅을 사용하여 다음과 같은 문들을 실행해 binary log를 생성했다고 가정해 봅니다:
1INSERT INTO test.t1 (i) VALUES(100); 2INSERT INTO db2.t2 (j) VALUES(200); 3USE test; 4INSERT INTO test.t1 (i) VALUES(101); 5INSERT INTO t1 (i) VALUES(102); 6INSERT INTO db2.t2 (j) VALUES(201); 7USE db2; 8INSERT INTO test.t1 (i) VALUES(103); 9INSERT INTO db2.t2 (j) VALUES(202); 10INSERT INTO t2 (j) VALUES(203);
mysqlbinlog --database=test은 기본 데이터베이스가 설정되어 있지 않으므로 처음 두 개의 INSERT 문은 출력하지 않습니다. USE test 이후의 세 개의 INSERT 문은 출력하지만, USE db2 이후의 세 개의 INSERT 문은 출력하지 않습니다.
mysqlbinlog --database=db2 역시 기본 데이터베이스가 없기 때문에 처음 두 개의 INSERT 문은 출력하지 않습니다. USE test 이후의 세 개의 INSERT 문은 출력하지 않고, USE db2 이후의 세 개의 INSERT 문만 출력합니다.
Row 기반 로깅. row 기반 로깅의 경우, mysqlbinlog은 _db_name_에 속한 테이블을 변경하는 엔트리만 출력합니다. 기본 데이터베이스는 여기에 영향을 미치지 않습니다. 앞에서 설명한 binary log가 statement 기반 로깅이 아니라 row 기반 로깅을 사용해 생성되었다고 가정하면, mysqlbinlog --database=test은 USE를 사용했는지, 기본 데이터베이스가 무엇인지에 상관없이 test 데이터베이스의 t1을 수정하는 엔트리만 출력합니다.
서버가 binlog_format을 MIXED로 설정해 실행 중이고, --database 옵션과 함께 mysqlbinlog을 사용할 수 있기를 원한다면, 변경되는 테이블이 USE로 선택된 데이터베이스에 속해 있도록 해야 합니다(특히 cross-database 업데이트를 사용하지 않아야 합니다).
--rewrite-db 옵션과 함께 사용할 경우, 먼저 --rewrite-db 옵션이 적용되고, 그다음에 rewrite된 데이터베이스 이름을 기준으로 --database 옵션이 적용됩니다. 옵션을 제공하는 순서는 이 동작에 영향을 미치지 않습니다.
--debug[=debug_options], -# [debug_options]| Property | Value |
|---|---|
| Command-Line Format | --debug[=debug_options] |
| Type | String |
| Default Value | d:t:o,/tmp/mysqlbinlog.trace |
디버깅 로그를 작성합니다. 일반적인 debug_options 문자열은 d:t:o,file_name 형식입니다. 기본값은 d:t:o,/tmp/mysqlbinlog.trace입니다.
이 옵션은 MySQL을 WITH_DEBUG로 빌드한 경우에만 사용할 수 있습니다. Oracle에서 제공하는 MySQL 릴리스 바이너리는 이 옵션을 사용하여 빌드되지 않습니다.
| Property | Value |
|---|---|
| Command-Line Format | --debug-check |
| Type | Boolean |
| Default Value | FALSE |
프로그램이 종료될 때 일부 디버깅 정보를 출력합니다.
이 옵션은 MySQL을 WITH_DEBUG로 빌드한 경우에만 사용할 수 있습니다. Oracle에서 제공하는 MySQL 릴리스 바이너리는 이 옵션을 사용하여 빌드되지 않습니다.
| Property | Value |
|---|---|
| Command-Line Format | --debug-info |
| Type | Boolean |
| Default Value | FALSE |
프로그램이 종료될 때 디버깅 정보와 메모리 및 CPU 사용 통계를 출력합니다.
이 옵션은 MySQL을 WITH_DEBUG로 빌드한 경우에만 사용할 수 있습니다. Oracle에서 제공하는 MySQL 릴리스 바이너리는 이 옵션을 사용하여 빌드되지 않습니다.
| Property | Value |
|---|---|
| Command-Line Format | --default-auth=plugin |
| Type | String |
어떤 클라이언트 측 인증 플러그인을 사용할지에 대한 힌트입니다. Section 8.2.17, “Pluggable Authentication”를 참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --defaults-extra-file=file_name |
| Type | File name |
global 옵션 파일 다음, 그러나 (Unix에서는) 사용자 옵션 파일 이전에 이 옵션 파일을 읽습니다. 파일이 존재하지 않거나 접근할 수 없는 경우 오류가 발생합니다. _file_name_이 절대 경로 이름이 아니면 현재 디렉터리를 기준으로 해석합니다.
이 옵션 및 다른 옵션 파일 관련 옵션들에 대한 추가 정보는 Section 6.2.2.3, “Command-Line Options that Affect Option-File Handling”를 참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --defaults-file=file_name |
| Type | File name |
지정한 옵션 파일만 사용합니다. 파일이 존재하지 않거나 접근할 수 없는 경우 오류가 발생합니다. _file_name_이 절대 경로 이름이 아니면 현재 디렉터리를 기준으로 해석합니다.
예외: --defaults-file가 지정된 경우에도 클라이언트 프로그램은 .mylogin.cnf를 읽습니다.
이 옵션 및 다른 옵션 파일 관련 옵션들에 대한 추가 정보는 Section 6.2.2.3, “Command-Line Options that Affect Option-File Handling”를 참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --defaults-group-suffix=str |
| Type | String |
일반적인 옵션 그룹뿐 아니라, 일반적인 이름에 str suffix가 붙은 그룹도 읽습니다. 예를 들어, mysqlbinlog은 기본적으로 [client]와 [mysqlbinlog] 그룹을 읽습니다. 이 옵션을 --defaults-group-suffix=_other로 지정하면, mysqlbinlog은 [client_other], [mysqlbinlog_other] 그룹도 함께 읽습니다.
이 옵션 및 다른 옵션 파일 관련 옵션들에 대한 추가 정보는 Section 6.2.2.3, “Command-Line Options that Affect Option-File Handling”를 참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --disable-log-bin |
binary 로깅을 비활성화합니다. 이는 --to-last-log 옵션을 사용하고 output을 동일한 MySQL 서버로 보내는 경우, 끝없는 루프를 방지하는 데 유용합니다. 또한 예기치 않은 종료 이후 복구 시, 이미 log에 기록된 문을 중복 실행하지 않도록 하기 위해서도 유용합니다.
이 옵션은 binary 로깅을 비활성화하기 위해 mysqlbinlog의 output에 SET sql_log_bin = 0 문을 포함시키도록 합니다. sql_log_bin 시스템 변수의 세션 값을 조작하는 것은 제한된 작업이므로, 이 옵션을 사용하려면 제한된 세션 변수를 설정할 수 있는 충분한 권한이 필요합니다. Section 7.1.9.1, “System Variable Privileges”를 참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --exclude-gtids=gtid_set |
| Type | String |
| Default Value | `` |
_gtid_set_에 나열된 그룹을 모두 출력에서 제외합니다.
--force-if-open, -F| Property | Value |
|---|---|
| Command-Line Format | --force-if-open |
open 상태이거나 제대로 닫히지 않은 (IN_USE 플래그가 설정된) binary log 파일도 읽으며, 파일이 잘려진 event로 끝나더라도 실패하지 않습니다.
IN_USE 플래그는 현재 서버가 기록 중인 binary log에만 설정됩니다. 서버가 크래시한 경우에는 서버가 다시 시작되어 binary log를 복구할 때까지 플래그가 유지됩니다. 이 옵션이 없으면 mysqlbinlog은 이 플래그가 설정된 파일을 처리하지 않습니다. 서버가 파일을 기록 중일 수 있으므로, 마지막 event의 잘림(truncate)은 정상 동작으로 간주됩니다.
--force-read, -f| Property | Value |
|---|---|
| Command-Line Format | --force-read |
이 옵션을 사용하면, mysqlbinlog이 인식하지 못하는 binary log event를 읽더라도 경고를 출력하고 해당 event를 무시한 뒤 계속 실행합니다. 이 옵션이 없으면, mysqlbinlog은 그러한 event를 읽었을 때 동작을 중단합니다.
| Property | Value |
|---|---|
| Command-Line Format | --get-server-public-key |
| Type | Boolean |
RSA 키 쌍 기반 비밀번호 교환에 필요한 public key를 서버에 요청합니다. 이 옵션은 caching_sha2_password 인증 플러그인으로 인증하는 클라이언트에 적용됩니다. 이 플러그인의 경우, 별도의 요청이 없으면 서버가 public key를 보내지 않습니다. 이 옵션은 해당 플러그인으로 인증하지 않는 계정에 대해서는 무시됩니다. 또한 클라이언트가 보안 연결을 통해 서버에 연결하여 RSA 기반 비밀번호 교환이 사용되지 않는 경우에도 무시됩니다.
--server-public-key-path=file_name가 유효한 public key 파일을 지정하는 경우, 이 옵션은 --get-server-public-key보다 우선합니다.
caching_sha2_password 플러그인에 대한 정보는 Section 8.4.1.1, “Caching SHA-2 Pluggable Authentication”을 참조하십시오.
--hexdump, -H| Property | Value |
|---|---|
| Command-Line Format | --hexdump |
Section 6.6.9.1, “mysqlbinlog Hex Dump Format”에 설명된 대로, 주석 내부에 log의 hex dump를 표시합니다. hex 출력은 복제 디버깅에 도움이 될 수 있습니다.
--host=host_name, -h host_name| Property | Value |
|---|---|
| Command-Line Format | --host=host_name |
| Type | String |
| Default Value | localhost |
지정한 호스트의 MySQL 서버에서 binary log를 가져옵니다.
| Property | Value |
|---|---|
| Command-Line Format | --idempotent |
| Type | Boolean |
| Default Value | true |
업데이트를 처리하는 동안 MySQL 서버에 idemponent 모드를 사용하도록 지시합니다. 이는 현재 세션에서 업데이트를 처리하는 동안 발생하는 duplicate-key 또는 key-not-found 오류를 억제합니다. 이 옵션은 log가 참조하는 모든 데이터를 서버가 포함하고 있지 않을 수도 있는 MySQL 서버에 하나 이상의 binary log를 다시 실행해야 하는 상황에서 유용할 수 있습니다.
이 옵션의 효과 범위는 현재 mysqlbinlog 클라이언트와 해당 세션에만 국한됩니다.
| Property | Value |
|---|---|
| Command-Line Format | --include-gtids=gtid_set |
| Type | String |
| Default Value | `` |
_gtid_set_에 나열된 그룹만 출력합니다.
--local-load=dir_name, -l dir_name| Property | Value |
|---|---|
| Command-Line Format | --local-load=dir_name |
| Type | Directory name |
LOAD DATA 문에 해당하는 데이터 로딩 작업에 대해, mysqlbinlog은 binary log events에서 파일을 추출하여 로컬 파일 시스템의 임시 파일로 기록하고, 이 파일들을 로드하기 위한 LOAD DATA LOCAL 문을 기록합니다. 기본적으로 mysqlbinlog은 이러한 임시 파일을 OS별 기본 디렉터리에 기록합니다. --local-load 옵션을 사용하여 mysqlbinlog이 로컬 임시 파일을 준비할 디렉터리를 명시적으로 지정할 수 있습니다.
다른 프로세스들도 기본 system-specific 디렉터리에 파일을 쓸 수 있으므로, 데이터 파일에 대해 mysqlbinlog에 --local-load 옵션을 지정해 다른 디렉터리를 지정하고, 그와 동일한 디렉터리를 mysql에 --load-data-local-dir 옵션으로 지정하여 mysqlbinlog의 output을 처리하는 것이 좋습니다. 예를 들면 다음과 같습니다:
1mysqlbinlog --local-load=/my/local/data ... 2 | mysql --load-data-local-dir=/my/local/data ...
주의
이 임시 파일들은 mysqlbinlog이나 다른 MySQL 프로그램에 의해 자동으로 삭제되지 않습니다.
| Property | Value |
|---|---|
| Command-Line Format | --login-path=name |
| Type | String |
.mylogin.cnf 로그인 경로 파일에 있는 지정한 로그인 경로에서 옵션을 읽습니다. “로그인 경로”는 어떤 MySQL 서버에 어떤 계정으로 연결할지를 지정하는 옵션이 들어 있는 옵션 그룹입니다. 로그인 경로 파일을 생성하거나 수정하려면 mysql_config_editor 유틸리티를 사용하십시오. Section 6.6.7, “mysql_config_editor — MySQL Configuration Utility”를 참조하십시오.
이 옵션 및 다른 옵션 파일 관련 옵션들에 대한 추가 정보는 Section 6.2.2.3, “Command-Line Options that Affect Option-File Handling”를 참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --no-login-paths |
로그인 경로 파일에서 옵션을 읽지 않습니다.
관련 정보는 --login-path를 참조하십시오.
이 옵션 및 다른 옵션 파일 관련 옵션들에 대한 추가 정보는 Section 6.2.2.3, “Command-Line Options that Affect Option-File Handling”를 참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --no-defaults |
어떠한 옵션 파일도 읽지 않습니다. 옵션 파일에서 읽은 알 수 없는 옵션 때문에 프로그램 시작에 실패하는 경우, --no-defaults를 사용하면 해당 파일을 읽지 않도록 할 수 있습니다.
예외적으로, .mylogin.cnf 파일은 존재할 경우 항상 읽습니다. 이로 인해, --no-defaults를 사용하더라도 명령줄에 비밀번호를 직접 지정하는 것보다 더 안전한 방식으로 비밀번호를 지정할 수 있습니다. .mylogin.cnf를 생성하려면 mysql_config_editor 유틸리티를 사용하십시오. Section 6.6.7, “mysql_config_editor — MySQL Configuration Utility”를 참조하십시오.
이 옵션 및 다른 옵션 파일 관련 옵션들에 대한 추가 정보는 Section 6.2.2.3, “Command-Line Options that Affect Option-File Handling”를 참조하십시오.
--offset=N, -o N| Property | Value |
|---|---|
| Command-Line Format | --offset=# |
| Type | Numeric |
log에서 처음 _N_개의 엔트리를 건너뜁니다.
| Property | Value |
|---|---|
| Command-Line Format | --open-files-limit=# |
| Type | Numeric |
| Default Value | 8 |
| Minimum Value | 1 |
| Maximum Value | [platform dependent] |
예약할 open 파일 디스크립터 수를 지정합니다.
--password[=password], -p[password]| Property | Value |
|---|---|
| Command-Line Format | --password[=password] |
| Type | String |
서버에 연결할 때 사용할 MySQL 계정의 비밀번호입니다. 비밀번호 값은 선택 사항입니다. 비밀번호를 지정하지 않으면, mysqlbinlog이 프롬프트를 통해 비밀번호를 요청합니다. 값을 지정할 경우, --password= 또는 -p와 그 뒤에 오는 비밀번호 사이에는 공백이 없어야 합니다. 비밀번호 옵션을 지정하지 않으면 기본적으로 비밀번호를 전송하지 않습니다.
명령줄에 비밀번호를 지정하는 것은 보안상 안전하지 않은 방법으로 간주해야 합니다. 비밀번호를 명령줄에 직접 지정하지 않으려면 옵션 파일을 사용하십시오. Section 8.1.2.1, “End-User Guidelines for Password Security”를 참조하십시오.
비밀번호가 없으며 mysqlbinlog이 비밀번호 프롬프트를 띄우지 않도록 명시적으로 지정하려면, --skip-password 옵션을 사용하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --plugin-dir=dir_name |
| Type | Directory name |
플러그인을 검색할 디렉터리입니다. --default-auth 옵션으로 인증 플러그인을 지정했는데 mysqlbinlog이 해당 플러그인을 찾지 못하는 경우 이 옵션을 지정하십시오. Section 8.2.17, “Pluggable Authentication”를 참조하십시오.
--port=port_num, -P port_num| Property | Value |
|---|---|
| Command-Line Format | --port=port_num |
| Type | Numeric |
| Default Value | 3306 |
원격 서버에 연결할 때 사용할 TCP/IP 포트 번호입니다.
| Property | Value |
|---|---|
| Command-Line Format | --print-defaults |
프로그램 이름과 옵션 파일에서 얻은 모든 옵션을 출력합니다.
이 옵션 및 다른 옵션 파일 관련 옵션들에 대한 추가 정보는 Section 6.2.2.3, “Command-Line Options that Affect Option-File Handling”를 참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --print-table-metadata |
binary log에서 테이블 관련 메타데이터를 출력합니다. binary log에 기록되는 테이블 관련 메타데이터의 양은 binlog-row-metadata를 사용하여 설정합니다.
| Property | Value |
|---|---|
| Command-Line Format | --protocol=type |
| Type | String |
| Default Value | [see text] |
| Valid Values | TCP<br>SOCKET<br>PIPE<br>MEMORY |
서버에 연결할 때 사용할 전송 프로토콜입니다. 다른 연결 파라미터로 인해 기본적으로 사용되는 프로토콜과 다른 프로토콜을 사용하고자 할 때 유용합니다. 허용되는 값에 대한 자세한 내용은 Section 6.2.7, “Connection Transport Protocols”를 참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --raw |
| Type | Boolean |
| Default Value | FALSE |
기본적으로 mysqlbinlog은 binary log 파일을 읽어 events를 text 포맷으로 출력합니다. --raw 옵션은 events를 원래의 binary 포맷으로 출력하도록 지시합니다. 이를 사용하려면, 파일을 서버에서 요청해야 하므로 --read-from-remote-server도 함께 사용해야 합니다. mysqlbinlog은 서버에서 읽은 각 파일마다 하나의 output 파일을 작성합니다. --raw 옵션은 서버의 binary log를 백업하는 데 사용할 수 있습니다. --stop-never 옵션과 함께 사용하면, mysqlbinlog이 서버와 연결을 유지하므로 백업이 “live” 상태가 됩니다. 기본적으로 output 파일은 원래 log 파일과 동일한 이름으로 현재 디렉터리에 기록됩니다. output 파일 이름은 --result-file 옵션으로 변경할 수 있습니다. 자세한 내용은 Section 6.6.9.3, “Using mysqlbinlog to Back Up Binary Log Files”를 참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --read-from-remote-source=type |
이 옵션은 binary log를 MySQL 서버에서 COM_BINLOG_DUMP 또는 COM_BINLOG_DUMP_GTID 명령을 사용해 읽습니다. 옵션 값을 각각 BINLOG-DUMP-NON-GTIDS 또는 BINLOG-DUMP-GTIDS로 설정하면 됩니다. --read-from-remote-source=BINLOG-DUMP-GTIDS를 --exclude-gtids와 함께 사용하면, 소스에서 트랜잭션을 필터링할 수 있어 불필요한 네트워크 트래픽을 줄일 수 있습니다.
이 옵션 또는 --read-from-remote-server 옵션과 함께 연결 파라미터 옵션을 사용할 수 있습니다. 이 옵션들은 --host, --password, --port, --protocol, --socket, --user입니다. 원격 옵션이 하나도 지정되지 않은 경우, 연결 파라미터 옵션은 무시됩니다.
이 옵션을 사용하려면 REPLICATION SLAVE 권한이 필요합니다.
| Property | Value |
|---|---|
| Command-Line Format | --read-from-remote-master=type |
| Deprecated | Yes |
--read-from-remote-source의 사용 중단된 동의어입니다.
| Property | Value |
|---|---|
| Command-Line Format | --read-from-remote-server=file_name |
로컬 log 파일 대신 MySQL 서버에서 binary log를 읽습니다. 이 옵션을 사용하려면 원격 서버가 실행 중이어야 합니다. 이 옵션은 원격 서버의 binary log 파일에만 동작하며 relay log 파일에는 동작하지 않습니다. 파일 경로 없이 binary log 파일 이름(숫자 suffix 포함)만 인자로 받습니다.
이 옵션 또는 --read-from-remote-source 옵션과 함께 연결 파라미터 옵션을 사용할 수 있습니다. 이 옵션들은 --host, --password, --port, --protocol, --socket, --user입니다. 원격 옵션이 하나도 지정되지 않은 경우, 연결 파라미터 옵션은 무시됩니다.
이 옵션을 사용하려면 REPLICATION SLAVE 권한이 필요합니다.
이 옵션은 --read-from-remote-source=BINLOG-DUMP-NON-GTIDS와 동일합니다.
--result-file=name, -r name| Property | Value |
|---|---|
| Command-Line Format | --result-file=name |
--raw 옵션이 없으면, 이 옵션은 mysqlbinlog이 text output을 기록할 파일을 지정합니다. --raw와 함께 사용하면, mysqlbinlog은 서버에서 전송된 각 log 파일마다 하나의 binary output 파일을 작성하며, 기본적으로 원래 log 파일과 동일한 이름으로 현재 디렉터리에 기록합니다. 이 경우 --result-file 옵션 값은 output 파일 이름을 변경하기 위한 prefix로 사용됩니다.
| Property | Value |
|---|---|
| Command-Line Format | --require-row-format |
| Type | Boolean |
| Default Value | false |
events에 대해 row 기반 binary 로깅 포맷을 요구합니다. 이 옵션은 mysqlbinlog output에 row 기반 복제 events를 강제합니다. 이 옵션으로 생성된 events 스트림은 CHANGE REPLICATION SOURCE TO 문의 REQUIRE_ROW_FORMAT 옵션으로 보호되는 복제 채널에서 허용됩니다. binary log가 작성된 서버에서 binlog_format=ROW이 설정되어 있어야 합니다. 이 옵션이 지정된 상태에서, mysqlbinlog이 REQUIRE_ROW_FORMAT 제한 조건에서 허용되지 않는 events를 만나면 오류 메시지와 함께 동작을 중단합니다. 여기에는 LOAD DATA INFILE 명령, 임시 테이블 생성 또는 삭제, INTVAR, RAND, USER_VAR events, 그리고 DML 트랜잭션 내의 non-row 기반 events가 포함됩니다. 또한 mysqlbinlog은 output의 시작 부분에 SET @@session.require_row_format 문을 출력하여 output을 실행할 때 동일한 제한 조건이 적용되도록 하고, SET @@session.pseudo_thread_id 문은 출력하지 않습니다.
| Property | Value |
|---|---|
| Command-Line Format | --rewrite-db='oldname->newname' |
| Type | String |
| Default Value | [none] |
row 기반 또는 statement 기반 log를 읽을 때, _from_name_의 모든 occurrence를 _to_name_으로 rewrite합니다. rewrite는 row 기반 log의 row와 statement 기반 log의 USE 절 모두에 대해 수행됩니다.
주의
이 옵션을 사용할 때 데이터베이스 이름으로 한정된 테이블 이름이 있는 문은 새로운 이름을 사용하도록 rewrite되지 않습니다.
이 옵션 값으로 사용되는 rewrite 규칙은 from_name->to_name 형식의 문자열입니다(앞에서 본 예와 같이). 이 때문에 반드시 큰따옴표나 작은따옴표로 둘러싸야 합니다.
여러 rewrite 규칙을 사용하려면 다음과 같이 옵션을 여러 번 지정합니다:
1mysqlbinlog --rewrite-db='dbcurrent->dbold' --rewrite-db='dbtest->dbcurrent' \ 2 binlog.00001 > /tmp/statements.sql
--database 옵션과 함께 사용할 때, 먼저 --rewrite-db 옵션이 적용되고, 그다음에 rewrite된 데이터베이스 이름을 기준으로 --database 옵션이 적용됩니다. 옵션을 제공하는 순서는 이 동작에 영향을 미치지 않습니다.
따라서, 예를 들어 mysqlbinlog을 --rewrite-db='mydb->yourdb' --database=yourdb로 시작하면, mydb와 yourdb의 테이블에 대한 모든 업데이트가 output에 포함됩니다. 반면, --rewrite-db='mydb->yourdb' --database=mydb로 시작하면, mysqlbinlog은 어떤 문도 출력하지 않습니다. mydb에 대한 모든 업데이트가 먼저 yourdb에 대한 업데이트로 rewrite된 후에 --database 옵션이 적용되므로, --database=mydb에 해당하는 업데이트가 남지 않기 때문입니다.
| Property | Value |
|---|---|
| Command-Line Format | --server-id=id |
| Type | Numeric |
지정한 server ID를 가진 서버가 생성한 events만 표시합니다.
| Property | Value |
|---|---|
| Command-Line Format | --server-id-bits=# |
| Type | Numeric |
| Default Value | 32 |
| Minimum Value | 7 |
| Maximum Value | 32 |
서버를 식별할 때 server_id의 처음 N 비트만 사용합니다. binary log가 server-id-bits를 32보다 작게 설정한 mysqld에 의해 작성되었고, 가장 상위 비트에 사용자 데이터가 저장된 경우, mysqlbinlog을 --server-id-bits를 32로 설정해 실행하면 이 데이터를 볼 수 있습니다.
이 옵션은 NDB Cluster 배포판에 포함된, 또는 NDB Cluster 지원을 포함해 빌드된 mysqlbinlog에서만 지원됩니다.
| Property | Value |
|---|---|
| Command-Line Format | --server-public-key-path=file_name |
| Type | File name |
RSA 키 쌍 기반 비밀번호 교환에 서버가 요구하는 public key의 클라이언트 측 복사본을 담고 있는 PEM 포맷 파일의 경로 이름입니다. 이 옵션은 sha256_password 또는 caching_sha2_password 인증 플러그인으로 인증하는 클라이언트에 적용됩니다. 이 옵션은 해당 플러그인으로 인증하지 않는 계정에 대해서는 무시됩니다. 또한 클라이언트가 보안 연결을 통해 서버에 연결해 RSA 기반 비밀번호 교환이 사용되지 않는 경우에도 무시됩니다.
--server-public-key-path=file_name가 유효한 public key 파일을 지정하는 경우, 이 옵션은 --get-server-public-key보다 우선합니다.
sha256_password의 경우, 이 옵션은 MySQL이 OpenSSL로 빌드된 경우에만 적용됩니다.
sha256_password 및 caching_sha2_password 플러그인에 대한 정보는 Section 8.4.1.2, “SHA-256 Pluggable Authentication” 및 Section 8.4.1.1, “Caching SHA-2 Pluggable Authentication”을 참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --set-charset=charset_name |
| Type | String |
log 파일을 처리할 때 사용할 문자 집합을 지정하기 위해, output에 SET NAMES charset_name 문을 추가합니다.
| Property | Value |
|---|---|
| Command-Line Format | --shared-memory-base-name=name |
| Platform Specific | Windows |
Windows에서, 로컬 서버와 shared memory를 사용해 연결을 만들 때 사용할 shared-memory 이름입니다. 기본값은 MYSQL입니다. shared-memory 이름은 대소문자를 구분합니다.
이 옵션은 서버가 shared-memory 연결을 지원하기 위해 shared_memory 시스템 변수를 활성화한 상태로 시작된 경우에만 적용됩니다.
--short-form, -s| Property | Value |
|---|---|
| Command-Line Format | --short-form |
log에 포함된 문만 표시하며, 추가 정보나 row 기반 events는 표시하지 않습니다. 이는 테스트용일 뿐이며, 프로덕션 시스템에서는 사용해서는 안 됩니다. 이 옵션은 사용 중단되었으며, 향후 릴리스에서 제거될 예정입니다.
| Property | Value |
|---|---|
| Command-Line Format | `--skip-gtids[=true |
| Type | Boolean |
| Default Value | false |
binary log 파일의 GTID를 output dump 파일에 포함하지 않습니다. 예를 들어 다음과 같습니다:
1mysqlbinlog --skip-gtids binlog.000001 > /tmp/dump.sql 2mysql -u root -p -e "source /tmp/dump.sql"
이 옵션은 프로덕션이나 복구에서 일반적으로 사용해서는 안 되며, GTID가 명백히 불필요한 특별하고 드문 상황에서만 사용해야 합니다. 예를 들어, 관리자가 특정 트랜잭션(예: 테이블 정의)을 한 배포에서 다른, 서로 관련이 없는 배포로 복사하고자 하며, 두 배포 간에 복제가 이루어지지 않도록 하려는 경우가 있을 수 있습니다. 이 시나리오에서 --skip-gtids를 사용하면, 관리자가 해당 트랜잭션을 새로운 트랜잭션처럼 적용할 수 있고, 두 배포가 서로 무관한 상태로 유지되도록 할 수 있습니다. 그러나 GTID를 포함시키는 것이 특정 사용 사례에 문제가 된다는 것이 명확한 경우에만 이 옵션을 사용해야 합니다.
--socket=path, -S path| Property | Value |
|---|---|
| Command-Line Format | `--socket={file_name |
| Type | String |
localhost에 대한 연결에서 사용할 Unix 소켓 파일(또는 Windows에서는 named pipe 이름)입니다.
Windows에서 이 옵션은 서버가 named-pipe 연결을 지원하기 위해 named_pipe 시스템 변수를 활성화한 상태로 시작된 경우에만 적용됩니다. 또한 연결을 수행하는 사용자는 named_pipe_full_access_group 시스템 변수로 지정된 Windows 그룹의 구성원이어야 합니다.
--ssl*--ssl로 시작하는 옵션들은 서버에 encrypted connection으로 연결할지 여부와 SSL 키 및 인증서의 위치를 지정합니다. Command Options for Encrypted Connections를 참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | `--ssl-fips-mode={OFF |
| Deprecated | Yes |
| Type | Enumeration |
| Default Value | OFF |
| Valid Values | OFF<br>ON<br>STRICT |
클라이언트 측에서 FIPS 모드를 사용할지 여부를 제어합니다. --ssl-fips-mode 옵션은 encrypted connection을 수립하는 데 사용된다는 점에서 다른 --ssl-xxx 옵션들과 다르며, 대신 허용할 암호화 연산을 제한하는 데 사용됩니다. Section 8.8, “FIPS Support”를 참조하십시오.
--ssl-fips-mode에 대해 허용되는 값은 다음과 같습니다:
OFF: FIPS 모드 비활성화.ON: FIPS 모드 활성화.STRICT: “strict” FIPS 모드 활성화.참고
OpenSSL FIPS Object Module을 사용할 수 없는 경우, --ssl-fips-mode에 허용되는 값은 OFF뿐입니다. 이 경우 --ssl-fips-mode를 ON 또는 STRICT로 설정하면 클라이언트는 시작 시 경고를 출력하고 non-FIPS 모드로 동작합니다.
이 옵션은 사용 중단되었습니다. 향후 MySQL 버전에서 제거될 예정입니다.
| Property | Value |
|---|---|
| Command-Line Format | --start-datetime=datetime |
| Type | Datetime |
타임스탬프가 datetime 인자와 같거나 이후인 첫 번째 event에서 binary log 읽기를 시작합니다. datetime 값은 mysqlbinlog을 실행하는 머신의 로컬 시간대를 기준으로 합니다. 값은 DATETIME 또는 TIMESTAMP 데이터 타입에 허용되는 포맷이어야 합니다. 예를 들면 다음과 같습니다:
1mysqlbinlog --start-datetime="2005-12-25 11:25:56" binlog.000003
이 옵션은 point-in-time 복구에 유용합니다. Section 9.5, “Point-in-Time (Incremental) Recovery”를 참조하십시오.
--start-position=N, -j N| Property | Value |
|---|---|
| Command-Line Format | --start-position=# |
| Type | Numeric |
log position _N_에서부터 binary log 디코드를 시작하며, position이 N 이상인 위치에서 시작하는 events만 output에 포함합니다. 이 위치는 event 카운터가 아니라 log 파일 내의 바이트 위치이므로, 유효한 output을 생성하려면 event의 시작 위치를 가리켜야 합니다. 이 옵션은 명령줄에 지정한 첫 번째 log 파일에만 적용됩니다.
이 옵션이 지원하는 최대 값은 18446744073709551616 (264-1)입니다. 단, --read-from-remote-server 또는 --read-from-remote-source를 함께 사용하는 경우 최대값은 4294967295입니다.
이 옵션은 point-in-time 복구에 유용합니다. Section 9.5, “Point-in-Time (Incremental) Recovery”를 참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --stop-datetime=datetime |
타임스탬프가 datetime 인자와 같거나 이후인 첫 번째 event에서 binary log 읽기를 중지합니다. datetime 값에 대한 정보는 --start-datetime 옵션 설명을 참조하십시오.
이 옵션은 point-in-time 복구에 유용합니다. Section 9.5, “Point-in-Time (Incremental) Recovery”를 참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --stop-never |
| Type | Boolean |
| Default Value | FALSE |
이 옵션은 --read-from-remote-server와 함께 사용합니다. 이 옵션은 mysqlbinlog이 서버와의 연결을 유지하도록 합니다. 이 옵션이 없으면, mysqlbinlog은 서버에서 마지막 log 파일을 전송받은 후 종료합니다. --stop-never는 --to-last-log를 암시하므로, 명령줄에는 전송을 시작할 첫 번째 log 파일만 지정하면 됩니다.
--stop-never는 일반적으로 --raw와 함께 사용해 live binary log 백업을 만드는 데 사용되지만, --raw 없이 사용하여 서버가 생성하는 log events를 연속적으로 text로 표시하는 데도 사용할 수 있습니다.
--stop-never를 사용하면, 기본적으로 mysqlbinlog은 서버에 연결할 때 server ID 1을 보고합니다. 다른 ID를 명시적으로 지정하려면 --connection-server-id를 사용하십시오. 이는 replica 서버나 다른 mysqlbinlog 프로세스와 ID 충돌을 피하는 데 사용할 수 있습니다. Section 6.6.9.4, “Specifying the mysqlbinlog Server ID”를 참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --stop-never-slave-server-id=# |
| Type | Numeric |
| Default Value | 65535 |
| Minimum Value | 1 |
이 옵션은 사용 중단되었으며, 향후 릴리스에서 제거될 예정입니다. 대신 --connection-server-id 옵션을 사용해 mysqlbinlog이 보고할 server ID를 지정하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --stop-position=# |
| Type | Numeric |
log position _N_에서 binary log 디코드를 중지하며, position이 N 이상인 위치에서 시작하는 events는 output에 포함하지 않습니다. 이 위치는 event 카운터가 아니라 log 파일 내의 바이트 위치이므로, output에 포함하려는 마지막 event의 시작 위치보다 이후의 위치를 가리켜야 합니다. position N 이전에 시작하여 그 위치에서 끝나거나 그 이후까지 이어지는 event가 처리되는 마지막 event입니다. 이 옵션은 명령줄에 지정한 마지막 log 파일에 적용됩니다.
이 옵션은 point-in-time 복구에 유용합니다. Section 9.5, “Point-in-Time (Incremental) Recovery”를 참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --tls-ciphersuites=ciphersuite_list |
| Type | String |
TLSv1.3을 사용하는 encrypted connections에서 허용되는 ciphersuites입니다. 값은 하나 이상의 콜론으로 구분된 ciphersuite 이름 목록입니다. 이 옵션에 지정할 수 있는 ciphersuite는 MySQL을 컴파일할 때 사용한 SSL 라이브러리에 따라 달라집니다. 자세한 내용은 Section 8.3.2, “Encrypted Connection TLS Protocols and Ciphers”를 참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --tls-sni-servername=server_name |
| Type | String |
지정된 이름은 mysql_options()의 MYSQL_OPT_TLS_SNI_SERVERNAME 옵션을 사용해 libmysqlclient C API 라이브러리에 전달됩니다. 서버 이름은 대소문자를 구분하지 않습니다. 현재 세션에 대해 클라이언트가 지정한 서버 이름을 확인하려면 Tls_sni_server_name 상태 변수를 조회하십시오.
Server Name Indication(SNI)은 TLS 프로토콜에 대한 확장입니다(OpenSSL을 TLS extensions를 사용하여 컴파일해야 이 옵션이 동작합니다). MySQL의 SNI 구현은 클라이언트 측만 지원합니다.
| Property | Value |
|---|---|
| Command-Line Format | --tls-version=protocol_list |
| Type | String |
| Default Value | TLSv1,TLSv1.1,TLSv1.2,TLSv1.3 (OpenSSL 1.1.1 이상)<br>TLSv1,TLSv1.1,TLSv1.2 (그 외) |
encrypted connections에 허용되는 TLS 프로토콜입니다. 값은 하나 이상의 콤마로 구분된 프로토콜 이름 목록입니다. 이 옵션에 지정할 수 있는 프로토콜은 MySQL을 컴파일할 때 사용한 SSL 라이브러리에 따라 달라집니다. 자세한 내용은 Section 8.3.2, “Encrypted Connection TLS Protocols and Ciphers”를 참조하십시오.
--to-last-log, -t| Property | Value |
|---|---|
| Command-Line Format | --to-last-log |
MySQL 서버에서 요청한 binary log의 끝에서 멈추지 않고, 마지막 binary log의 끝까지 계속 출력합니다. output을 같은 MySQL 서버로 보내면 끝없는 루프가 발생할 수 있습니다. 이 옵션을 사용하려면 --read-from-remote-server가 필요합니다.
--user=user_name, -u user_name| Property | Value |
|---|---|
| Command-Line Format | --user=user_name, |
| Type | String |
원격 서버에 연결할 때 사용할 MySQL 계정의 사용자 이름입니다.
Rewriter 플러그인을 사용하는 경우, 이 사용자에게 SKIP_QUERY_REWRITE 권한을 부여해야 합니다.
--verbose, -v| Property | Value |
|---|---|
| Command-Line Format | --verbose |
row events를 재구성해, 필요 시 테이블 파티션 정보를 포함한 주석 처리된 SQL 문으로 출력합니다. 이 옵션을 두 번 지정하면("-vv" 또는 "--verbose --verbose"), output에 column 데이터 타입 및 일부 메타데이터를 나타내는 주석과, binlog_rows_query_log_events 시스템 변수가 TRUE로 설정된 경우 row query log events와 같은 informational log events도 포함됩니다.
row event 출력에서 --base64-output과 --verbose의 효과를 보여주는 예시는 Section 6.6.9.2, “mysqlbinlog Row Event Display”를 참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --verify-binlog-checksum |
binary log 파일의 checksum을 검증합니다.
--version, -V| Property | Value |
|---|---|
| Command-Line Format | --version |
버전 정보를 표시하고 종료합니다.
| Property | Value |
|---|---|
| Command-Line Format | --zstd-compression-level=# |
| Type | Integer |
zstd 압축 알고리즘을 사용하는 서버 연결에서 사용할 압축 레벨입니다. 허용되는 레벨은 1부터 22까지이며, 값이 클수록 압축 정도가 증가합니다. 기본 zstd 압축 레벨은 3입니다. 이 설정은 zstd 압축을 사용하지 않는 연결에는 영향을 주지 않습니다.
자세한 내용은 Section 6.2.8, “Connection Compression Control”를 참조하십시오.
mysqlbinlog의 output을 mysql 클라이언트에 파이프로 전달하여 binary log에 포함된 events를 실행할 수 있습니다. 이 기술은 오래된 백업으로부터 예기치 않은 종료 상황을 복구할 때 사용됩니다(Section 9.5, “Point-in-Time (Incremental) Recovery” 참조). 예를 들면 다음과 같습니다:
1mysqlbinlog binlog.000001 | mysql -u root -p
또는:
1mysqlbinlog binlog.[0-9]* | mysql -u root -p
mysqlbinlog이 생성한 문에 BLOB 값이 포함된 경우, mysql이 이를 처리할 때 문제가 발생할 수 있습니다. 이 경우, mysql을 --binary-mode 옵션과 함께 실행하십시오.
또한, statement log를 먼저 수정해야 하는 경우(예를 들어, 어떤 이유로든 실행하고 싶지 않은 문을 제거하기 위해), mysqlbinlog의 output을 text 파일로 리디렉트할 수도 있습니다. 파일을 편집한 후에는 mysql 프로그램의 입력으로 사용해, 파일에 포함된 문을 실행합니다:
1mysqlbinlog binlog.000001 > tmpfile 2... edit tmpfile ... 3mysql -u root -p < tmpfile
mysqlbinlog을 --start-position 옵션과 함께 호출하면, binary log에서 지정된 위치 이상 오프셋을 가진 event만 표시합니다(지정된 위치는 하나의 event 시작 위치와 일치해야 합니다). 또한 특정 날짜와 시간을 가진 event를 만나면 중지하거나 시작하도록 하는 옵션도 있습니다. 이를 사용하면 --stop-datetime 옵션을 이용해 “오늘 오전 10:30의 상태로 데이터베이스를 roll forward하라”와 같은 point-in-time 복구를 수행할 수 있습니다.
여러 파일 처리.
MySQL 서버에서 실행해야 할 binary log가 여러 개 있는 경우, 안전한 방법은 모든 log를 서버에 대한 단일 연결을 통해 처리하는 것입니다. 다음 예는 안전하지 않은 방법을 보여줍니다:
1mysqlbinlog binlog.000001 | mysql -u root -p # DANGER!! 2mysqlbinlog binlog.000002 | mysql -u root -p # DANGER!!
이처럼 여러 연결을 사용해 binary log를 처리하면, 첫 번째 log 파일에 CREATE TEMPORARY TABLE 문이 있고 두 번째 log에 해당 임시 테이블을 사용하는 문이 있는 경우 문제가 발생합니다. 첫 번째 mysql 프로세스가 종료되면, 서버는 임시 테이블을 drop합니다. 그 후 두 번째 mysql 프로세스가 해당 테이블을 사용하려고 하면, 서버는 “unknown table” 오류를 보고합니다.
이러한 문제를 피하려면, 처리할 모든 binary log의 내용을 하나의 mysql 프로세스를 사용해 실행해야 합니다. 한 가지 방법은 다음과 같습니다:
1mysqlbinlog binlog.000001 binlog.000002 | mysql -u root -p
또 다른 방법은 모든 log를 하나의 파일에 기록한 후 해당 파일을 처리하는 것입니다:
1mysqlbinlog binlog.000001 > /tmp/statements.sql 2mysqlbinlog binlog.000002 >> /tmp/statements.sql 3mysql -u root -p -e "source /tmp/statements.sql"
또한 shell 파이프를 사용해 여러 binary log 파일을 스트림 입력 형태로 mysqlbinlog에 제공할 수도 있습니다. 압축된 binary log 파일 아카이브를 압축 해제한 뒤, 이를 직접 mysqlbinlog에 전달할 수 있습니다. 다음 예에서 binlog-files_1.gz는 처리할 여러 binary log 파일을 포함합니다. 파이프라인은 binlog-files_1.gz의 내용을 추출하여 binary log 파일을 표준 입력으로 mysqlbinlog에 전달하고, mysqlbinlog output을 mysql 클라이언트로 파이프하여 실행합니다:
1gzip -cd binlog-files_1.gz | ./mysqlbinlog - | ./mysql -uroot -p
아카이브 파일을 여러 개 지정할 수도 있습니다. 예를 들면 다음과 같습니다:
1gzip -cd binlog-files_1.gz binlog-files_2.gz | ./mysqlbinlog - | ./mysql -uroot -p
스트리밍 입력에 대해서는, mysqlbinlog이 이 옵션을 적용할 마지막 log 파일을 식별할 수 없으므로 --stop-position을 사용하지 마십시오.
LOAD DATA operations.
mysqlbinlog은 원본 데이터 파일 없이도 LOAD DATA operation을 재생성하는 output을 생성할 수 있습니다. mysqlbinlog은 데이터를 임시 파일로 복사하고, 이 파일을 참조하는 LOAD DATA LOCAL 문을 작성합니다. 이러한 파일이 기록되는 디렉터리의 기본 위치는 system-specific입니다. 디렉터리를 명시적으로 지정하려면 --local-load 옵션을 사용하십시오.
mysqlbinlog이 LOAD DATA 문을 LOAD DATA LOCAL 문으로 변환한다는 점(즉 LOCAL을 추가한다는 점)에 유의해야 합니다. 따라서 이 문을 처리하는 클라이언트와 서버 모두에서 LOCAL 기능이 활성화되어 있어야 합니다. Section 8.1.6, “Security Considerations for LOAD DATA LOCAL”을 참조하십시오.
주의
LOAD DATA LOCAL 문에 대해 생성된 임시 파일은, 해당 문을 실제로 실행할 때까지 필요하기 때문에 자동으로 삭제되지 않습니다. statement log가 더 이상 필요하지 않게 되면, 임시 파일은 직접 삭제해야 합니다. 이러한 파일은 임시 파일 디렉터리에 위치하며, _original_file_name-#-#_와 같은 이름을 가집니다.
6.6.8 mysql_migrate_keyring — Keyring Key Migration Utility
6.6.10 mysqldumpslow — Summarize Slow Query Log Files