MySQL 5.7崩溃重启后无法启用bin-log及错误日志求助
确认配置文件是否被正确加载
执行show variables like 'config_file';查看当前MySQL实际读取的配置文件路径,确认是否是你修改的my.cnf。如果路径不符,可通过mysql --help | grep "Default options"查看配置文件加载优先级,排查是否存在其他优先级更高的配置文件(如/etc/my.cnf.d/下的子配置)覆盖了你的设置。检查启动参数是否覆盖配置
执行ps aux | grep mysqld查看MySQL的启动命令,确认是否存在--skip-log-bin、--disable-log-bin或--log-error=NULL这类禁用日志的参数。如果有,移除这些参数后重启服务。
若使用systemd管理MySQL,检查对应service文件(如/usr/lib/systemd/system/mysqld.service)中的ExecStart字段,确认是否包含上述禁用参数。验证日志目录/文件的权限
崩溃后异常重启可能导致目录权限变更,执行以下命令检查权限:ls -ld /var/datadir ls -l /var/datadir/mysqld.log # 若文件已存在确保
/var/datadir及日志文件的所有者和组均为mysql:mysql,否则执行chown -R mysql:mysql /var/datadir修正权限后重启。检查文件系统状态
- 执行
df -h /var/datadir确认所在分区是否已满,磁盘空间不足会导致日志无法生成。 - 执行
mount | grep $(df /var/datadir | awk 'NR==2{print $1}')确认分区是否为只读挂载,只读状态下无法写入日志。
- 执行
排查binlog索引文件损坏
若/var/datadir下的mysql-bin.index文件因崩溃损坏,会导致MySQL无法初始化binlog。先备份该文件,然后删除原文件,重启MySQL服务后系统会自动重建索引文件。验证server_id的有效性
MySQL 5.7启用bin-log必须设置唯一的server_id(取值范围1-4294967295)。执行show variables like 'server_id';确认当前值是否为1,若不符,排查是否有其他配置或启动参数覆盖了server_id的设置。
内容的提问来源于stack exchange,提问作者MarvinD

