MySQL: Listar transacciones bloqueantes

Anteriormente hemos visto cómo sacar los datos del SHOW PROCESSLIST y además el estado de la transacción InnoDB si es el caso, pero aun así deberemos interpretar la salida para buscar las transacciones que están bloqueando. Si tenemos mucha concurrencia nos pude llegar a ser imposible. Mediante la tabla information_schema.innodb_lock_waits podemos resolver dicho problema

Mediante la tabla information_schema.innodb_lock_waits obtenemos la relación de qué transacción esta bloquenado a que otra:

mysql> desc information_schema.innodb_lock_waits;
+-------------------+-------------+------+-----+---------+-------+
| Field             | Type        | Null | Key | Default | Extra |
+-------------------+-------------+------+-----+---------+-------+
| requesting_trx_id | varchar(18) | NO   |     | …
[Lea más]
MySQL, Ubuntu :: mysqld no tiene los derechos de acceso

Original post: http://anothermysqldba.blogspot.com/2014/07/mysql-ubuntu-mysqld-does-not-have.html

Así que hoy se me ocurre que tenga que restaurar una base de datos MySQL desde copias de seguridad para que pudiera recuperar algunas mesas. Mientras que dejé que la base de datos de producción funcionando a través del puerto 3306, he creado la copia de seguridad a través del puerto 3307. 

Sin embargo, cuando traté de iniciar otra versión a través del puerto 3307 en un directorio mysql_restore pero me encontré con algunos errores .... 


/usr/bin/mysqld_safe --defaults-file=/etc/my_3307.cnf 

[Warning] Can't create test file /var/lib/mysql_restore/localhost.lower-test 
[Warning] Can't create test file …

[Lea más]
MySQL: processlist con el estado de la transacción

Al realizar un SHOW PROCESSLIST podemos ver el estado de las conexiones a la base de datos, pero nos perdemos completamente el estado de las transacciones:

mysql> show processlist;
+----+------+-----------+--------------------+---------+------+-------+------------------+
| Id | User | Host      | db                 | Command | Time | State | Info             |
+----+------+-----------+--------------------+---------+------+-------+------------------+
| 81 | root | localhost | jordi              | Sleep   |  532 |       | NULL             |
| 82 | root | localhost | information_schema | Query   |    0 | NULL  | show processlist |
| 83 | root | localhost | NULL               | Sleep   |  119 |       | NULL             |
+----+------+-----------+--------------------+---------+------+-------+------------------+
3 rows in set (0.00 sec)

En el ejemplo anterior podriamos suponer que hay una conexión que lleva 532 …

[Lea más]
MySQL: SYSDATE() vs NOW()

En MySQL tenemos dos funciones para obtener la fecha actual que difieren muy ligeramente en su funcionamiento SYSDATE() y NOW(). Comparadas en una misma query aparentemente no tienen ninguna diferencia:

mysql> select sysdate(), now();
+---------------------+---------------------+
| sysdate()           | now()               |
+---------------------+---------------------+
| 2014-07-08 19:07:24 | 2014-07-08 19:07:24 |
+---------------------+---------------------+
1 row in set (0.00 sec)

Pero si las analizamos bien con un SLEEP() en medio podremos ver que su comportamiento difiere, con SYSDATE() obtenemos la fecha en la que se ejecuta dicha función:

mysql> select sysdate(), sleep(5), sysdate();
+---------------------+----------+---------------------+
| sysdate()           | sleep(5) | sysdate()           |
+---------------------+----------+---------------------+
| …
[Lea más]
MySQL: Definir el tamaño de innodb_log_buffer_size

La variable innodb_log_buffer_size controla el tamaño de un buffer que permite ejecutar transacciones sin tener que escribir el log a disco antes del fin de ésta. Vamos a ver cómo estimar su tamaño

El valor por defecto de dicha variable es de 1MB para versiones de MySQL anteriores a la 5.5 y de 8MB a partir de ésta. Dependerá de la carga del servidor si hace falta ampliarlo, pero 8MB es suficiente para la mayoria de los casos

Mediante la variable de estado Innodb_log_waits podemos ver un contador con las veces que ha sido necesario escribir a disco una transacción que no ha llegado aún al COMMIT porque dicho buffer era demasiado pequeño:

mysql> show status …
[Lea más]
Forzar el uso de UTF8 en MySQL

En varias ocasiones he visto que se ha empezado un proyecto con el encoding a latin1 y se ha querido migrar a UTF8. Vamos a ver cómo forzar un determinado encoding independientemente de la configuración del cliente de MySQL

Para asegurarnos que las conexiones se establecen con UTF8 podemos usar init-connect pata forzar el cambio a UTF8 mediante un SET NAMES. Además mediante character-set-server y collation-server podemos definir el charset y el collation por defecto del servidor:

[mysqld]
init-connect='SET NAMES utf8'
collation-server = utf8_unicode_ci
character-set-server = utf8

Tags: MySQL

Relacionados

[Lea más]
MySQL Error de tabla 1064

Original post : http://anothermysqldba.blogspot.com/2014/06/mysql-table-error-1064.html

Así que me encontré con una situación extraña hoy. 

Tengo un sistema que crea las tablas de memoria utilizando el PHP $ _COOKIE ['PHPSESSID'] valor. 

Una vez que un poco de trabajo se hace, a continuación, elimina la tabla. 

Dos tablas de ejemplo se encuentran por debajo de mi ejemplo. 


@@VERSION: 5.6.19-log 
CREATE TABLE `f7a7a8d3a7ba75b5eb1712864c9b27eb` ( 
-> `id` int(11) NOT NULL AUTO_INCREMENT, 
-> PRIMARY KEY (`id`) 
-> ) ENGINE=MEMORY; 

CREATE TABLE `8865e52c7e1bea515e7156f240729275` ( 
-> `id` int(11) NOT NULL AUTO_INCREMENT, 
-> …

[Lea más]
Eliminar usuario de MySQL

Para poder eliminar usuarios de una base de datos MySQL tenemos el comando DROP USER:

Si indicamos la combinación usuario@host podemos eliminar el acceso del usuario para esos determinados hosts, por ejemplo:

mysql> drop user 'joffrey'@'casterlyrock.com', 'joffrey'@'kingslanding.com';

Si indicamos únicamente el usuario, lo eliminaremos completamente, para todos los hosts:

mysql> drop user joffrey;

Tags: MySQL

Relacionados

[Lea más]
MySQL enteros aleatorios

Original post: http://anothermysqldba.blogspot.com/2014/06/mysql-random-integers.html

Esto no es una nueva característica, por cualquier medio, pero es una pregunta que me he suceder para ver estallar para arriba de vez en cuando. Así, un ejemplo rápido está siguiendo. 

Para generar un entero aleatorio dentro de MySQL puede utilizar el piso y las funciones de Rand. Los documentos manuales MySQL esta aquí: http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html # function_rand 

"  …

[Lea más]
Instalación Percona XtraDB Cluster

Original post: http://anothermysqldba.blogspot.com/2014/06/installing-percona-xtradb-cluster.html

Así que por supuesto Percona tiene documentación que explica el proceso. El objetivo de este blog es ir a un poco más de detalle, con la esperanza de que puedan ayudar a alguien. 

Los hipervínculos para su revisión: 

[Lea más]