- SHOW RELICA STATUS, SHOW SLAVE STATUS  문으로 원본서버, 복제서버간의 연결 구성 및 상태 정보 확인 가능

- MySQL 8.0.22 부터 SHOW SLAVE STATUS 문은 사용되지 않는다. 

  대신 SHOW REPLICA STATUS 를 사용

- PERFORMANCE_SCHEMA 에 replication_ 로 시작하는 테이블에서 복제 관련 정보를 확인할 수 있다. 

  - 원본서버는 하트 비트 간격보다 긴 기간동안 바이너리 로그에 업데이트 겂어 보내지 않는 이벤트가 없는 경우 하트 비트 신호를 복제본으로 전송한다. 

    CHANGE MASTER TO 문의 MASTER_HEARTBEAT_PERIOD 설정은 하트 비트 빈도를 지정한다. (기본값 slave_net_timeout의 1/2)

  - replication_connection_status 테이블에는 복제가 최선 하트 비트 신호를 언제 수신했는지 여부와 하트 비트 신호 수가 표시된다. 

 

SHOW RELICA STATUS, SHOW SLAVE STATUS 에서 제공하는 정보 중 주요정보 

- Replica_IO_State : 복제의 현재 상태
- Replica_IO_Running : 원본 바이너리 로그를 읽기위한 I/O 스레드 실행 상태 
- Replica_SQL_Running : 릴레이 로그의 이벤트를 실행하는 SQL 쓰레드 실행 상태 
- Last_IO_Error, Last_SQL_Error : 릴레이 로그를 처리 할 때 I/O 및 SQL 쓰레드에 의해 등록 된 마지막 오류
- Seconds_Behind_Source : 복제 SQL 쓰레드가 원본 바이너리 로그의 처리를 지연 시간 (초)
  - Seconds_Behind_Source값 0은 일반적으로 복제가 소스에 따라 잡았다는 것을 의미하는 것으로 해석 할 수 있지만, 엄밀하게는 true가 아닌 경우도 있다.

    예를 들어 원본과 복제본 간의 네트워크 연결이 끊어졌지만, 복제 I / O thread가 아직 이를 모르고 ( slave_net_timeout이 아직 경과하지 않은) 경우에 발생할 수 있다.

  - Seconds_Behind_Source임시 값이 상황을 정확히 반영하지 않을 수도 있다.

    복제 I/O thread가 아직 새로운 이벤트를 대기하는 경우 복제 SQL 쓰레드가 새로운 이벤트의 실행을

    종료 할 때까지 , Seconds_Behind_Source큰 값이 표시 될 수 있다. 이것은 이벤트에 오래된 타임 스탬프가있는

   경우에 문제가 발생할 수 있다. 이런 경우 비교적 짧은 기간에 SHOW REPLICA STATUS,  SHOW SLAVE STATUS 를

   여러 번 실행하면이 값이 0에서 비교적 큰 값까지 반복적으로 변경 될 수 있다. 

 

두가지를 같이 확인해야되는 정보

- show replica status, show slave status 에서 출력되는 값은 같으나 아래와 같이 다르게 나오는 부분이 있다. 

  - show slave status 에서 Master, Slave 로 출력되는 항목이 show replica status 에서는 Source, Replica 로 출력된다.

- Master_Log_file, Read_Master_Log_Pos 또는 Source_Log_file, Read_Source_Log_Pos : 복제 I/O thread가 원본 로그에서 이벤트를 읽을 위치 (원본 바이너리 로그 파일과 포지션)
- Relay_Master_Log_File, Exec_Master_Log_Pos 또는 Relay_Source_Log_File, Exec_Source_Log_Pos: 복제 SQL 쓰레드가 로그에서 받은 이벤트를 실행 한 위치 (원본 바이너리 로그 파일과 포지션)
- Relay_Log_File, Relay_Log_Pos : 복제 SQL 쓰레드가 릴레이 로그를 실행 한 위치 

 

 

원본에서 연결 복제 상태 확인

- SHOW PROCESSLIST 문

mysql> show processlist\G;
     Id: 8
   User: repl
   Host: 192.168.137.12:32796
     db: NULL
Command: Binlog Dump GTID
   Time: 1645
  State: Master has sent all binlog to slave; waiting for more updates
   Info: NULL

- SHOW REPLICAS, SHOW SLAVE HOSTS 문 

mysql> show replicas;
+-----------+------+------+-----------+--------------------------------------+
| Server_Id | Host | Port | Source_Id | Replica_UUID                         |
+-----------+------+------+-----------+--------------------------------------+
|        12 |      | 3306 |        11 | f6d4ffe7-bbd7-11eb-8dde-00155ddba00e |
+-----------+------+------+-----------+--------------------------------------+
1 row in set (0.00 sec)

mysql> show slave hosts;
+-----------+------+------+-----------+--------------------------------------+
| Server_id | Host | Port | Master_id | Slave_UUID                           |
+-----------+------+------+-----------+--------------------------------------+
|        12 |      | 3306 |        11 | f6d4ffe7-bbd7-11eb-8dde-00155ddba00e |
+-----------+------+------+-----------+--------------------------------------+
1 row in set, 1 warning (0.00 sec)

 

참고

https://dev.mysql.com/doc/refman/8.0/en/replication-administration-status.html

 

'MySQL' 카테고리의 다른 글

ANALYZE TABLE Statement  (0) 2021.06.17
GTID - 트랜잭션 건너뛰기  (0) 2021.06.13
GTID 사용시 복제본 복구  (0) 2021.06.10
GTID를 사용한 복제구성  (0) 2021.06.09
GTID  (0) 2021.06.09

+ Recent posts