Cuando se inicia el servidor MySQL, verifica las operaciones en su línea de comando para ver si debe iniciar sesión y abre el archivo de registro apropiado (si es así). Puede hacer que el servidor genere dos tipos principales de archivos de registro: Archivos de registro regulares. Informa conexiones de clientes, consultas y varios otros eventos. Cuando se inicia el servidor MySQL, verifica las operaciones en su línea de comando para ver si debe iniciar sesión y abre el archivo de registro apropiado (si es así). Puede hacer que el servidor genere dos tipos principales de archivos de registro: Archivos de registro regulares. Informa conexiones de clientes, consultas y varios otros eventos. Es útil para rastrear la actividad del servidor: quién se conecta, desde dónde y qué está haciendo.
Registro de cambios
Informa consultas que modifican la base de datos. El término "actualización" en este contexto se refiere no sólo a las declaraciones ACTUALIZAR, sino a todas las declaraciones que modifican la base de datos. Por este motivo, contiene registros de consulta para ELIMINAR, INSERTAR, REEMPLAZAR, CREAR TABLA, DROP TABLE, GRANT y REVOKE. El contenido del registro de actualización se escribe en forma de declaraciones SQL, que se utilizan como entrada para mysql. Los registros de actualización y las copias de seguridad son útiles si es necesario restaurar la tabla después de un fallo. Puede restaurar la base de datos desde un archivo de copia de seguridad y luego volver a ejecutar cualquier consulta que haya modificado la base de datos después de ese archivo de copia de seguridad utilizando el registro de actualización como entrada a mysql. Esto restaura la tabla a su estado en el momento del bloqueo.
Para que los registros sean efectivos, use la opción --log para habilitar el registro regular y la opción --log-update para habilitar el registro de actualizaciones. Estas opciones se pueden especificar en la línea de comando en mysqld.safe_mysqld o mysql.server, o en el grupo [mysqld] de una opción. Cuando el registro está habilitado, los archivos de registro se escriben en el directorio de datos del servidor de forma predeterminada.
El autor recomienda que ambos tipos de registros sean válidos cuando se utilice MySQL por primera vez. Después de adquirir algo de experiencia con MySQL, es posible que tenga la tentación de utilizar simplemente el registro de actualización para reducir los requisitos de espacio en disco.
Después de habilitar el registro, asegúrese de no llenar el disco con una gran cantidad de información de registro, especialmente si el servidor maneja una gran cantidad de consultas. Los tiempos de rotación y vencimiento de los archivos de registro se pueden utilizar para evitar que los archivos de registro crezcan sin límites y al mismo tiempo mantener los registros más recientes disponibles en línea.
La rotación de archivos de registro funciona de la siguiente manera. Supongamos que el archivo de registro se denomina log. En el primer bucle, se cambia el nombre del registro a log 0 y el servidor comienza a escribir un nuevo archivo de registro. En el segundo bucle, se cambia el nombre de log.0 a log.1, se cambia el nombre de log a log.0 y el servidor comienza a escribir otro archivo de registro nuevo. De esta manera, cada archivo recorre los nombres log 0, log 1, etc. Cuando el archivo llega a un cierto punto en el bucle, se puede finalizar.
Actualizar registros y declaraciones LOAD DATA
Normalmente, cuando el servidor ejecuta una declaración LOAD DATE, escribe solo la declaración en sí, no el contenido de la fila cargada, en el registro de actualización. Esto significa que las operaciones de recuperación que utilizan el registro de actualización estarán incompletas a menos que los archivos de datos permanezcan accesibles. Para garantizar que esto sea seguro, los archivos de datos no deben eliminarse a menos que se haya realizado una copia de seguridad de la base de datos.
Copia de seguridad del sistema
Los registros de actualización no siempre son buenos para la recuperación de la base de datos y, si una falla del disco hace que pierda los registros de actualización, asegúrese de realizar copias de seguridad periódicas del sistema de archivos. También es una buena idea escribir el registro de actualización en un disco diferente al que contiene la base de datos.
Por ejemplo, si realiza un ciclo de registros todos los días y desea conservarlos durante una semana, deberá mantener de log.0 a log.6. En el siguiente bucle, log.6 finalizará permitiendo que log.5 sobrescriba log.6 para convertirse en el nuevo log.6. De esta manera, puede conservar muchos registros sin exceder el límite del disco.
La frecuencia de la rotación de registros y la cantidad de registros antiguos que se conservan dependerán de qué tan ocupado esté el servidor (los servidores activos producen más mensajes de registro) y de cuánto espacio en disco desea dedicar a los registros antiguos. Al rotar registros regulares, puede usar el comando mysqla d - min flush-logs para indicarle al servidor que cierre el archivo de registro actual y abra un nuevo archivo de registro.
Una secuencia de comandos para realizar una rotación de registros regular se vería así (esto se puede modificar para reflejar el nombre base de su registro y la ubicación de su directorio de datos, y tal vez la cantidad de registros antiguos que desea conservar):
Es mejor ejecutar este script desde la cuenta mysqladm para asegurarse de que los archivos de registro pertenezcan a ese usuario. Si deja los parámetros de conexión en el archivo de opciones .my.cnf, no necesita especificar ningún parámetro en el comando mysqladmin del script. Si no hace esto, puede crear un usuario restringido que no haga más que emitir comandos de actualización. La contraseña de este usuario se puede colocar en el script con un riesgo mínimo. Si desea hacer esto, el usuario solo debe tener permisos RELOAD. Por ejemplo, para invocar al usuario vaciar y asignar una contraseña, vaciar pase, utilice la siguiente instrucción GRANT:
CONCEDER RECARGA EN *.* A flush@localhost IDENTIFICADO POR "flushpass"
Cuando necesite realizar una operación de actualización en un script, puede hacer esto:
mysqladmin -ufush -pflushpass descarga -logs
En Linux, es mejor usar logrotate para instalar el script mysql-log-rotate en el paquete de distribución de MySQL en lugar de escribir el script usted mismo. Si mysql-log-rotate no se instala automáticamente a través de un archivo RPM, debe verificar el directorio de archivos de soporte del paquete de distribución MySQL.
Debido a las diferencias en la forma en que los servidores manejan los archivos de registro de actualizaciones, la rotación de los archivos de registro difiere ligeramente entre los registros de actualización y los registros normales. Si le indica al servidor que use un nombre de archivo de registro de actualización sin una extensión (como actualización), el servidor creará automáticamente nombres de archivo de registro de actualización usando la secuencia de fecha de actualización 0 0 1, actualización.002, etc. Se genera un nuevo registro de actualización cuando se inicia el servidor y cuando se actualiza el registro. Si habilita el registro de actualizaciones sin especificar un nombre de archivo, el servidor genera una secuencia de archivos de registro de actualizaciones utilizando el nombre de host como nombre base.
Al finalizar una secuencia de archivos generados de esta manera, es posible que desee finalizarlos según su antigüedad (la hora en que se modificaron por última vez) en lugar de por su nombre. La razón de esto es que, dado que no sabe cuándo se emitirá el comando flush-log, no puede esperar crear una cantidad fija de registros de actualización en un período de tiempo determinado. Por ejemplo, si realiza una copia de seguridad de una tabla con mysqldump y utiliza la opción --flush-logs, se crea un nuevo archivo en esa secuencia de nombres de registros de actualización con cada copia de seguridad.
Para los registros de actualización con nombres de archivos secuenciales generados automáticamente por el servidor, el script de terminación basado en la antigüedad del registro tiene este aspecto:
El comando de búsqueda localiza y elimina archivos de registro de actualizaciones que se modificaron hace más de una semana. Es importante utilizar el parámetro -name para probar una extensión de archivo numérica para evitar eliminar tablas especificadas por una actualización incorrecta.
También puede decirle al servidor que use un nombre de archivo de registro de actualización fijo (si lo desea), lo cual es útil si desea realizar un ciclo del registro de actualización de la misma manera que un registro normal. Para utilizar un nombre de registro de actualización fijo, especifique un nombre que incluya una extensión. Por ejemplo, puede iniciar el servidor con la opción --log-update=update.log para usar el nombre up date .log. El servidor siempre cerrará y abrirá el registro cuando reciba el comando flush-logs, pero el servidor no generará archivos nuevos cada vez. En este caso, el script de rotación de registros para el registro de actualización y el script para el registro normal solo difieren en el nombre base del archivo de la rotación.
Si desea automatizar la rotación y terminación de registros, utilice cron. Se supone que los scripts para rotar registros regulares y registros de actualización son registros de rotación y registros de rotación - actualización - y están instalados en el directorio /usr/user/mysql/bin. Regístrese como usuario de mysqlladm y luego use el siguiente comando para editar el archivo crontab del usuario de mysqladm: % crontab -e
Este comando permite editar la copia de seguridad del archivo crontab actual (puede estar vacío si no se ha hecho anteriormente). Agregue líneas al archivo de la siguiente manera:
Esta entrada le dice a cron que ejecute este script todas las mañanas a las 4 am. Puede cambiar la hora o programarla según sea necesario. Consulte la página del manual de crontab para obtener instrucciones.
-