1.4.3. 리플리케이션 슬레이브 I/O 쓰레드 상태
아래의 리스트는 슬레이브 서버 I/O 쓰레드에 대해서 State 컬럼에서 흔히 볼 수 있는 상태이다. 이 상태는 SHOW SLAVE STATUS가 출력하는 Slave_IO_State 컬럼에서도 나타나기 때문에, 이 명령문을 사용하면 어떤 일이 발생하고 있는지를 알 수 있다.
Connecting to master 이전의 초기 상태
쓰레드는 마스터에 접속을 시도하고 있다.
마스터에 접속된 후에 매우 짧게 나타나는 상태.
마스터에 접속된 후에 매우 짧게 나타나는 상태.
마스터에 접속된 후에 매우 짧게 나타나는 상태. 쓰레드는 바이너리 로그 파일 이름과 위치를 가지고 바이너리 로그 내용에 대한 요청을 마스터에 보낸다.
바이너리 로그 덤프가 실패할 경우 (접속 불가로 인해), 쓰레드는 곧장 이 상태가 되며, 그 다음에는 주기적으로 재 접속을 시도하게 된다. 재시도 간격은 --master-connect-retry 옵션을 가지고 지정할 수 있다.
쓰레드는 마스터에 재 접속을 시도한다.
쓰레드는 마스터에 접속을 했고 바이너리 로그 이벤트가 도착 하기를 기다리고 있다. 마스터가 아이들 (idle) 상태일 경우에는 시간이 오래 걸린다. slave_read_timeout 시간 동안 대기를 하게 되면, 시간 초과 (timeout)가 발생한다. 이렇게 되면, 쓰레드는 마스터와의 연결이 단절되었다고 생각을 하고 재 접속을 시도한다.
쓰레드는 이벤트를 읽었고 이것을 릴레이 로그에 복사를 해서 SQL 쓰레드가 이 이벤트를 처리하게끔 한다.
이벤트를 읽는 도중에 에러 (접속 단절로 인해)가 발생했음. 쓰레드는 재 접속을 시도하기 전에 master-connect-retry 시간 동안 슬리핑 (sleeping)한다.
쓰레드는 마스터에 재 접속을 시도한다. 접속이 다시 이루어지면, 상태는 Waiting for master to send event가 된다.
사용자는 지금 0 (zero)이 아닌 relay_log_space_limit 값을 사용하는 중이며, 릴레이 로그의 크기는 이 값을 초과할 만큼 충분이 커져 있다. I/O 쓰레드는 SQL 쓰레드가 릴레이 로그 파일 중에 일부를 삭제해서 충분한 공간을 확보하지 않으면 계속 대기를 한다.
쓰레드가 멈추었을 때 매우 짧게 발생하는 상태.