MySQL是一個開源的關系型數據庫系統,它的復制功能可以在多個服務器之間同步數據。在 MySQL 的復制過程中,通過 slave_sql_thread 和 slave_io_thread 兩個線程協作來實現數據的同步,slave_io_thread 負責將數據從 master 復制到 slave 上,而 slave_sql_thread 則在 slave 上執行這些操作。然而在實際應用中,有時候我們需要跳過一些已經過期的從庫,這時候就要用到 skip slave 命令。
# 查看從庫狀態 SHOW SLAVE STATUS\G; # 跳過從庫 STOP SLAVE; SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; START SLAVE;
我們可以使用 SHOW SLAVE STATUS\G 命令來查看從庫的狀態。在該命令的輸出中,有兩個重要的狀態信息 - Slave_IO_Running 和 Slave_SQL_Running,分別表示 slave_io_thread 和 slave_sql_thread 是否在運行中。我們可以查看這兩個狀態信息來判斷是否需要 skip slave,假如 Slave_SQL_Running 的值為 No,那么就需要跳過從庫,我們可以使用上述的 skip slave 命令來完成這個任務。該過程的原理是使用 SET GLOBAL SQL_SLAVE_SKIP_COUNTER 命令將需要跳過的操作計數器的值設為 1,然后重啟 slave_io_thread 和 slave_sql_thread,此時從庫將跳過該操作并繼續復制下一條操作。