Archivo

Archivo para la Categoría "Bases de Datos"

Errores que hay que evitar al utilizar MySQL

19/04/2012 Deja un comentario

El uso de bases de datos en Internet es muy común, ya que la mayoría de páginas, CMS’s, y aplicaciones web en general necesitan de uno de estos sistemas para su correcto funcionamiento, independientemente del lenguaje en el que hayan sido desarrollados.

El sistema más popular para el manejo de datos es sin duda MySQL. Es relativamente sencillo desarrollar una aplicación que consulte a una base de datos y muestre los resultados, pero cuando el proyecto adquiere cierta envergadura, si no se plantea bien el desarrollo puede derivar en gran cantidad de problemas.

Hoy os comentamos una serie de consejos para optimizar el uso y prevenir errores en MySQL:

Usar MyISAM

Es el motor que usa por defecto MySQL. Es muy válido para pequeños proyectos, pero se recomienda el uso de InnoDB ya que MyISAM no soporta claves ajenas o foráneas y además, con cada Insert o Update se bloquea la tabla entera, con los problemas que esto conlleva.

No usar UTF-8

Si elegimos éste sistema de codificación nos evitaremos muchos problemas en cuanto a la internacionalización de la aplicación.

No utilizar funciones prediseñadas para MySQL

Al escribir el código de la página, si por ejemplo necesitamos realizar un cálculo, recurrimos al propio código. Pero MySQL dispone de un gran número de funciones que además de facilitarnos la tarea de programación, aumentarán la velocidad de la página.

Po ejemplo si necesitamos sacar la media de varias cantidades dadas, disponemos de la función AVG()

No optimizar las consultas

Cuando estamos creando la consulta sql, es preferible tomarse cierto tiempo para analizar y optimizar la consulta. Con ello ganaremos posteriormente en velocidad por parte de la aplicación.

Usar el caracter “*” en las consultas SELECT

Se recomienda el lugar de utilizar el “*”, seleccionar únicamente los campo que sean necesarios. Con ello evitaremos recoger más datos de los que se necesitan.

Utilizar tipos de datos erróneos

Deberemos estar seguros del tipo de dato (y tamaño) que vamos a necesitar en nuestra tabla. Por ejemplo si necesitamos la fecha utilizaremos DATE y no DATETIME o si necesitamos un valor numérico relativamente pequeño, utilizaremos por ejemplo TINYINT en lugar de INT

No filtrar la entrada de datos

Debemos prever que el usuario no intruduzca los datos que se le solicitan en los campos adecuados. Podemos comprobar los campos en el lado del cliente mediante JavaScript. También podemos realizar comprobaciones en el lado del servidor para filtrar los datos, evitar ataques por inyección de código, y también para evitar accesos innecesarios a la base de datos, ya que el sistema no devolvería un error.

Categorías:Bases de Datos Etiquetas: , , ,

Como crear una copia de seguridad de todas las bases de datos mysql

11/10/2011 Deja un comentario

En este post vamos a ver como realizar un backup de todas las bases de datos mysql de un servidor en un solo un comando:

for DB in `mysql -e “show databases” -u usuario -pcontraseña | grep -v Database`; do mysqldump -u usuario -pcontraseña $DB > “$DB.sql”; done

al ejecutar este comando se genera por cada base de datos un fichero .sql con el backup de la base de datos en cuestión.

Categorías:Bases de Datos

Como reparar todas las tablas de todas las bases de datos mysql de un servidor

20/09/2011 Deja un comentario

Es muy sencillo reparar y optimizar todas las tablas ejecutando el siguiente comando:

mysqlcheck -uadmin -p`cat /etc/psa/.psa.shadow` –auto-repair –check –optimize –all-databases

Categorías:Bases de Datos

Reparar las tablas dañas en mysql

24/11/2010 Deja un comentario

A veces un mal apagado del servidor o la muerte de nuestro proceso de mysql puede provocar errores en tablas. Encontrandonos con el siguiente error:

mysqld[1879]: 100438 8:310:47 [ERROR] /usr/sbin/mysqld: Incorrect key file for table ‘./var/lib/mysql/bd/logs.MYI’; try to repair it

en este caso haremos lo siguiente:

for database in $(mysql –skip-column-names -uadmin -p`cat /etc/psa/.psa.shadow` -e “show databases” ); do echo “bd: $database”; for table in $(mysql –skip-column-names -uadmin -p`cat /etc/psa/.psa.shadow` -e “show tables” $database ); do echo “reparando $table ” ; mysqlcheck -uadmin -p`cat /etc/psa/.psa.shadow` -r $database $table ; done ; done ;

Categorías:Bases de Datos

Uso de mytop

27/10/2010 Deja un comentario

Mytop es una utilidad de consola para monitorizar los procesos y el rendimiento de mySQL,  para funcionar necesita tener instalado Perl , DBI y Term::ReadKey.

Utilizando mytop puedes observar que consultas y bases de datos saturan el servidor mysql.

1) Primero instalamos esto como requisito previo.
wget http://search.cpan.org/CPAN/authors/id/J/J…Key-2.30.tar.gz
tar -zxvf TermReadKey-2.30.tar.gz
cd TermReadKey-2.30
perl Makefile.PL
make
make test
make install

2) Ahora instalamos mytop
wget http://jeremy.zawodny.com/mysql/mytop/mytop-1.4.tar.gz
tar -zxvf mytop-1.4.tar.gz
cd mytop-1.4
perl Makefile.PL
make
make test
make install

Para ejecutar la utilidad en la linea de comando ejecutamos lo siguiente:
mytop -uUSER -pPASSWORD

Categorías:Bases de Datos