¡Debe comprender el registro de errores de MySQL para ser el líder en la resolución de errores!

Prefacio

Cuando usamos MySQL, a menudo encontramos varios errores. El registro de errores de MySQL puede ayudarnos a registrar estos errores Es muy importante para nosotros resolver el problema mirando la fecha del error. Echemos un vistazo a cómo abrir y usar el registro de errores.

Registro de errores

El registro de errores de MySQL contiene registros de cuándo se inició y se cerró mysqld. También contiene mensajes de diagnóstico, como errores, advertencias y precauciones, que se producen durante el inicio y el apagado del servidor y durante el funcionamiento del servidor. Por ejemplo, si mysqld nota que una tabla necesita ser revisada o reparada automáticamente, escribirá un mensaje en el registro de errores.

En algunos sistemas operativos, si mysqld se cierra de forma anormal, el registro de errores contendrá un seguimiento de la pila. Trace se puede utilizar para determinar dónde salió mysqld.

Si comienza con mysqld, mysqld_safe, algunos mensajes de excepción también se escribirán en el registro de errores. Por ejemplo, cuando mysqld_safe detecta una salida de mysqld anormal, reinicia mysqld y escribe un mensaje de reinicio de mysqld en el registro de errores.

Para los sistemas Windows y Unix, el servidor interpreta opciones ligeramente diferentes para determinar dónde escribir los mensajes de error. Entonces se introducen los siguientes dos sistemas.


Registra registros de errores en sistemas Unix y similares a Unix

En sistemas Unix y similares a Unix, mysqld usa la opción -log-error para determinar si mysqld escribe el registro de errores en la consola o en un archivo, y si es un archivo, escribe el nombre del archivo:

如果--log-error未给出,则 mysqld将错误日志写入控制台。

如果--log-error给出时未命名文件,则mysqld将错误日志写入host_name.err 数据目录中命名的文件 。

如果--log-error给定一个文件名,则mysqld将错误日志写入该文件(如果该文件没有后缀,则添加.err后缀)。除非给出绝对路径名以指定其他位置,否则文件位置在数据目录下。

如果--log-error在选项文件中指定[mysqld], [server]或 [mysqld_safe]部分,那么在使用mysqld_safe启动服务器的系统上,会找到mysqld_safe部分的该选项,并将其传递到mysqld。

Nota:

La instalación del paquete Yum o APT generalmente configura la ubicación del archivo de registro de errores en / var / log y utiliza una opción como log-error = / var / log / mysqld.log en el archivo de configuración del servidor. Eliminar el nombre de la ruta de las opciones hará que se utilice el archivo err en el directorio de datos.

Si el servidor escribe el registro de errores en la consola, establecerá la variable de sistema log_error en stderr.

Abra la instancia:
configure en el archivo de configuración

#编辑Mysql的配置文件
vi /etc/my.cnf

#在mysqld部分添加log-error变量,你可以指定绝对路径,也可以不指定,不指定就默认在mysql的数据目录下
[mysqld]
log-error=/usr/err.log

Para verificar si el registro de errores está habilitado, use el siguiente comando:

#如果开启了,会显示错误日志所在的位置
mysql> show variables like '%log_error%';

Grabar registros de errores en Windows

En Windows, mysqld usa las opciones –log-error, –pid-file y –console para determinar si mysqld escribe el registro de errores en la consola o en un archivo. Si escribe en un archivo, escriba el nombre del archivo:

Si se especifica --console, mysqld escribirá el registro de errores en la consola. (Si se proporcionan –console y –log-error, entonces –console tiene prioridad sobre –log-error, y los siguientes elementos sobre –log-error no se aplican. Antes de MySQL 5.7, esto es lo contrario: –log-error tiene prioridad sobre –Console.

Si no se proporciona --log-error, o el archivo no se nombra cuando se proporciona, mysqld escribirá el registro de errores en una carpeta llamada host_name.err en el directorio de datos, a menos que se especifique la opción --pid-file. En este caso, el nombre del archivo es el nombre base del archivo PID con el sufijo .err en el directorio de datos.

Si especifica -log-error y proporciona un nombre de archivo, mysqld escribirá el registro de errores en el archivo (si el archivo no tiene sufijo, agregue el sufijo .err). A menos que se especifique un nombre de ruta absoluto para especificar una ubicación diferente, la ubicación del archivo está en el directorio de datos.

Si el servidor escribe el registro de errores en la consola, establecerá la variable de sistema log_error en stderr. De lo contrario, el servidor escribe el registro de errores en el archivo y establece log_error en el nombre del archivo.

Filtrado del registro de errores

La variable de sistema log_error_verbosity puede controlar el nivel de detalle que el servidor escribe en el registro de errores. Los valores permitidos son 1 (solo permiten errores), 2 (errores y advertencias), 3 (errores, advertencias y comentarios) y el valor predeterminado es 3. Si el valor es mayor que 2, el servidor registrará las conexiones abortadas y los intentos de conexión que deniegan el acceso.

Formato de salida del registro de errores

La ID contenida en el mensaje del registro de errores es la ID del hilo responsable de escribir el mensaje en mysqld. Esto indica qué parte del servidor generó el mensaje en ese momento y es coherente con el registro de consultas normal y los mensajes de registro de consultas lentos (incluido el ID del hilo de conexión).

La variable de sistema log_timestamps controla la zona horaria de la marca de tiempo en los mensajes escritos en el registro de errores (y el registro de consultas general y los archivos de registro de consultas lentas).

Los valores permitidos para log_timestamps son UTC (predeterminado) y SYSTEM (zona horaria del sistema local). La marca de tiempo está escrita en el formato ISO 8601 / RFC 3339: agregue el valor final Z que representa la hora zulú (UTC) o el desplazamiento del ajuste de la zona horaria del sistema local con respecto a UTC. Por ejemplo: AAAA-MM-DDThh: mm: ss.uuuuuuZ ± hh: mm

Ejemplo:

2020-08-07T15:02:00.832521Z            (UTC)
2020-08-07T10:02:00.832521-05:00       (SYSTEM)

Un registro de errores estándar es el siguiente:

2020-12-22T09:56:57.551273Z 30 [Note] Access denied for user 'root'@'localhost' (using password: YES)

Descripción de parámetros:

2020-12-22T09:56:57.551273Z :时间

30 :线程ID

[Note]:日志类型,note为记录,warning 为警告,error为错误

Access denied for user 'root'@'localhost' (using password: YES):错误信息

Supongo que te gusta

Origin blog.csdn.net/qq_36551991/article/details/111599046
Recomendado
Clasificación