mysql故障~Got fatal error 1236 解决方法

本文记录了一次处理服务器宕机及MySQL主从同步问题的过程,包括定位硬盘故障、重启服务器、调整binlog位置及解决同步错误1236等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

8月12日晚8点40:
碰到了1.30 3306服务器宕机的问题:

分析原因:是sdb的硬盘出现了问题(根据fdisk -l 查看原因情况),加之挂载的是mysql的数据目录,导致1.30 3306的宕机

系统层面的故障解决方法:重启操作系统,插拔了sdb的对应的硬盘。

数据层面的操作:重启1.30 3306和3307数据库。
                查看1.30 3307与3306的同步问题(操作方式:show master status,show slave status)
                
                继续查看1.31的3306和3307的同步问题。发现同步出现问题(Got fatal error 1236 from master when reading data from binary log)
               
查看从库状态:
                
mysql> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State:
                  Master_Host: 192.168.1.31
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: forummysql01-bin.004799
          Read_Master_Log_Pos: 73959657
               Relay_Log_File: mysql-relay-bin.001687
                Relay_Log_Pos: 73959809

                Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Client requested master to start replication from impossible position'
               Last_SQL_Errno: 0
               Last_SQL_Error:
1 row in set (0.00 sec)

ERROR:
No query specified

发现从库读了一个不可预知的pos的日志。

再次,回到主库查看主库的binlog:
mysql> show master status\G;
*************************** 1. row ***************************
            File: forummysql01-bin.004800
        Position: 29732172
    Binlog_Do_DB:
Binlog_Ignore_DB:
1 row in set (0.00 sec)

ERROR:
No query specified

分析forummysql01-bin.004799的binlog。(mysqlbinlog ./forummysql01-bin.004799 >/root/bin_004799.log)
发现binlog里面的位置,出现偏移,bin.004799 里面没有pos 73959657位置的日志

回到从库,同时修改两台从库binlog的位置。

stop slave;

CHANGE MASTER TO MASTER_HOST = '192.168.1.31',MASTER_PORT = 3306,MASTER_LOG_FILE = 'forummysql01-bin.004799',MASTER_LOG_POS = 73880572;

start slave;

在查看slave的状态:show slave status\G;

发现还有一个错误:
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.1.31
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: forummysql01-bin.004800
          Read_Master_Log_Pos: 32884198
               Relay_Log_File: mysql-relay-bin.000002
                Relay_Log_Pos: 16724
        Relay_Master_Log_File: forummysql01-bin.004800
             Slave_IO_Running: Yes
            Slave_SQL_Running: No

                   Last_Error: Error 'Duplicate entry '663961' for key 'PRIMARY'' on query. Default database: 'kaiyuan'. Query: 'insert into  wiki_download(download_name,download_ip,download_refer,download_time) values ('HDWiki-v5.1GBK-20120509.zip','192.168.1.41','','2012-08-12 21:36:25')'

               

再次执行skip操作:

stop slave;
set global sql_slave_skip_counter =1 ;
start slave;


之后,就一切正常。
### 回答1: 这是一个 MySQL 错误,表示在从二进制日志中读取数据时出现了严重错误 1236,原因是找不到二进制日志索引文件中的第一个日志文件名。建议检查日志文件和索引是否存在以及是否有读取权限,如果有必要可以尝试重建日志文件和索引。 ### 回答2: MySQL数据库出现“got fatal error 1236 from master when reading data from binary log: 'could not find first log file name in binary log index file'”这个错误,一般是由于MySQL的主从复制机制出了问题而引起的。 这个错误通常出现在MySQL主从复制过程中,因为主库的binary log文件找不到导致从库无法继续进行复制操作,从而导致复制过程被中断。 造成这种错误的原因很多,在MySQL主从复制的过程中,可能会由于网络问题、磁盘故障、权限设置不当等多种原因导致需要复制的binary log文件丢失或者找不到,从而引起这个问题的出现。 对于这个错误,可以尝试以下几种常见的解决方法: 1. 查找丢失的binary log文件和索引文件,将其复制到从库中对应的位置。 2. 检查从库的权限和配置是否正确,确保从库可以读取主库的binary log。 3. 确保MySQL版本在主从库之间一致。 4. 尝试重新启动MySQL服务,并检查MySQL日志文件是否有其他错误信息。 总的来说,出现这个错误需要仔细排查问题,找到出现问题的原因并及时解决。只有在解决了这个问题之后,才能恢复MySQL主从复制的正常运行,保证数据的正确性。 ### 回答3: 这个错误提示表明在从二进制日志中读取数据时,主服务器出现了致命错误1236,并且无法在二进制日志索引文件中找到第一个日志文件的名称。可能的原因是二进制日志索引文件已损坏或被删除,或者日志文件已被清除导致不匹配。 解决此问题的方法是: 1.检查二进制日志索引文件 运行“show binary logs”命令,查看二进制日志文件的名称和位置。查看索引文件是否存在,如果不存在,则尝试恢复或重新创建该文件。如果该文件存在,但因某些原因包含不正确或损坏的数据,则可能需要手动编辑它来更新正确的文件名称和位置。 2.查找缺失的日志文件 如果主服务器无法找到第一个日志文件的名称,则可能是因为该文件已被删除或移动。在主数据库的日志目录中检查缺失的日志文件,如果找到,请将它们移回原始位置。如果日志文件已经丢失,则可能需要从备份中恢复丢失的数据。 3.重启主服务器 有时,重启主服务器可以清除潜在的错误状态,从而解决此问题。在重启前,建议停止从服务器上的复制进程,并确保所有活动连接都已关闭。 总之,当出现“从主服务器读取二进制日志时发生致命错误1236”的错误时,您需要检查二进制日志索引文件和缺失的日志文件,并尝试修复或恢复它们,或者从备份中恢复缺失的数据。如果问题仍然存在,请重启主服务器并查看错误日志以获取更多信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值