Cliente

El comando mysql es un programa (cli) para acceder al servidor de base de datos MySQL

Todo comando debe terminarse con ; o \G si se quiere que los resultados aparezcan de forma vertical

Comandos

Servidor

Administracion de usuarios

Backup

Backup remoto

Con este script se puede hacer backup de todas las bases de datos de un servidor mysql desde otra maquina.

#backup completo de las bases de datos mysql

host=192.168.1.59
user=backup
password=algoimposiblederecordar
dir=/var/backup/mysql/full_backup

mkdir -p $dir
for db in $(mysql -h $host -u $user --password=$password -se 'show databases' | egrep -v "bk|ibdata" | tail -n +2); do
        mysqldump -h $host -u $user --password=$password --flush-logs --opt $db > $dir/$db.sql
done

Sentencias que se estan ejecutando

Para mirar los procesos y sentencias sql que se estan ejecutando se pueden usar cualquiera de estos comandos:

Debido a la velocidad con la que se crean nuevos procesos es posible que sea mejor mirar este listado una vez por segundo lo cual se puede hacer con el comando:

# mysqladmin processlist --verbose -i1

Informacion sobre el estado

Las opciones GLOBAL y SESSION son nuevas en MySQL 5.0.2 Con GLOBAL, obtiene los valores de estado para todas las conexiones a MySQL. Con SESSION, obtiene los valores de estado para la conexión actual. Si no usa estas opciones, por defecto es SESSION. LOCAL es sinónimo de SESSION.

Una forma muy util de consultar esta informacion es mirando los cambios de los valores una vez por segundo:

Al mysqladmin que viene con MySQL 5.1 no le sirve la opcion -r en ese caso puede usar mext:

Variables de estado

Algunas de las variables:

Una explicacion completa de las variables se puede ver en el manual de mysql seccion: Variables de estado del servidor

Variables de sistema

Modificar variables sin reiniciar

Dede MySQL 4.0.3, muchas variables de sistema son dinamicas y pueden cambiarse con el comando SET mientras el sistema esta corriendo:

Ejemplo:

Recuerde que al reinicar mysql estos cambios despareceran excepto que tambien los ponga en el archivo de configuracion de mysql

Analizar su desempeño y optimizar

Registro de consultas lentas

Para crear un archivo de registro con las consultas que se demoran mas de un segundo añada las siguientes variables al final su archivo de configuracion de mysql:

Para versiones de mysql menores a 5.1.12

long_query_time = 1
log-slow-queries = /var/log/mysql-slow-queries.log 

En versiones a partir de 5.1.12 y antes de 5.1.29

long_query_time = 1
log-slow-queries = /var/log/mysql-slow-queries.log 
slow_query_log = 1

En las versiones a partir de 5.1.29

long_query_time = 1
slow_query_log_file = /var/log/mysql-slow-queries.log 
slow_query_log = 1

Si tiene algun problema o quiere profundizar sobre el tema, puede consultar la seccion The Slow Query Log del manual correspondiente a su version de mysql

Algunas veces en el registro el tiempo se da en el formato timestamp, para transformarlo a algo mas legible puede ejecutar la sentencia:

SELECT FROM_UNIXTIME(1247670725);

mysqlreport

mysqlreport es un script que hace un informe amigable sobre el estado del servidor, este informe da unas buenas bases para empezar a optimzar el desempeño del servidor. (en Debian este script es parte del paquete mysql-client)

Maatkit

Maatkit hace que las bases de datos de fuentes abiertas sean mas faciles y seguras de manejar. Proporciona simple y predecibles maneras de hacer cosas que de otra forma no se podrian. Esa es la razon por la que Maatkit ahora viene por defecto con muchas distribuciones GNU/Linux como Debian y CentOS. Usted puede usar Maatkit para probar que la replicacion esta funcionando correctametne, arreglar datos corruptos, automatizar tareas repetitivas, aumentar la velocidad de sus servidores y mucho mas.

Pruebas de desempeño

Cargar un archivo csv

Una forma util de cargar archivos de hojas de calculo es guardarlo en el formato CSV (Comma-separated values) y luego importarlos con el comando LOAD DATA.

Ejemplo sencillo, carga cada fila de un csv hecho con excel en la base de datos:

LOAD DATA INFILE '/tmp/datos.csv' INTO TABLE la_tabla
FIELDS TERMINATED BY ';'
LINES TERMINATED BY '\r\n'

Ejemplo avanzado:

LOAD DATA INFILE '/tmp/datos.csv' IGNORE INTO TABLE la_tabla
FIELDS TERMINATED BY ';'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(nombres, apellidos, @cumpleanos, @email, @telefono_movil)
SET
cumpleanos = str_to_date(@cumpleanos, 'd/m/Y'),
email = NULLIF(@email,''),
telefono_movil = NULLIF(@telefono_movil,''),
fecha_insercion=now()

Por problemas tecnicos(tal vez el filtro de spam) en el ejemplo anterior:

d/m/Y debe cambiarse por el_simbolo_porcentajed/el_simbolo_porcentajem/el_simbolo_porcentajeY

Advertencias (Warnings)

Asi se ve la salida de load data cuando hay warnings:

Query OK, 495 rows affected, 221 warnings (0.00 sec)
Records: 495  Deleted: 0  Skipped: 0  Warnings: 220

Si desea saber cuales son estos warnings, inmediatamente despues de ejecutar LOAD DATA, ejecute el comando:

SHOW WARNINGS

Comandos utiles

pager less -n -i -S

Blogs

Libros

Soporte técnico

Enlaces


CategoryBorrador | CategorySoftware

mysql (last edited 2010-09-02 15:26:37 by Kmilo)