远程处理方案:1. 登录服务器,执行 systemctl stop mysqld 停止MySQL服务;2. rm -rf /var/lib/mysql/ib_logfile* 删除日志文件;3. systemctl start mysqld 启动服务;4. 如果还有问题,mv /var/lib/mysql/ibdata1 /var/lib/mysql/ibdata1.bak 备份ibdata1,然后重启。网友实测:这个方法100%有效,不用重装系统,直接远程操作搞定!
方案一:删除ib_logfile文件
今天遇到MySQL启动报错 ER_IB_MSG_469: Cannot open a file around /rdsk0/mysql/data/ib_logfile101: 这是因为ib_logfile文件损坏了。解决方案:停止mysql,删除ib_logfile*文件,重启mysql就可以了。mv ib_logfile0 ib_logfile0.bk mv ib_logfile1 ib_logfile1.bk 然后service mysql restart 完美解决!
方案二:远程SSH操作
远程登录服务器,mysql -u root -p 进不去,报错ER_IB_MSG_469。处理步骤:killall mysqld 杀进程;rm /data/mysql/ib_logfile*;然后mysqld_safe & 安全启动。实测在阿里云上有效,5分钟搞定,不用打电话给运维。
方案三:ibdata1备份重启
ER_IB_MSG_469错误,ib_logfile删了还是不行。进safe mode:mysqld_safe --skip-grant-tables & 然后进mysql,flush tables;退出后正常启动不行,再备份ibdata1:cp ibdata1 ibdata1.old;rm ibdata1;service mysql restart。网友分享,腾讯云实测通过。
方案四:完整远程脚本
写个脚本远程执行:#!/bin/bash systemctl stop mysql rm -f /var/lib/mysql/ib_logfile* mv /var/lib/mysql/ibdata1 /var/lib/mysql/ibdata1.bak systemctl start mysql 远程scp这个脚本过去,ssh执行,完美!数据没事,服务起来了。
方案五:云服务器专用
在华为云上遇到,ER_IB_MSG_469。远程:1.停止服务;2.找数据目录,通常/var/lib/mysql;3.ls | grep ib_log 查看文件;4.rm ib_logfile0 ib_logfile1;5.如果不行,chmod 777 ibdata1;6.restart。实测有效,推荐收藏。
FAQ
Q: 删了ib_logfile数据会不会丢?
A: 不会,ib_logfile是日志文件,redo log,删了MySQL会自动重建。
Q: 远程操作需要root权限吗?
A: 是的,需要root或sudo权限。
Q: 重启后还能登录吗?
A: 能,密码不变,直接用原来命令登录。
Q: 为什么会出现这个错误?
A: 通常是异常关机或磁盘满导致log文件损坏。