Upload
profeimplantacion
View
37
Download
1
Embed Size (px)
Citation preview
LOS FICHEROS DE REGISTRO EN MYSQL
ADMINISTRACION DE BASE DE DATOS
PROFESORA: MARIA PILAR PAREDES COLMENAR
MYSQLD mysqld, es el programa principal que realiza la mayoría del trabajo en
una instalación MySQL. El servidor está acompañado por varios scripts que realizan operaciones de inicialización cuando se instala MySql Server
Todos los programas MySQL aceptan diferentes opciones. Sin embargo, cada programa MySQL proporciona una opción --help que puede usar para obtener una descripción de las opciones del programa. Por ejemplo: mysqld --help.
De forma breve algunos de los programas relacionados con MySQL server son::
mysqld El demonio SQL (esto es, el servidor MySQL). Para usar programas clientes, este
programa debe estar en ejecución, ya que los programas ganan el acceso a la base de datos conectándose al servidor.
mysqld-max Una versión del servidor que incluye características adicionales:
mysql_install_db Este script crea las tablas de permisos de MySQL con privilegios por defecto.
Normalmente se ejecuta sólo una vez, cuando se instala por primera vez MySQL en el sistema
mysql_fix_privilege_tables Este script se usa tras una actualización, para actualizar las tablas de permisos
con cualquier cambio que se hayan hecho en nuevas versiones de MySQL.
OPCIONES DEL COMANDO MYSQLD
Al arrancar el servidor mysqld , puede especificar opciones de programa de tres formas: Al ejecutar programas MySQL se les pueden indicar
opciones en varias formas: En la línea de comandos, a continuación del nombre del
programa. Este es el modo más común para opciones que se aplican a una ejecución específica del programa.
En un fichero de opciones, que el programa lee al iniciarse. Esto es lo acostumbrado para opciones que se desea que el programa use cada vez que se ejecuta.
En variables de entorno. Esto es útil para opciones que se desean aplicar cada vez que el programa se ejecuta
Para ver las opciones que mysqld acepta en línea de comandos podemos utilizar: mysqld --verbose --help.
OPCIONES DE MYSQLD EN LINEA DE COMANDO
Las opciones de programa indicadas en la línea de comandos están sujetas a estas reglas: Las opciones se colocan después del nombre del comando. Una opción comienza con uno o dos guiones, dependiendo de si
se ha utilizado la forma corta o larga de su nombre. Muchas opciones permiten ambas formas. Por ejemplo, -? y --help son, respectivamente, las formas corta y larga de la opción que solicita a un programa MySQL que muestre un mensaje de ayuda.
Los nombres de opciones son case sensitive. Tanto -v como -V son correctos pero tienen distinto significado. (Corresponden a la forma corta de las opciones --verbose y --version.)
Algunas opciones aceptan que se indique un valor a continuación del nombre. Por ejemplo, -h localhost o --host=localhost indican a un programa cliente MySQL el servidor de bases de datos MySQL a utilizar. El valor de la opción le dice al programa el nombre del ordenador host donde el servidor de bases de datos MySQL se está ejecutando.
OPCIONES DE MYSQLD EN LINEA DE COMANDO
Los nombres de opción largos se separan del valor asignado (si se les asigna uno) con un signo '='. Para un nombre de opción corto, el valor puede escribirse inmediatamente a continuación de la letra de la opción, o puede haber un espacio entre ambos. (-hlocalhost y -h localhost son equivalentes.)
Algunas opciones controlan comportamientos que deben habilitarse o deshabilitarse. Por ejemplo, el cliente mysql soporta una opción --column-names que determina si se mostrará o no una fila con los nombres de cada columna al principio de los resultados de una consulta. Por defecto, esta opción se encuentra habilitada. Sin embargo, en algunos casos se podria desear que permanezca inhabilitada, por ejemplo cuando la salida producida por mysql debe ser enviada a otro programa que espera sólo datos y no una linea inicial de encabezados.
Otra opción que puede ser ocasionalmente útil con mysql es -e o --execute, la cual se utiliza para enviar sentencias SQL al servidor. Las sentencias deben estar colocadas entre comillas (dobles o simples). Se pueden ejecutar varias sentencias separándolas por ;. Cuidado: si se desea incluir dentro de la consulta valores colocados entre comillas, habría que emplear comillas dobles para delimitar la consulta y simples para los valores en su interior. Cuando se utiliza esta opción, mysql retorna al prompt del intérprete de comandos inmediatamente después de ejecutar la sentencia.
EJEMPLOS:
Podemos obtener una lista de las cuentas de usuario del servidor de estas dos formas: mysql -u root -p -e "SELECT User, Host FROM
user" mysql ( en este caso el nombre de la base de datos se pasa como argumento)
mysql -u root -p -e "SELECT User, Host FROM mysql.user“
EJEMPLOS Si lanzamos ahora la sentencia: mysql -u root -p -e "SELECT User, Host FROM
mysql.user“ “select idmascota, nombre from zoologico.mascota”
LOS FICHEROS DE REGISTRO EN MYSQL
Los archivos de REGISTRO O log son ficheros de texto plano escritos por mysqld para dejar información sobre lo que ocurre en el servidor.
MySQL tiene varios archivos de registro diferentes que pueden ayudarle a encontrar lo que está ocurriendo en mysqld: Registro de errores: host_name.err Registro general de consultas: host_name.log Registro de actualización binario: mysql-
bin.001,mysql-bin.002 Registro de consultas lentas: host-slow.log
Por defecto todos estos ficheros de registro se crean en el directorio de datos de mysqld
EL REGISTRO DE ERRORES (ERROR LOG)
Contiene información sobre: Problemas de inicio, ejecución y detención de
MySQL así como de posibles errores críticos mientras el servidor se está ejecutando
En my.cnf log-error=path
Por defecto host_name.err y escribe el archivo en el directorio de datos.
Si ejecuta FLUSH LOGS, el registro de errores se renombra con el sufijo -old y mysqld crea un nuevo archivo de registro.
EL REGISTRO GENERAL DE CONSULTAS Registro de consultas:
Guarda las conexiones y los querys ejecutados En my.cnf log=path Por defecto host_name.log El registro de consultas contiene todas las sentencias Para saber que pasa en mysqld, se debe iniciar con la
opción --log[=file_name] o -l [file_name]. Si no se da un valor para file_name, el nombre por defecto es host_name.log. Esto registra todas las conexiones y sentencias a un archivo. Este registro puede ser muy útil cuando sospeche que hay un error en un cliente y quiera saber exactamente qué envió el cliente a mysqld. Las sentencias se escriben en el registro de consultas en el mismo orden que el servidor las recibe no necesariamente a como se ejecutan
EL REGISTRO BINARIO (BINARY LOG) Registro de actualización binario:
Por defecto: host_name-bin.001, host_name-bin.002,… Contiene:
Todas las sentencias que han actualizado datos o podrían haberlo hecho: (por ejemplo, un DELETE que no encontró filas concordantes).
Cuánto ha tardado cada sentencia que actualizó la base de datos .
No contiene sentencias que no hayan modificado datos
(utilizar el registro de consultas general ) El propósito principal del registro binario es el de
actualizar la base de datos durante una operación de recuperación tan completamente como sea posible, porque el registro binario contiene todas las actualizaciones hechas tras la copia de seguridad.
EL REGISTRO BINARIO Añade una extensión numérica al nombre del
registro binario Se incrementa cada vez que se inicia el servidor o se vuelcan
los logs Se crea un registro nuevo cuando se llega a max_binlog_size
Cuando se inicia mysql con la opción –log-bin=file-name se va escribiendo en el archivo todos los comandos SQL que actualizan datos. Si no se da ningún valor al nombre del archivo el valor por defecto es el nombre del host seguido de .bin. No hay que poner extensión al nombre del fichero
Ponerlo en my.cnf: log-bin=file-name Se pueden borrar los archivos de registro binario con
RESET MASTER y se pueden examinar con la utilidad mysqlbinlog (desde la shell) Mysqlbinlog nombreficherolog
EL REGISTRO DE CONSULTAS LENTAS (SLOW QUERY LOG)
Cuando se inicia mysql con la opción --log-slow-queries[=file_name], mysqld escribe un archivo de registro que contiene todos las sentencias SQL que llevaron más de long_query_time segundos para ejecutarse completamente o que no utilizaron índices. Si no indicamos nombre por defecto es host-slow.log
En my.cnf log-slow-queries=path long-query-time =1 log-queries-not-using-indexes
El registro de consultas lentas nos permite encontrar consultas que tomen excesivo tiempo y sean por tanto candidatos a optimización
El registro de consultas lentas se puede utilizar para encontrar consultas que tomen excesivo tiempo y sean por tanto candidatos a optimización.
Para hacer más sencilla la tarea de examinar un registro de consultas lentas se puede procesar el registro de consultas lentas utilizando el comando mysqldumpslow que ofrecerá un resumen de las sentencias que aparecen en el registro.
MANTENIMIENTO DE FICHEROS DE REGISTRO (LOG) Los ficheros logs ocupan mucho espacio en el disco por lo que
deben ser eliminados con periodicidad. En algunas distribuciones linux existe un script denominado
mysql-log-rotate para esto, si no ha sido instalado automáticamente es el administrador el que debe realizar el script y programar la tarea a través de cron o similar
Se puede forzar a MySQL para que comience a utilizar archivos de registro nuevos usando mysqladmin flush-logso con la sentencia SQL FLUSH LOGS.
Una operación de volcado de registros hace lo siguiente: Si se está utilizando registro (--log) o registro de consultas lentas (--log-
slow-queries), cierra y reabre el archivo de registro (mysql.log y `hostname`-slow.log por defecto).
Si se está utilizando registro de actualizaciones (--log-update) o registro binario (--log-bin) cierra el registro, y abre un nuevo archivo de registro con un número de secuencia superior.
Si está utilizando tan solo el registro de actualizaciones, tan solo tiene que renombrar el archivo de registro y posteriormente volcar los registros antes de hacer una copia de seguridad.