mysql – SQL从线程不应用更改

我有5个从站和1个主站的主/从复制。 master是mysql 5.1.37,slave是5.5.8。

两天前,一名奴隶停止工作。 在“show slave status”中,我看到IO线程和SQL线程都在运行。 IO线程正在生成中继日志文件,但SQL线程没有应用更改…即使我知道远在后面(使用mysqlbinlog检查binlog),“master master后面的秒数”仍显示为“0”。

所有其他的奴隶工作正常。

不知道要查找什么(mysql日志文件中没有错误,系统日志中没有错误…)

有什么build议? 见下面的奴隶状态输出

mysql> show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: master-db Master_User: replication Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.020839 Read_Master_Log_Pos: 56173153 Relay_Log_File: research-relay-bin.000002 Relay_Log_Pos: 252 Relay_Master_Log_File: mysql-bin.020828 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: db1,db2,db3,db4 Replicate_Ignore_DB: db5,db6 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: 975734937 Relay_Log_Space: 10714389571 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: Replicate_Ignore_Server_Ids: Master_Server_Id: 300 

在MySQL复制中有一些怪癖

1)同时使用replicate-do-db和replicate-ignore-db

页面上有stream程图来显示处理的顺序。 就我个人而言,我不同时使用replicate-do-db和replicate-ignore-db。 我使用一个或另一个。 如果其他奴隶没有这个问题,那就排除这个问题。

2)做LOAD DATA INFILE

MySQL复制处理它的方式令人震惊。 无论何时在主设备上执行LOAD DATA INFILE,整个input文件都存放在主设备的二进制日志中。 从站收集input文件的中继日志。 从站重新实现/ tmp文件夹中的数据文件,然后在从站上执行LOAD DATA INFILE。 在这个过程中,这不被视为复制延迟。 作为一个MySQL的DBA,我知道这个工作,但是这很俗气!

3)从IO线程通信故障

有时,由于防火墙的变化,networking路由或其他networkingexception,从属IO线程可能会停止获取条目来填充其中继日志。 您可能还需要检查主从进程列表中是否显示从属IO线程。 为了确保你的slave的IO线程是活着的,只需要在所有的slave上执行以下操作:

 SHOW SLAVE STATUS\G 

注意Relay_Log_Space。 它应该在增长。 如果停止增长,MySQL可能会因为另一个疯狂的原因而简单地冻结而不会出错,从而导致build议#4。

4)从机不在磁盘空间

我写了一篇关于MySQL在执行MyISAM操作时如何冻结的文章 。 MySQL使用MyISAM表作为临时表。 检查你的默认tmp表目录(MySQL中的tmpdirvariables)

我希望这些build议帮助!