MySQL의 SHOW SLAVE STATUS를 이해하려고


11

Master-Slave 복제 설정이 있는데 제대로 실행되고있는 것 같습니다. 다음은 SHOW SLAVE STATUS명령 의 결과입니다 .

show slave STATUS\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: *.*.*.*
                  Master_User: repliV1
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 10726644
               Relay_Log_File: mysqld-relay-bin.000056
                Relay_Log_Pos: 231871
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: data1
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
                   Last_Errno: 0
                   Last_Error:
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 10726644
              Relay_Log_Space: 232172
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File:
           Master_SSL_CA_Path:
              Master_SSL_Cert:
            Master_SSL_Cipher:
               Master_SSL_Key:
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:

나는에 대해 더 이해하고 싶은 Relay_Log_File, Relay_Log_Pos하고 Relay_Master_Log_File.

내 질문은 :

  • 릴레이 로그 파일이 복제를 실행하기 위해 로컬에서 읽고 저장되는 파일이라는 것이 사실입니까?

  • relay_master_log_file그때 는 어떻습니까? 어떻게 다른 Master_Log_File가요?

  • 이 값의 두 무엇입니까 즉. , Read_Master_Log_Pos그리고 Relay_Log_Pos? 복제가 완료되고 동기화 된 경우에도 왜 표시됩니까?

  • 이 파일이 이진 형식이므로 볼 수 없다는 것이 사실입니까?

답변:


8

Relay_Log_File, Relay_Log_Pos 및 Relay_Master_Log_File이 더 이해되고 싶습니다.

에서 SHOW SLAVE STATUS\G두 값을 얻습니다.

  • Relay_Log_File : 복제 중 새 항목을 수락하는 현재 릴레이 로그
  • Relay_Log_Pos : 복제 중 새 항목을 허용하는 현재 릴레이 로그의 현재 위치
  • Relay_Master_Log_File : 슬레이브에서 실행 된 마스터에서 마지막으로 성공적으로 실행 된 SQL 문을 포함하는 릴레이 로그 파일.
  • Master_Log_File : 현재 릴레이 로그 파일 및 현재 릴레이 로그 위치에 해당하는 마스터의 로그

파일이 이진 파일이므로 제대로 볼 수 없습니다

예, 릴레이 로그를 볼 수 있습니다. 그것들은 일반 바이너리 로그와 같은 구조를 가지고 있기 때문에, mysqlbinlog 프로그램을 실행하면 됩니다. 예를 들어 마지막 로그와 같이 릴레이 로그에서 SQL을 보려면 다음과 같이하십시오.

mysqlbinlog mysqld-relay-bin.000056 > /root/SQLForCurrentRelayLog.txt
less /root/SQLForCurrentRelayLog.txt

이제 Exec_Master_Log_Pos (이것은 실행중인 마스터 로그 위치입니까)와 until_log_pos가 어디에서 멈추어야합니까?
newbie14

사소한 실수입니다. 릴레이 로그 파일이 아니라 SQL 스레드가 실행 한 최신 이벤트를 포함 Relay_Master_Log_File하는 마스터 이진 로그 파일 의 이름입니다 .
crishoj


8

Relay_Master_Log_File실제로 실제로 슬레이브에서 성공적으로 실행 된 마지막 SQL 문을 포함하는 마스터의 binlog 이름입니다. 슬레이브의 릴레이 로그 이름이 아닙니다. 참조 : http://dev.mysql.com/doc/refman/5.5/en/show-slave-status.html

Exec_Master_Log_Pos슬레이브 SQL 스레드가 실행 한 relay_master_log_file의 위치입니다. 따라서 귀하의 예에서 슬레이브 DB는 mysql-bin.000001마스터 DB에서 binlog pos 10726644 까지 모든 명령문을 실행했습니다 .

until_log_pos구문으로 슬레이브를 시작하는 경우에만 실제로 사용됩니다 START SLAVE UNTIL master_log_pos = $integer. 이 구문은 해당 위치 ( exec_master_log_pos) 가 될 때까지 복제 된 다음 중지됩니다. 특정 지점으로 복제하려는 경우에만 일반적으로이 작업을 수행하지만 다음 명령문이 실수로 테이블을 삭제하는 등의 작업은 수행하지 않습니다. 값을 until_log_pos지정하지 않으면 값 은 0이므로 복제는 계속 진행합니다.


더 명확 해져서 고맙습니다. 지금 모니터링해야 할 것이 있습니까?
newbie14
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.