查看mySQL延遲的方法、mysql主從原理和mysql常見錯誤及解決辦法

查看mySQL延遲的方法:

查看Seconds_Behind_Master

1.在從伺服器mysql上執行

show slave stats\G;

1. 0:表示主從復制良好

2.NULL表示io_thread或sql_thread有一個發生故障,就是說該線程的Running狀態時No,而非Yes

3.正值表示主從已出現延時,數字越大表示從庫落後主庫越多

詳細可以參考

https://f.dataguru.cn/thread-461916-1-1.html

https://ningg.top/inside-mysql-master-slave-delay/

mysql主從原理

Master上 1 個IO線程,負責向Slave傳輸binary log(binlog)

Slave上 2 個線程:IO 線程和執行SQL的線程,其中:

IO線程:將獲取的日志信息,追加到relay log上;

執行SQL的線程:檢測到relay log中內容有更新,則在Slave上執行sql;

mysql常見錯誤:

1.主從無法同步

解決方法:show slave status\G;

查看狀態下面2個值是否為yes

Slave_IO_Running

Slave_IO_Running

查看下面2個值得為之是否與master伺服器一致

Master_Log_File

Master_Log_File

如果:Slave_SQL_Running 值為 NO,或 Seconds_Bebind_Master 值為 Null

1. 程式有可能在 slave 上進行瞭寫操作

2. 也有可能是 slave 機器重啟後,事務回滾造成的

解決方法一:

msyql> stop slave;

msyql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;

msyql> start slave;

解決方法二:

stop slave –停止同步

到master機器:show master status\G; 查看偏移量

到slave伺服器重新做手動同步;

master_host='192.168.142.128',master_user='repl',master_password='repl',master_log_file='AAA.000001',master_log_pos=120;

SLAVE在宕機,或者非法關機,例如電源故障、主板燒瞭等,造成中繼日志損壞,同步停掉。

【錯誤日志】

從庫日志:SHOW SLAVE STATUS \G;

Slave_IO_Running: Yes

Slave_SQL_Running: No

Last_Errno: 1593

Last_Error: Error initializing relay log position: I/Oerror reading event at position 4

【解決方案】

在主庫上找到同步的binlog和POS點,然後重新做同步,這樣就可以有新的中繼日志瞭。

mysql> CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000010',MASTER_LOG_POS=821;

發佈留言