Consultas comunes en MySQL y funciones útiles

Bases de datos Sin comentarios »

Casi por casualidad, buscando alguna forma de implementar el algoritmo de comparación de cadenas de levenshtein me he encontrado ésta web que no sólo me ha solucionado el problema sino que me ha parecido de lo más interesante.

Artfulsoftware: Common MySQL Queries / Extending Chapter 9 of Get it Done with MySQL 5&6 (En inglés)

Recordad que para definir funciones a través de la consola de MySQL debemos primero cambiar el delimitador por defecto, definir la función, procedure, trigger o lo que corresponda, y volver a restablecer el delimitador por defecto:

DELIMITER $$
(AQUÍ VA LA DEFINICIÓN DE LA FUNCIÓN, PROCEDURE O TRIGGER)
$$
DELIMITER ;

Evita los problemas de rendimiento modelando correctamente tu BBDD

Bases de datos, Programación, Servidores 2 comentarios »

La creación y gestión de modelos de datos es una parte fundamental de un arquitecto/administrador de bbdd, el cual dispone de los conocimientos necesarios para desempeñar ésta tarea. Sin embargo, a pequeña escala ésta función suele estar desempeñada por los propios programadores, que en muchos casos tienden a restar importancia al modelado de datos y su tarea se reduce a crear algo que “funcione”.

Son muchos los casos en los que nos encontramos con aplicaciones y sistemas que se encuentran en producción con graves problemas de rendimiento debido a una mala planificación o mal diseño de su base de datos.

Continuar leyendo »

Esquema de base de datos de Wikipedia

Bases de datos Sin comentarios »

Leyendo el Blog de Luauf me encontré con éste interesante post en el que ha publicado el esquema del modelo de datos de la bbdd de la wikipedia.

Existen multitud de libros y recursos al respecto, pero si hay tiempo probablemente más adelante cree una serie de tutoriales y guías sobre el modelado de datos. Para los impacientes, aprovecho para poner aquí una web en la que podréis obtener diagramas de modelos de datos de una gran variedad de casos (videoclubs, hospitales, gestion de empleados, catálogo de producto, etc). de forma gratuita. Es uno de los mejores recursos que he encontrado al respecto:
http://www.databaseanswers.org/data_models/index.htm

Configurar un gateway NAT básico en linux con iptables

Bases de datos, Programación, Seguridad, Servidores, Unix 27 comentarios »

Esquema de configuración de un Gateway NAT

Es probable que en nuestro grupo de servidores tengamos uno o varios que por seguridad se encuentren en un segmento de red aislado, inaccesible desde internet (es decir, sólo con conexión a la LAN), por lo que en caso de necesitar realizar alguna actualización o instalación de software en dichas máquinas, nos encontraremos con el problema de no poder descargar nada de internet.

En este y otros casos similares, una solución rápida puede ser configurar uno de los servidores web, o cualquier máquina que tenga acceso a la LAN y también a internet a través de 2 interfaces distintos de red, para que pueda actuar también como pasarela de acceso a internet para resto de máquinas de la LAN.

A continuación configuraremos la máquina que tiene acceso a internet como gateway NAT para que enrute a las máquinas que se encuentran dentro de la LAN hacia internet.

Posteriormente, en otra entrada, utilizaremos esto como base para instalar un servicio de VPN en el gateway y poder acceder salir a internet a traves de su conexión, aunque nos estemos conectando de forma remota a la red.
Continuar leyendo »

15 minutos que pueden salvar la vida de un dba

Backup, Bases de datos, General, Servidores, Shell, Unix 1 comentario »

chart-mysql-zrm-no-brg

Si, reconozco que es una de las tareas más tediosas y aburridas que existen, pero implementar una correcta política de copias de seguridad puede salvar ‘tu vida’, coloquialmente hablando.

Anteriormente hablamos sobre la instalación de rdiff-backup para realizar copias de seguridad incrementales, también comentamos en otra ocasión cómo realizar conexiones ssh con llaves encriptadas para poder copiar archivos de forma segura entre servidores vía scp.

Desgraciadamente, no todos tenemos el tiempo suficiente para crear nuestros propios scripts personalizados para realizar las copias de seguridad, por lo que hoy INSTALAREMOS Y CONFIGURAREMOS EN SÓLO 15 MINUTOS ZRM (Zmanda Recovery Manager for Mysql), una sencilla, potente y fiable utilidad (gratuita) para Mysql que se encargará de una de las tareas fundamentales de cualquier administrador de base de datos, las copias de seguridad.

ZRM soporta cualquiera de los Storage Engines de Mysql y realiza tanto backups incrementales como backups totales. ZRM también soporta la última versión de Mysql (5.1), con soporte para realizar backups de particiones, de las que hablaremos más adelante.
Continuar leyendo »

Cheat Sheets: Guias rápidas de referencia

Bases de datos, Diseño web, Maquetación HTML y CSS, Programación, Shell Sin comentarios »

Tienen mil nombres distintos en función del país o la región, chuletas, acordeones…, en nuestra época escolar las usabamos para aprobar los exámenes y en términos de programación se conoce como cheat sheet a las guias rápidas de referencia que no suelen ocupar más de una o dos hojas.

La web Added Bytes (En inglés), tiene un montón de Cheat Sheets que podemos descargar e imprimir, personalmente, yo las he impreso y reunido en una carpeta que me acompaña a todos lados, no sabría vivir sin ella.

Algunas Cheat Sheets:

PHP
CSS
Expresiones regulares
Javascript
Mysql
Jquery

Otras Cheat Sheets:

Added Bytes

INSERT DELAYED en MySQL

Bases de datos, PHP Sin comentarios »

Hace tiempo que programé un sistema para servir medios publicitarios online a diversas webs y blogs.  Si bien al principio no tuvimos problemas, hace semanas el tráfico del script que sirve la publicidad se ha visto cuadruplicado, llegando a las 5.000.000 de impresiones diarias, ésto dejó al servidor mysql al borde del colapso total con un 99% de uso de CPU.

¿Cómo lo solucioné?. Continuar leyendo »

Permitir que PHP (en apache) se conecte a bases de datos remotas con Selinux

Bases de datos, PHP, Programación, Seguridad, Unix Sin comentarios »

Uno de los problemas que más me han traido de cabeza últimamente ha sido al modificar unos scripts php para que se conecten a una bbdd en un servidor remoto en lugar de al localhost.

Una vez revisada la configuración del servidor remoto, firewall, permisos y la posibilidad de conectarse a la máquina remota desde nuestro servidor (mysql -u user -p -h host_remoto), los scripts simplemente eran incapaces de conectarse si se ejecutaban a través de apache, en cambio, si se ejecutan a través de CLI, funcionan correctamente.

La razón es que tenía instalado SELinux, el cual impide por defecto al apache conectarse a un servidor de bbdd remotas.

Para habilitarlo:

setsebool -P httpd_can_network_connect=1

Más información

Configuración óptima MySql

Bases de datos Sin comentarios »

Hace tiempo tuve problemas de rendimiento con un servidor mysql. Estuve bastante tiempo buscando y recopilando información acerca de cómo optimizar el mysql y configurarlo correctamente.

No hay una solución única en cuanto a cual es la configuración óptima, depende del uso, contenido de las bases de datos y especificaciones de hardware, asi que, dada la cantidad de páginas e información que hay al respecto, he intentado crear un archivo de configuración, el cual generalmente me ha funcionado bastante bien.

El contenido del my.cnf despues del salto ;)

No olvidéis hacer una copia de seguridad de vuestro my.cnf antes de modificarlo.

Hay que reiniciar el mysql despues de modificar éste archivo.

Continuar leyendo »

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS Iniciar sesión