1、重启不起来,缺少pid文件
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
查看日志文件,有这么一行:
[ERROR] Can't start server: can't check PID filepath: No such file or directory
缺少pid文件,需要新建一个。这个文件丢失的原因,大多数情况是因为mysqld非正常关闭。
解决方案:
看一下你的mysql配置文件my.cnf中pid文件的位置,我的位置是/var/run/mysqld/mysqld.pid,所以重新创建(一般需要sudo权限):
mkdir /var/log/mysqld
touch /var/log/mysqld/mysqld.pid
chown -R mysql:mysql /var/log/mysqld
重启即可。
2、No operations allowed after connection closed
使用jdbc时连接关闭,之所以会出现这个异常,是因为MySQL5.0以后针对超长时间DB连接做了一个处理,那就是如果一个DB连接在无任何操作情况下过了8个小时后(Mysql 服务器默认的“wait_timeout”是8小时),Mysql会自动把这个连接关闭。
解决方案:
将以下两个参数设置大一点:
wait_timeout
interactive_timeout
3、max_connections
如果用户数目很多,这个值要大于同时连接的用户数目。
(错误重现时再补上出错警告)
4、内存问题
出错信息:
运行一段时间后,报错:
No operations allowed after connection closed
且启动mysql的命令行出现下面错误:
/usr/local/mysql/bin/mysqld_safe: line 198: 4454 Killed nohup /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/sdb/mysqlstorage/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/var/log/mysqld.log --open-files-limit=6165 --pid-file=/var/run/mysqld/mysqld.pid --socket=/sdb/mysqlstorage/mysql/mysql.sock < /dev/null > /dev/null 2>&1
估计是内存设置超过系统最大内存了。查看了一下日志文件,发现buffer pool大小为20G多(本机内存16G)。然而我的my.cnf中设置的innodb_buffer_pool_size是12G多,为什么会变成20G?
因为这里面有个计算公式,这个值不止与innodb_buffer_pool_size有关,还与innodb_buffer_pool_instance和innodb_buffer_pool_chunk_size有关,具体计算公式是:
innodb_buffer_pool_size = N * (innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances)
即innodb_buffer_pool_size 是innodb_buffer_pool_chunk_size和innodb_buffer_pool_instances乘积的整数倍,如果不是整数倍,则上取整,即增大innodb_buffer_pool_size使满足整数倍。
所以将调整一下它们之间的大小,使它们不超过最大内存情况下满足整数倍就可以了。
还要设置一下其他和内存相关的参数,使它们总和不超过最大内存。
5、Unable to lock ./ibdata1 error: 11
问题出现过程:开机后先启动了一下mysql,启动了一半想起参数有些参数忘记改了,就直接Ctrl+C关闭了。然后改完参数重启,启动不起来,查看日志文件,有以下错误:
[ERROR] InnoDB: Unable to lock ./ibdata1 error: 11
继续查看,还有这么一行提示:
[Note] InnoDB: Check that you do not already have another mysqld process using the same InnoDB data or log files.
原因可能是:磁盘空间不够,或者这个文件被其他进程占用。
解决方法参考:传送门
6、InnoDB: Database page corruption on disk or a failed file read of page [page id: space=85, page number=5058528]. You may have to recover from a backup.
解决方案:传送门
。。。。未完待续