MySQL5.5.8 binlog主从replication,从库所在主机磁盘满,发现后清理磁盘,得出空余空间。在磁盘满期间,从库报出空间不足的异常,恢复磁盘空间后,从库与主库的数据是否会不一致?还是会将磁盘满期间的数据在清理磁盘后重做?
更新slave在同步master的数据时有会有两个线程,IO线程和SQL线程,前者负责同步master的Binlog日志生成RelayLog,SQL负责根据RelayLog中的内容中执行SQL在slave端进行数据重做。现在虽然slave出了问题,但是情况比较特殊,是磁盘满了。所以我把问题细化下,看看大家对这几个分开的问题怎么理解?
1.假设不是磁盘满的情况下,IO线程同步没有问题,那relaylog将继续与master的binlog同步,但是slave的SQL线程执行出错,此时slave的SQL线程是否会挂起不再继续执行relaylog后续的SQL,还是会自动跳过(亦或是需要手动执行跳过)当前SQL继续执行relaylog后续的SQL?
2.当前的情况是磁盘满,那么relaylog没有空间追加,报出空间不足的异常,这样IO线程是会不管异常如何,继续同步binlog,还是会挂起等待空间恢复后继续同步?如果relaylog无法写入,SQL线程是不是就无新的SQL可执行,同时将会挂起?如果relaylog写完那一刻满了,SQL线程执行SQL要写入数据文件时发现磁盘满报出异常,SQL线程是否会跳过当前的SQL继续往后执行(即使失败了),还是会挂起等待重做?
希望能按情况具体讨论下这个问题....