17.2.2.2 Slave Status Logs
리플리케이션 슬레이브 서버는 2 개의 로그를 만듭니다. 기본적으로 이러한 로그는 master.info
및 relay-log.info
라는 파일에서 데이터 디렉토리에 생성됩니다. 이러한 파일의 이름과 위치는 각각 --master-info-file
및 --relay-log-info-file
옵션을 사용하여 변경할 수 있습니다. MySQL 5.6 이상에서 적절한 옵션으로 서버를 시작하여 그 중 하나 또는 모두의 로그를 mysql
데이터베이스의 테이블에 기록 할 수 있습니다 : --master-info-repository
를 사용하면 마스터 정보 로그가 mysql.slave_master_info
테이블에 기록되고 --relay-log-info-repository
를 사용하면 릴레이 로그 정보 로그가 mysql.slave_relay_log_info
테이블에 기록됩니다. 섹션 17.1.4 "복제 및 바이너리 로깅 옵션과 변수" 를 참조하십시오.
2 개의 상태 로그는 SHOW SLAVE STATUS
문 출력에 표시된 것과 같은 정보가 포함됩니다 ( 섹션 13.4.2 "슬레이브 서버를 제어하는 SQL 문" 참조). 상태 로그는 디스크에 저장되기 때문에 슬레이브 서버 종료 후에도 존재합니다. 슬레이브는 재부팅 할 때 두 개의 로그를 읽어 마스터의 바이너리 로그 읽기가 자신의 릴레이 로그의 처리가 얼마나 진행 여부를 결정합니다.
마스터 정보 로그 파일 또는 테이블은 마스터에 연결하기위한 암호를 포함하고 있기 때문에 보호하는 것이 좋습니다. 섹션 6.1.2.3 "암호 및 로깅" 을 참조하십시오.
슬레이브 I / O 쓰레드는 마스터 정보 로그를 업데이트합니다. 다음 표는 master.info
파일의 행 mysql.slave_master_info
테이블의 컬럼 및 SHOW SLAVE STATUS
에 표시되는 열 사이의 대응을 보여줍니다.
master.info 파일의 행 | slave_master_info 테이블의 컬럼 | SHOW SLAVE STATUS 컬럼 | 설명 |
---|---|---|---|
1 | Number_of_lines | [None] | 파일의 행 또는 테이블의 컬럼 수 |
2 | Master_log_name | Master_Log_File | 마스터에서 현재 읽고있는 마스터 바이너리 로그의 이름 |
3 | Master_log_pos | Read_Master_Log_Pos | 마스터에서 읽어 들인 마스터의 바이너리 로그의 현재 위치입니다 |
4 | Host | Master_Host | 마스터의 호스트 이름 |
5 | User_name | Master_User | 마스터에 연결하는 데 사용되는 사용자 이름 |
6 | User_password | 비밀번호 ( SHOW SLAVE STATUS 는 표시되지 않습니다) | 마스터에 연결하는 데 사용되는 암호 |
7 | Port | Master_Port | 마스터에 연결하는 데 사용되는 네트워크 포트 |
8 | Connect_retry | Connect_Retry | 마스터에 다시 연결을 시도하기 전에 슬레이브가 대기하는 시간 (초) |
9 | Enabled_ssl | Master_SSL_Allowed | 서버가 SSL 연결을 지원하는지 여부를 나타내는 |
10 | Ssl_ca | Master_SSL_CA_File | 인증 기관 (CA) 인증서에 사용되는 파일 |
11 | Ssl_capath | Master_SSL_CA_Path | 인증 기관 (CA) 인증서 경로 |
12 | Ssl_cert | Master_SSL_Cert | SSL 인증서 파일의 이름 |
13 | Ssl_cipher | Master_SSL_Cipher | SSL 연결 핸드 셰이크에서 사용되는 가능한 암호 목록 |
14 | Ssl_key | Master_SSL_Key | SSL 키 파일의 이름 |
15 | Ssl_verify_server_cert | Master_SSL_Verify_Server_Cert | 서버 인증서를 확인할지 여부 |
16 | Heartbeat | [None] | 복제 하트 비트 간격 (초) |
17 | Bind | Master_Bind | 마스터에 연결 슬레이브 어떤 네트워크 인터페이스를 사용 해야할지 |
18 | Ignored_server_ids | Replicate_Ignore_Server_Ids | 무시하는 서버 ID의 목록입니다. Ignored_server_ids 의 경우 서버 ID의 목록 앞에 무시하는 서버 ID의 총 개수가 표시됩니다. |
19 | Uuid | Master_UUID | 마스터의 고유 ID |
20 | Retry_count | Master_Retry_Count | 허용되는 재 연결 시도의 최대 수 |
21 | Ssl_crl | [None] | SSL 인증서 해지 목록 파일의 경로 (MySQL 버전 5.6.3에서 추가) |
22 | Ssl_crl_path | [None] | SSL 인증서 해지 목록 파일을 포함하는 디렉토리 경로 (MySQL 버전 5.6.3에서 추가) |
23 | Enabled_auto_position | Auto_position | 자동 포지셔닝이 사용 중인지 여부 (MySQL 버전 5.6.5에서 추가) |
MySQL 5.6.3 이전에서는 Ssl_verify_server_cert
컬럼의 이름은 Ssl_verify_servert_cert
이었습니다. (Bug # 12407446, Bug # 60988)
슬레이브 SQL 쓰레드는 릴레이 로그 정보 로그를 업데이트합니다. MySQL 5.6에서는 relay-log.info
파일에 행수와 복제 지연 값이 포함됩니다. 다음 표는 relay-log.info
파일의 행 mysql.slave_relay_log_info
테이블의 컬럼 및 SHOW SLAVE STATUS
에 표시되는 열 사이의 대응을 나타냅니다.
relay-log.info 의 행 | slave_relay_log_info 테이블의 컬럼 | SHOW SLAVE STATUS 컬럼 | 설명 |
---|---|---|---|
1 | Number_of_lines | [None] | 파일의 행 또는 테이블의 컬럼 수 |
2 | Relay_log_name | Relay_Log_File | 현재의 릴레이 로그 파일의 이름 |
3 | Relay_log_pos | Relay_Log_Pos | 릴레이 로그 파일의 현재 위치. 이 위치까지의 이벤트가 슬레이브 데이터베이스에서 수행 된 |
4 | Master_log_name | Relay_Master_Log_File | 릴레이 로그 파일의 이벤트가 읽은 마스터 바이너리 로그 파일의 이름 |
5 | Master_log_pos | Exec_Master_Log_Pos | 이미 실행 된 이벤트의 마스터의 바이너리 로그 파일에서 해당 위치 |
5 | Sql_delay | SQL_Delay | 슬레이브가 마스터보다 늦어 질 필요가있다 초 |
6 | Number_of_workers | [None] | 복제 이벤트 (트랜잭션)을 병렬로 실행하기위한 슬레이브 작업자 스레드 수 (MySQL 버전 5.6.7에서 추가) |
7 | Id | [None] | 슬레이브가 마스터보다 늦어 질 필요가있다 초 (MySQL 버전 5.6.7에서 추가) |
MySQL 5.6 이전에서는 relay-log.info
파일에 행 또는 지연 값이 포함되지 않습니다 (또한 slave_relay_log_info
테이블을 사용할 수 없습니다).
행 | Status 컬럼 | 설명 |
---|---|---|
1 | Relay_Log_File | 현재의 릴레이 로그 파일의 이름 |
2 | Relay_Log_Pos | 릴레이 로그 파일의 현재 위치. 이 위치까지의 이벤트가 슬레이브 데이터베이스에서 수행 된 |
3 | Relay_Master_Log_File | 릴레이 로그 파일의 이벤트가 읽은 마스터 바이너리 로그 파일의 이름 |
4 | Exec_Master_Log_Pos | 이미 실행 된 이벤트의 마스터의 바이너리 로그 파일에서 해당 위치 |
슬레이브 서버를 MySQL 5.6 이전 버전으로 다운 그레이드 할 경우 기존 서버는 relay-log.info
파일을 제대로 읽지 않습니다. 이를 해결하려면 텍스트 편집기에서 파일을 변경하고 행을 포함하는 첫 번째 행을 삭제하십시오.
relay-log.info
파일의 내용과 SHOW SLAVE STATUS
문에 표시되는 상태는 relay-log.info
파일이 디스크에 플러시되지 않은 경우에는 일치하지 않을 수 있습니다. 이상적으로는 오프라인 (즉, mysqld
가 동작하지 않는) 인 슬레이브에서만 relay-log.info
를 표시하는 것이 좋습니다. 실행중인 시스템에서 SHOW SLAVE STATUS
를 사용하거나 상태 테이블에 로그를 기록하는 경우 slave_master_info
및 slave_relay_log_info
테이블을 조회 할 수 있습니다.
슬레이브의 데이터를 백업 할 때 릴레이 로그 파일 이외에 이러한 두 가지 상태 로그를 백업하는 것이 좋습니다. 상태 로그는 슬레이브에서 데이터를 복원 한 후 복제를 다시 시작하기 위해 필요합니다. 릴레이 로그를 잃은 그러나 아직 릴레이 로그 정보 로그가있는 경우에는이를 검토하여 마스터 바이너리 로그에서 SQL 쓰레드가 얼마나 떨어져 실행되었는지를 확인할 수 있습니다. 그 때 MASTER_LOG_FILE
및 MASTER_LOG_POS
옵션 CHANGE MASTER TO
를 사용하여 그 지점에서 바이너리 로그를 다시 읽도록 슬레이브에 지시 할 수 있습니다. 물론 여기에는 바이너리 로그가 아직 마스터에 존재해야합니다.