Let’s try MariaDB

I should have written this entrance before, because the original in spanish was published on September 2013, one year ago! After installing MySQL and all the entrance related to MySQL upgrading versions, here for 5.6 and here for 5.7, I must try MariaDB. Let’s try MariaDB 10 It has been on alpha state (in developing …

Continue reading »

Esta entrada Let’s try MariaDB es contenido original de Manejando datos - Blog de bases de datos y programación. This entrance Let’s try MariaDB is created by Manejando datos - Blog de bases de datos y …

[Lea más]
Cómo calcular el consumo máximo de memoria de MySQL

Para poder dimensionar las variables referentes a tamaños de memoria de un MySQL deberemos tener en cuenta si se trata de un buffer global o bien por thread. Lo podemos calcular automáticamente con la salida de SHOW VARIABLES y esta herramienta online

Las variables siguientes se tratan de buffers globales:

  • key_buffer_size
  • query_cache_size
  • tmp_table_size
  • innodb_buffer_pool_size
  • innodb_additional_mem_pool_size
  • innodb_log_buffer_size

Mientras que las siguientes son por thread:

  • sort_buffer_size
  • read_buffer_size
  • read_rnd_buffer_size
  • join_buffer_size
  • thread_stack
[Lea más]
Error MySQL secure_auth

Original post: http://anothermysqldba.blogspot.com/2014/07/mysql-secureauth-error.html

Me dirigí a los errores secure_auth antes cuando la replicación se bloquea en esta entrada del blog . 

Sin embargo, pensé que iba a hacer este blog publicar una solución más general cuando se conecta a través de clientes de MySQL.Esto es para los servidores antes de MySQL 5.6. 

Así que si usted consigue un error secure_auth cuando la conexión a MySQL los siguientes pasos debe eliminar este error. 

[Lea más]
MySQL 5.6: [ERROR] Can’t find messagefile /usr/share/mysql/errmsg.sys

Instalando una base de datos con MySQL 5.6 nos podemos encontrar con el siguiente error al intentar inicializar el datadir:

# /usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/var/mysql --basedir=/usr/local/mysql
Installing MySQL system tables...2014-07-15 10:13:45 0 [Warning] Using unique option prefix key_buffer instead of key_buffer_size is deprecated and will be removed in a future release. Please use the full name instead.
2014-07-15 10:13:45 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2014-07-15 10:13:45 6962 [ERROR] Can't find messagefile '/usr/share/mysql/errmsg.sys'

En realidad lo que esta ocurriendo es que no esta encontrando las variables necesarias para hacer la instalación, por lo que simplemente deberemos indicar mediante la opción …

[Lea más]
Comment on Installing new modules in Python by Anaconda and MySQL - Manejando datos

[…] you need to install a package. On a previous post, I already explained how you can install MySQLdb, but, even doing this, it doesn’t […]

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]