Displaying posts with tag: MySQL (reset)
Ver el estado de un MySQL

Para ver las queries que se están ejecutando en un MySQL se usa SHOW PROCESSLIST;, pero muchas veces no nos interesa tanto que queries se ejecutan sino la cantidad que hay para ello podemos recurrir a otra variable.

mysql> show processlist;
(...)
6 rows in set (0.00 sec)

Mediante SHOW STATUS podemos ver la cantidad de queries en ejecución con las variables Threads_%:

mysql> show status like 'Threads%';
+-------------------+--------+
| Variable_name     | Value  |
+-------------------+--------+
| Threads_cached    | 25     |
| Threads_connected | 6      |
| Threads_created   | 378847 |
| Threads_running   | 1      |
+-------------------+--------+
4 rows in set (0.00 sec)

Su significado es:

  • Threads_cached: Número de threads en la thread cache, no tiene porque coincidir con …
[Lea más]
Cambiar la contraseña de un usuario en MySQL

Existen varias formas de cambiar la contraseña a un usuario en MySQL. Podemos tanto manipular la tabla user de MySQL o usar el GRANT o SET PASSWORD.

Una opción puede ser es obtener los privilegios del usuario y repetir el GRANT con la nueva contraseña. Con el SHOW GRANTS FOR podremos verlos:

mysql> show grants for jordi@'1.1.1.1';
+------------------------------------------------------------------------------------------------------------+
| Grants for jordi@1.1.1.1                                                                                   |
+------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'jordi'@'1.1.1.1' IDENTIFIED BY PASSWORD …
[Lea más]
Percona Live London

La próxima semana comienza la Percona Live y esta vez podremos disfrutarla sin salir de Europa. Durará dos días, 24 y 25 de Octubre.

Durante el primer dia se impartirán tutoriales de diversos tema, como por ejemplo NDB o Sphinx.

http://www.percona.com/live/london-2011/schedule-tutorial/

Y el segundo día se reserva para las conferencias:

http://www.percona.com/live/london-2011/schedule-conference/

Las conferencias serán impartidas no solo por compañeros de Percona, si no también por trabajadores de empresas como Paypal, Facebook, Nokia, Couchbase o Monty Program.

Como se puede comprobar, posibilidades de aprender hay miles. Aún estás a tiempo de apuntarte

Incorrect usage of DB GRANT and GLOBAL PRIVILEGES

Al dar o revocar ciertos privilegios nos podemos encontrar con el siguiente error:

mysql > revoke super on database.* from 'luser';
ERROR 1221 (HY000): Incorrect usage of DB GRANT and GLOBAL PRIVILEGES

Los privilegios de MySQL que no afectan a las tablas sino que son globales como PROCESS, FILE, SUPER, entre otros, no pueden ser aplicados a una base de datos o tabla mediante el modificador ON (por ejemplo ON basededatos.tabla o ON basededatos.*).

Para dar o revocar estos privilegios deberemos indicarlo para todas las bases de datos y tablas con ON *.*, por ejemplo:

mysql > revoke super on *.* from 'luser';
Query OK, 0 rows affected (0.00 sec)

Tags: …

[Lea más]
Recopilar información del SO en el momento preciso

Muchas veces los problemas que tenemos con nuestra base de datos no son continuos, si no puntuales, y ocurren generalmente cuando no estamos mirando la pantalla. Las herramientas que hoy voy a mostraron os permitirán cazar el momento exacto de un problema y recabar todos los datos posibles en ese preciso instante de tiempo.

Las dos herramientas pertenecen al Percona Toolkit. Estas toolkit incluyen lo que antes era Aspersa y Maatkit. Por lo tanto, comenzamos descargando:

Percona Toolkit Download

Dentro de el las utilidades que hoy usaremos serán:

pt-collector: es la herramienta que se lanzará cuando una condición específica se de. Entre otras cosas se encargará de recargar información sobre IO, procesos, memoria, processlist, estado de las variables en MySQL y salidas de comandos como iostat, mpstat, df, lsof. También …

[Lea más]
MySQL: Sort aborted

Cuando nos encontramos en el log del MySQL con “Sort aborted” puede significar varias cosas, deberemos ver en que caso estamos para actuar convenientemente o simplemente ignorar el error.

110930 19:12:30 [ERROR] /usr/local/mysql/libexec/mysqld: Sort aborted

El error puede aparecer en varios situaciones:

  • Si nos quedamos sin espacio en el directorio de tmp que usa el MySQL. Lo podemos ver mediante show variables:
    mysql> show variables like 'tmpdir';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | tmpdir        | /tmp  |
    +---------------+-------+
    1 row in set (0.00 sec)
    

    Si nos hemos quedado sin espacio al hacer un sort en disco podemos ampliar la partición, crear una dedicada o bien cambiar el path del tmpdir:

    tmpdir = /var/tmp/mysql
    

    Debemos …

[Lea más]
Tamaño mínimo para la indexación con FULLTEXT

Las tablas MyISAM tienen la ventaja sobre las InnoDB que pueden ser indexadas con FULLTEXT. Uno de los parámetros para indexar estas tablas es el tamaño mínimo de la palabra a indexar.

No podemos indicar esta parámetro por tabla, por lo que debemos hacer el cambio global. La variable es ft_min_word_len:

mysql> SHOW VARIABLES LIKE 'ft_min_word_len';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| ft_min_word_len | 4     |
+-----------------+-------+
1 row in set (0.00 sec)

Para cambiar dicha variable deberemos modificar el my.cnf con el nuevo valor y a continuación reiniciar el MySQL.

Una vez reiniciado podemos comprobar el nuevo valor:

mysql> SHOW VARIABLES LIKE 'ft_min_word_len';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| …
[Lea más]
Exportar inventario de servidores con racktables a CSV

Anteriormente ya hablamos de racktables, se trata de un software para mantener el inventario de servidores con su posición en el rack. En el caso que necesitemos exportar dichos datos a un formato tratable como es CSV veremos que no hay ninguna opción en el software por lo que deberemos mirar en la base de [...]

Como vimos en el post anterior, es posible lanzar una query que lea...

Como vimos en el post anterior, es posible lanzar una query que lea todos los datos que deseamos indexar. Esto no es problema si los datos son pocos, por ejemplo en el caso de employeesdb estamos hablando de 300.024 registros, que son más bien pocos. Cuando ya hablamos de varios gigas de datos y millones de filas las cosas se complican. Los índices de Sphinx hay que recrearlos cada cierto tiempo para que las búsquedas de nuestra web nos den datos lo más actuales posibles. Por lo tanto, lanzar una query que en definitiva es un escaneo completo de tabla, cada 5 minutos, con millones de registros, será un problema de rendimiento importante. Existen varias soluciones para aliviar un poco esta carga. La primera y más obvia que a mi me viene a la cabeza es usar un mySQL slave que solo usaremos para este actualizar los índices de Sphinx. Podemos incluso, si hay RAM suficiente, crear tablas con engine Memory y aumentar aún más el rendimiento. Pero …

[Lea más]
Hasta que tengamos en las manos la versión 5.6 de MySQL, si queremos...

Hasta que tengamos en las manos la versión 5.6 de MySQL, si queremos hacer uso de los índices FULL TEXT solo podemos guardas nuestros datos en tablas MyISAM. Por lo tanto, tenemos que dejar de lado consistencia de datos, rápido chequeo de tablas, transacciones, etc. Y aunque realmente no necesitemos todas esas funcionalidades y podamos vivir solo con MyISAM, llegará un momento en el que los índices sean tan grandes que hacer uso de búsquedas de texto contra MySQL se terminará volviendo un cuello de botella. No nos vamos a engañar, el rendimiento de los FULL TEXT en MySQL no es bueno :)

Para ayudarnos en las búsquedas de texto dentro de nuestra aplicación web vamos a aprender a usar, a nivel básico, el servicio de búsquedas FULL TEXT Sphinx. Este servicio nos proveerá de un servicio de búsquedas rápido y escalable, independientemente del origen de los datos que pueden …

[Lea más]