El peligro del permiso FILE de MySQL

Mediante el permiso FILE permitimos que desde una sentencia SQL se lea y se escriba en el sistema de ficheros del servidor MySQL de acuerdo con los permisos del usuario que se ejecute (normalmente existe un usuario dedicado llamado mysql o mysqld) Podemos otorgar dicho privilegio mediante GRANT FILE: mysql> grant file on *.* to [...]

Habilitar InnoDB en MySQL

InnoDB es uno de los motores de almacenamiento que incluye MySQL por defecto desde hace varias versiones, y a partir de la 5.5 va a ser el utilizado por defecto en decrimento de MyISAM. Su características principales son el soporte de transacciones, lo que permite una gestión de los bloqueos a nivel de tabla/fila mucho más inteligente, y también permite realizar backups incrementales en caliente, pero además tiene soporte de integridad referencial, por lo que podemos crear claves ajenas o foráneas entre tablas.

La versión de Drupal de alto rendimiento Presflow recomienda InnoDB como storage engine y Drupal 7 lo utiliza por defecto, …

[Lea más]
Habilitar InnoDB en MySQL

InnoDB es uno de los motores de almacenamiento que incluye MySQL por defecto desde hace varias versiones, y a partir de la 5.5 va a ser el utilizado por defecto en decrimento de MyISAM. Su características principales son el soporte de transacciones, lo que permite una gestión de los bloqueos a nivel de tabla/fila mucho más inteligente, y también permite realizar backups incrementales en caliente, pero además tiene soporte de integridad referencial, por lo que podemos crear claves ajenas o foráneas entre tablas.

La versión de Drupal de alto rendimiento Presflow recomienda InnoDB como storage engine y Drupal 7 lo utiliza por defecto, …

[Lea más]
Instalación de un servidor LAMP II (MySQL 5.5)

Para instalar un servidor LAMP moderno debemos pasar de instalar MySQL 5.1 a instalar la última versión estable de MySQL: La versión 5.5. Uno de los cambios más destacados es el nuevo sistema de compilación mediante cmake substituyendo al clásico configure. Es por esto que deberemos instalar los siguientes paquetes (o equivalentes): yum install cmake [...]

Una vista a MySQL Workbench 5.2 – SQL Editor

Nota previa: Esta no es una review minuciosa, es mas bien un tibio comentario sobre mi experiencia de usuario en las ultimas semanas con la herramienta MySQL Workbench 5.2.31 sobre Ubuntu 10.10.

Mi trabajo con MySQL aun no ha llegado al nivel de complejidad que quisiera, ya que tambien trabajo con SQL Server,  es propicia la ocasión para compartiles mis apreciaciones, respecto al Editor SQL (que antes fue MySQL Query Browser).

Si bien estoy muy acostumbrado a la linea de comando, éste no me permite guardar/recuperar un historial de consultas o advertirme de algún “horror”, incluso ahora prefiero la linea de comando por que me cuesta menos “clicks” y pulsaciones del teclado. Pero cuando las cosas se ponen serias, o mas complejas, una herramienta como Workbenck se hace completamente …

[Lea más]
Analizado los campos y tipos de datos en MariaDB

Con la sintaxis SELECT PROCEDURE ANALYSE  podemos obtener la respuesta de un query con los datos optimos en base a la consulta que hicimos y los datos presentes en la tabla, aca a un ejemplo:

 MariaDB [training]> select * from soccer_teams procedure analyse ();
 +-----------------------------------+--------------+------------+------------+------------+------------------+-------+-------------------------+--------+--------------------------------
 ----------+
 | Field_name                        | Min_value    | Max_value  | Min_length | Max_length | Empties_or_zeros | Nulls | Avg_value_or_avg_length | Std    | Optimal_fieldtype
 |
 +-----------------------------------+--------------+------------+------------+------------+------------------+-------+-------------------------+--------+--------------------------------
 ----------+
 | training.soccer_teams.id          | 1            | 2          |          1 |          1 |                0 | …
[Lea más]
Calcular el tamaño de una base de datos y tablas con Information Schema

Aca les dejo na breve y sencilla solucion para poder calcular los tamaños de las DB en MySQL /MariaDB y forks con Information Schema

Realmente es muy sencillo:

MariaDB [information_schema]SELECT table_name, table_rows, data_length, index_length,
-> round(((data_length + index_length) / 1024 / 1024),2) "Size in MB"
-> FROM information_schema.TABLES WHERE table_schema = "training";
+--------------+------------+-------------+--------------+------------+
| table_name   | table_rows | data_length | index_length | Size in MB |
+--------------+------------+-------------+--------------+------------+
| by_year      |          4 |       65536 |            0 |       0.06 |
| country      |          0 |           0 |         1024 |       0.00 |
| part         |          0 |       16384 |            0 |       0.02 |
| soccer_teams |          2 |       16384 |            0 |       0.02 |
| table1       |          0 |           0 |         1024 |       0.00 |
| …
[Lea más]
Error al arrancar slave MySQL: Got fatal error 1236 from master when reading data from binary log

Al arrancar un slave MySQL nos podemos encontrar con el siguiente error: Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file Puede ser difícil de ver, pero la solución suele ser muy simple. El MySQL nos esta diciendo que no [...]

Text

Voy a cambiar un poco de temática, ya que no solo de MySQL vive el mundo 2.0 ;) Apache, el servidor web estándar en el ecosistema LAMP es uno de los grandes olvidados a la hora de hacer un buen tuning de nuestra plataforma. A continuación voy a explicar una serie de pasos recomendados para lograr el máximo rendimiento de nuestra máquina y al mismo tiempo evitar que esta se caiga bajo un gran pico de visitas. Ni copiar configuraciones de internet ni dejar los valores por defecto son buenas ideas ;)

A la hora de instalar Apache debemos elegir entre dos versiones, aunque generalmente lo elegirá nuestro gestor de paquetes.

  • Apache Worker

Incluido desde Apache 2.0. Utiliza menos memoria y tiene un mejor rendimiento. Se lanzan múltiples procesos y cada uno de estos pueden correr múltiples threads.

  • Apache Prefork

Es el MPM por defecto en Apache 1.3 y …

[Lea más]
(No) Escalado de escrituras en MySQL

Muchas veces se montan replicaciones Master-Master con el fin de "balancear y escalar escrituras". En MySQL el concepto de escalabilidad existe, pero únicamente en lecturas. En cambio, con las escrituras esto no es posible a no ser que usemos engines especiales como SpiderSQL o modificaciones de replicación como Galera. Las razones por las que no se recomienda usar Master-Master para balanceo de carga son las siguientes:

  • El balanceo de carga es falso, por el simple hecho de tener una replicación master-master. Si lanzas una Update al HostA que tarda 5 minutos en terminar, cuando la query se replique al HostB este tardará también 5 minutos. Aquí no hay balanceo de carga, da igual a que host lances el INSERT o el UPDATE, todos tendrán que ejecutarlo y dedicar recursos. Por lo …

[Lea más]