美文网首页
常见MySQL启动失败案例分析

常见MySQL启动失败案例分析

作者: 古飞_数据 | 来源:发表于2023-09-17 09:23 被阅读0次

1.权限问题
2.参数加载错误,不能启动&更改参数后无法正启动
3为什么启动多实例失败
4.遇到启动故障排查思路
5.没有error log怎么处理

1. 权限问题

Error Log中可以看到error code: 13
perror 13 ->Permission denied 
selinux没有关闭
getenforce
Setenforce o
原来MySQL已经存在,又去启动新的mysqld进程

ls -l /data/mysql/*
ls -l /data/mysql/mysql3306/*
chown -R mysql.mysql /data/mysql/mysql3306/
getenforce /setenforce 0/vi /etc/sysconfig/selinux

perror 13 Permission denied
perror 24 Too many open file
perror 28 No space left on device
perror 27 File too large
perror 32 Broken pipe

ulimit -a 默认只有1024

2.参数加载错误不能启动

场景
配置文件在/etc/my.cnf
启动/usr/local/mysql/bin/mysqld &
日子一天一天过,一切可以正常启动
然而某天忽然不能启动了
查看errro log

ls -lh data/   查看ibdata1的大小 填写到my.cnf
innodb_data_file_path   -ibdata1:90M:autoextend
redo 


ibdata1特别大,希望变小


strace /usr/local/mysql/bin/mysqld 2>&1 | tree 1.log
vim 1.log

查看两个文件的差异

grep "ibdata1" /etc/my.cnf
grep "ibdata1" /usr/local/mysql/etc/my.cnf

diff /etc/my.cnf /usr/local/mysql/etc/my.cnf

最担心的情况是参数加载错误,还是启动成功了?
很好的解决方法是,启动的时候直接指定参数--defaults-file

更改的东西一定需要有备份,可以回滚

1.[ERROR] [MY-000067][Server] unknown variable
'internal_tmp_disk_storage_engine=lnnoDB'
这种错误:查一下对版本是不是支持这个参数,是不是拼写错误。可以先注释掉偿试一下。
心
2.[ERROR] [MY-012263] [InnoDB] The Auto-extending innodb_system data file './ibdata1' 
is of a different size 6400 pages (rounded down to MB) than specified in the.cnf file: initial 12800 pages, max 0(relevant if non-zero) pages!
文件大小不一致
直接去目录下Is -I确认大小,参数可以字节为单位

loose-internal_tmp_disk_storage_engine=lnnoDB 通过loose标识,级别参数错误,也可以启动

3 为什么启动多实例失败

端口号占用
[ERROR] Can't start server: Bind on TCP/IP port: Address already in use
[ERROR] Do you already have another mysqld server running on port: 3306 ?

磁盘空间不足
28: No space left on device
用打开线程达到最大值
11: Resource temporarily unavailable

lsof -i:3306  找pid
ps aux| grep 23149

cd /proc/23149
ls
或者 lsof -p 23149

初始化不正确
相应的data目录下没数据
多版本下,配置basdir指定错误

4.启动故障排查思路

明确MySQL的启动流程
自动启动,一般是调用mysql.server -> mysqld_safe-> mysqld或systemctl调用mysqld
第一,查看mysql的error log看看有没有具体的报错
第二,学会工具: lsof , perror , ulimit ,df 这些工具的使用
第三,学会进阶工具: strace使用


判断问题需要提供的信息:版本 安装路径  配置文件 日志
file /etc/init.d/mysql
sh -x /etc/init.d/mysql start 2>&1 | tee 1.log
/usr/local/mysql/binn/my_print_defaults mysqld server mysql_server mysql.server
strace /etc/init.d/mysql start 2>&1 | tree 1.log

updatedb      /    locate my.cnf
mysql --help | grep my.cnf
strace /usr/local/mysql/bin/mysqld 2>&1 | tree 1.log
vim 1.log

ps -auxT | grep  mysqld          --带T参数看启动时间

5.没有error log怎么处理

配置文件:/etc/my.cnf
启动方式:/etc/init. d/mysql start
MySQL不能启动,也没有error log
但/usr/local/mysql/bin/mysqld -initialize初始化成功(找老师获取my.cnf)分析为什么。
另一种启动:
InnoDB掉电重启
lnnoDB被kill重启

相关文章

网友评论

      本文标题:常见MySQL启动失败案例分析

      本文链接:https://www.haomeiwen.com/subject/qdjzartx.html