扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
错误日志使用log_error以及log_warnings等参数进行定义
创新互联-专业网站定制、快速模板网站建设、高性价比淳安网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式淳安网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖淳安地区。费用合理售后完善,10年实体公司更值得信赖。
log_error变量用于设置错误日志的存放位置
mysql show variables like "log_error";
如果想要修改错误信息位置并且永久生效,在my.cnf配置文件中设置log_error的值即可。
log_warnings用于标识警告信息是否一并记录到错误日志中
1、注意存储引擎错误
Unknown/unsupported storage engine: InnoDB
2、检查一下配置文件中关于innodb的参数,如果有skip-innodb注释掉
3、如果重新设置了innodb_log_file_size之类的,需要删除几个ib_logfile,然后重启数据库
线上用备份数据拉起一个实例后,发现部分表找不到,然后查看错误日志如下所示。
由于该实例存在部分表有外键,相关主表、从表相关联字段(包含类型、字符集等)有修改操作,此操作仅在foreign_key_checks=off条件可操作,需要客户确认是否有相关操作,目前实例发生重启也会出现此类问题,为避免此类情况再次发生可尽快删除相关外键或删除外键依赖。
这个其实很简单的
第一 你先登录你的mysql 这个在mysql命令下面登录
第二输入命令 show variables like ‘log_error’;
就会输出你的错误日志的地址不过你要先开启日志 要不然就会出现错误提示找不到日志
希望可以帮助到你的哈
本人还是个菜鸟,下面是我的经验之谈,能解决一些问题,有不对的地方,敬请斧正。
我的是CentOS6.3+MySQL5.1.57。
重启了一次服务器后,使用 mysql -u root -p登陆是出现下面的错误:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
于是,我检察mysql状态:
/etc/rc.d/init.d/mysqld status
显示stop,未运行。
/etc/rc.d/init.d/mysqld restart
Stopping mysqld: [ OK ]
MySQL Daemon failed to start.
Starting mysqld: [ FAILED]
ps -ef | grep mysql
root 28221 27474 0 14:18 pts/0 00:00:00 grep mysql 只有这一条
至此,我可以确定,mysql无法启动。
我开始排错,首先发现/tmp/mysql.sock不存在
vim /etc/my.cnf
socket=/var/lib/mysql/mysql .sock
/var/lib/mysql/mysql .sock同样不存在
find / -name mysql.sock
显示为空,未查询到mysql.sock文件,mysql.sock文件丢失了。
我看网上有人说mysql.sock套接字文件可以简单地通过重启服务器重新创建得到它,
init 6 重启命令
重启后发现错误还是那样,没有任何改变,mysql.sock重启服务器未自动生成。
接下来了解到mysql.sock是一个临时文件,在mysql启动时会自动生成,我的服务器未启动,自然就没有mysql.sock文件。
我尝试安全启动模式,mysqld_safe试图通过工作目录找到服务器和数据库,但mysqld_safe还是失败。
mysqld_safe
Starting mysqld daemon with databases from ....../mysql/var
STOPPING server from pid file .......pid
130802 15:17:11 mysqld ended
各种命令尝试无效的情况下,我开始了本次最大的收获----学会看错误日志。
在错误日志中,启动失败的原因极为明显,file ‘./mysql-bin。000004’ not found,failed to open!
mysql开启了bin日志功能,到数据库根目录查看该文件是存在的,可能是文件权限的问题。
chown -R mysql:mysql /....../mysql/var
mysqld_safe
/etc/rc.d/init.d/mysqld restart
Stopping mysqld: [ OK ]
Starting mysqld: [ OK]
成功启动了!~
此时mysql.sock文件出现了,在/var/lib/mysql/mysql .sock。如下图所示,以”s”开头的文件都是socket文件。
mysql -u root -p
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
/tmp/mysql.sock
解决这个错误很简单,因为/tmp/mysql.sock不存在,用这样的方法:
ln -s /var/lib/mysql/mysql .sock /tmp/mysql .sock
以”l”开头的文件是软链接文件。或者可以通过修改/etc/my.cnf文件来修正它。
成功解决了!~
就是这样一个问题折腾了我这么久,错误日志让它无所遁形。查看错误日志可以明确问题所在,而不是像我之前那样盲目的找错。
俗话说授人以鱼不如授人以渔,学会查看日志,你也可以方便快捷的解决问题了。
错误使人进步,我与这个错误斗争了四个多小时,对linux的“一切皆文件”这句话有了更深的了解,对我学习文件系统管理(目录树)有很大的帮助,让我的思维真正的从windows操作系统转向成linux系统。并最终解决问题,很有成就感,我喜欢这种感觉。
希望能对阅读的你有所帮助,谢谢!~
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流