MySQL 設好 Replication 後, 常會用以下指令來觀察 Master, Slave status, 但是秀出來的資訊代表的意思到底是如何呢??
- show master status
- show slave status
以下是 Master 機器上, show master status 出來的 欄位 和 說明:
- Master_Host: dbm1.domain_name
- Master_User: repl
- Master_Port: 3306
- Connect_retry: 60 , 這個 mysql server 重啟動到現在已經 connect 幾次了(自己 restart 會歸零)
- Master_Log_File: dbm1-bin.009 , 目前 Master 上已經寫到第幾個了
- Read_Master_Log_Pos: 991863990 , Slave讀到 Master 這個 log file 的第幾筆了(master 上的 file)
- Relay_Log_File: dbs1-relay-bin.008 , Slave目前正在寫入的 binary log (slave 上的 file)
- Relay_Log_Pos: 303654057 , 寫到第幾筆了
- Relay_Master_Log_File: dbm1-bin.009 , Slave目前傳到 Master 上的第幾個(目前正在抓哪一個過來), 目前 Master上, 已經讀到哪個 log file(relication) binary log(一堆 SQL 指令執行的記錄, 可用 mysqlbinlog 讀取)
- Slave_IO_Running: Yes , 這個 process 有在 run(抓 binary log), 抓 log 回來 (No: 可能原因有 網路斷, 權限問題, master stop)
- Slave_SQL_Running: Yes , 是否有在執行 binary log (error)
- Replicate_do_db:
- Replicate_ignore_db:
- Last_errno: 0 , 停掉前發生什麼事情, error number, 可用 perror 查詢
- Last_error: (error message)
- Skip_counter: 0 (set db slave skip counter = 1, start slave) 跳過這一筆
- Exec_master_log_pos: 991863990 (要與 Read_Master_Log_Pos 一樣, 代表沒有 delay)
- Relay_log_space: 303654057 目前有多少空間可以寫
平常最主要就是看 Slave_IO_Running, Slave_SQL_Running 是否是 Yes, 是 Yes 的話, 應該就都是正常在跑的狀況, 若是 No 的話, 就趕快去看一下 Last_error 是發生什麼事了, 再來想辦法處理囉~