MySQL 8.0查找错误日志路径
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL 8.0查找错误日志路径相关的知识,希望对你有一定的参考价值。
mysql的错误信息是在data目录下,且文件名为<hostname>.err(<hostname>指的是主机名),但由于每个人安装的环境不一样,或忘记data目录的所在位置,可以通过下面方法查找。
# hostname //获得主机名
<hostname>
# find / -name <hostname>.err
.....
# cd ...
# vim <hostname>.err
--------示例---------------
[root@target_pc ~]# hostname
target_pc
[root@target_pc ~]# find / -name target_pc.err
/var/lib/mysql/target_pc.err
[root@target_pc ~]# ls /var/lib/mysql
auto.cnf ib_logfile1 performance_schema target_pc.err
ibdata1 mysql RPM_UPGRADE_HISTORY target_pc.pid
ib_logfile0 mysql.sock RPM_UPGRADE_MARKER-LAST test
查看错误日志MySQL配置文件
[root@target_pc ~]# vim /etc/my.cnf
[mysqld]
log_error=/var/lib/mysql/target_pc.err
查看错误日志
错误日志中记录着开启和关闭MySQL服务的时间,以及服务运行过程中出现哪些异常等信息。如果MySQL服务出现异常,可以到错误日志中查找原因。
在MySQL中,通过SHOW命令可以查看错误日志文件所在的目录及文件名信息。
mysql> SHOW VARIABLES LIKE \'log_error\';
+---------------+----------------------------------------------------------------+
| Variable_name | Value |
+---------------+----------------------------------------------------------------+
| log_error | /var/lib/mysql/target_pc.err |
+---------------+----------------------------------------------------------------+
删除错误日志
在MySQL中,可以使用mysqladmin命令来开启新的错误日志,以保证MySQL服务器上的硬盘空间。mysqladmin 命令的语法如下:
[root@target_pc ~]# mysqladmin -hlocalhost -uroot -p flush-logs
根据MySQL错误日志来诊断错误
经常有一些错误只包含错误码数据,例如下面这个例子:
[root@target_pc ~]# cat /var/lib/mysql/target_pc.err
120326 16:56:45 [ERROR] /usr/sbin/mysqld: Incorrect key file for table \'/tmp/#sql_21b2_0.MYI\' ; try to repair it
120326 16:56:45 [ERROR] Got an error from unknown thread, storage/myisam/mi_write.c:223
120326 16:56:45 [ERROR] /usr/sbin/mysqld: Sort aborted: Error writing file \'/tmp/MYK74Kpi\' (Errcode: 28)
请看最后一行有一个 (Errcode: 28). 而 MySQL 附带了一个工具 perror ,该工具可以查看错误代码的具体含义,如:
[root@target_pc ~]# perror 28
OS error code 28: No space left on device
监测MySQL错误日志,如有错误自动邮件报警
#检查错误日志里是否有ERROR,有的话,邮件报警,每分钟监控一次
*/1 * * * * /usr/local/mysql/shell_script/monitor_errlog.sh > /usr/local/mysql/shell_script/monitor_errlog.log 2>&1
#每个机器生成一个错误日志文件,由于公司数据库服务器的错误日志都是基于主机名的,所以还得注意hostname。
LogDir=\'/usr/local/mysql/shell_script/err_logs/\'
#由于每分钟都要监控一次,而定时任务会在每一分钟开始就监控,而当前分钟的错误尚未记录下来,故监控上一分钟的错误
AnalyzeDate=`date -d "1 minutes ago" "+%y%m%d %H:%M"`
ErrorLogDir1=\'/data/mysql3306/\'
HostGroup1=(\'10.192.200.100\' \'10.192.200.202\')
source=\'……\'
target=\'……\'
MailUser=\'……\'
MailPassword=\'……\'
mkdir -p $LogDir
echo $AnalyzeDate
for host1 in ${HostGroup1[@]}
do
hostname1=`ssh $host1 hostname`
ssh $host1 cat $ErrorLogDir1$hostname1\'.err\' | grep "$AnalyzeDate" | grep \'ERROR\' > $LogDir$host1.err
#ssh $host1 cat $ErrorLogDir1$hostname1\'.err\' | grep "$AnalyzeDate" | grep \'Warning\' > $LogDir$host1.err
if test -s $LogDir$host1.err;
then
echo $(cat $LogDir$host1.err)
title1=$host1\' errlog alert\'
content1=$(cat $LogDir$host1.err)
/usr/local/bin/sendEmail -f $source -t $target -s hq.smtp.chinaunicom.cn -u $title1 -xu $MailUser -xp $MailPassword -m $content1
else
echo \'there are no errors in the \'$host1\\\'\'errlog.\'
fi
done
以上是关于MySQL 8.0查找错误日志路径的主要内容,如果未能解决你的问题,请参考以下文章