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重启
网友评论