Displaying posts with tag: MySQL (reset)
MySQL: La opción skip-name-resolve

Una de las opciones que suelo usar en un MySQL por defecto es:

skip-name-resolve

En la guia de instalación de MySQL 5.5 ya la habilita al instalar el MySQL.

Dicha opción deshabilita la resolución de nombres, por lo que veremos al iniciar MySQL Warnings como los siguientes:

101202 15:43:44 [Warning] 'user' entry '@penny.systemadmin.es' ignored in --skip-name-resolve mode.

Nos esta indicando que no podrá aplicar los GRANTs relacionados con nombres al no poder resolver las IPs de los clientes: deberemos usar la IP en lugar del nombre en los GRANTs.

En caso que no apliquemos dicha opción para usar nombres en lugar de IPs, si el resolver falla nos encontraremos que el MySQL …

[Lea más]
Buscando campos entre todas las bases de datos de MySQL-MariaDB

Justo esta mañana he tenido un problema con #MySQL y obtenía un error un tanto “extraño”, no por que saliera un error, sino porque el campo que daba el error no me resultaba conocido. En concreto, he creado un procedimiento para realizar tablas de referencas cruzadas, y al ejecutar me saltaba un error: El caso …

Continuar leyendo »

The post Buscando campos entre todas las bases de datos de MySQL-MariaDB appeared first on Manejando datos.

Analizar el uso de memoria de MySQL

Una pregunta muy habitual suele ser:

Mi base de datos tiene 40GB de buffer pool, pero está consumiendo 60GB. ¿Por qué?

Una pregunta sencilla cuya respuesta es por lo general difícil de encontrar. MySQL no nos da mucha información sobre donde se está usando esa memoria. Un problema que se intentará arreglar en el próximo Oracle MySQL 5.7 así que hasta que llegue ese momento toca realizar tareas de investigación. Lo primero y lo lógico es mirar el my.cnf y tener en cuenta estos detalles:

  • Hay 4 buffers que se usan por sesión. Eso quiere decir que no es un valor global, si no que se puede multiplicar por el número de threads que tengas abiertos. read_buffer_size, read_rnd_buffer_size, sort_buffer_size y join_buffer_size son los que tenemos que investigar primero. La recomendación habitual es no cambiar los valores por defecto de dichas variables. La …
[Lea más]
Comprobar si el MySQL sigue levantado con mysqladmin

El comando mysqladmin dispone de varias opciones, una de ellas (ping) permite comprobar si el MySQL esta levantado.

$ mysqldadmin
(...)
Where command is a one or more of: (Commands may be shortened)
  create databasename   Create a new database
  debug                 Instruct server to write debug information to log
  drop databasename     Delete a database and all its tables
  extended-status       Gives an extended status message from the server
  flush-hosts           Flush all cached hosts
  flush-logs            Flush all logs
  flush-status          Clear status variables
  flush-tables          Flush all tables
  flush-threads         Flush the thread cache
  flush-privileges      Reload grant tables (same as reload)
  kill id,id,...        Kill mysql threads
  password new-password Change old password to new-password, MySQL 4.1 hashing.
  old-password new-password Change old password to new-password in old …
[Lea más]
Cagadas memorables: El caso de la SELECT en un ndb

Al reiniciar un MySQL Cluster (ndb) para hacer un downgrade de kernel y ver todos los nodos operativos:

# /opt/mysql-cluster/bin/ndb_mgm -e show
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)]     3 node(s)
id=11   @10.10.6.1  (mysql-5.5.29 ndb-7.2.10, Nodegroup: 0, Master)
id=12   @10.10.6.2  (mysql-5.5.29 ndb-7.2.10, Nodegroup: 0)
id=13   @10.10.6.3  (mysql-5.5.29 ndb-7.2.10, Nodegroup: 0)

[ndb_mgmd(MGM)] 2 node(s)
id=1    @10.10.6.5  (mysql-5.5.29 ndb-7.2.10)
id=4    @10.10.6.4  (mysql-5.5.29 ndb-7.2.10)

[mysqld(API)]   1 node(s)
id=54   @10.10.6.4  (mysql-5.5.29 ndb-7.2.10)

Pasé a comprobar la disponibilidad de los datos en el nodo SQL (el mysqld) con un count() en una tabla grande:

mysql> select count(*) tabla_gordota; …
[Lea más]
Usando CAST en MySQL – MariaDB

CAST es una de esas funciones que incluye MySQL que están ahí, pero que poca gente conoce. El caso es que vamos a ver un ejemplo de cómo se utiliza, a raíz de una consulta de unión. La documentación de esta función la podéis consultar aquí: http://dev.mysql.com/doc/refman/5.0/es/cast-functions.html.

Seleccionamos una tabla y hacemos una consulta, seleccionamos una segunda table y hacemos otra consulta, y creamos una consulta de UNION de ambas tablas, sabiendo que aunque son distintas, los campos deben nombrarse igual (para que la unión sea correcta!).

Consulta de UNION

A priori, parece que todo va bien, pues incluso la consulta de UNION parece …

[Lea más]
Forzando índices en MySQL – MariaDB

Dentro de un proyecto de investigación en la Universidad de Córdoba, trabajamos con una base de datos en MySQL que tiene unos cuantos registros, en torno a 9 Gb, de los que el 95% se concentran en una sola tabla “datos“.

Forzando índices

En esta tabla se guardan datos con una frecuencia de 5 minutos, pero necesitamos calcular los datos agregados horarios. Para año y medio de datos, tenemos unos cuantos millones de datos, concreamente 57 millones .

Datos

Nos metemos en faena, pero comprobamos los índices disponibles:

[Lea más]
Índices en MySQL

Los índices, quizás, sean uno de los aspectos más desconcertantes de las bases de datos para los más inexpertos, pero a su vez, son muy importantes.

Quizás, para los que solo trabajais con Microsoft Access no sea un factor clave, ya que realmente es una de las debilidades, pero para MySQL y MariaDB los índices son muy importantes. En mi proyecto S·lar con la Universidad de Córdoba empecé con Access pensando que sería suficiente, pero la realidad es que acabé necesitando MySQL y toda su potencia. Cuando las tablas empezaron a rozar el Giga de tamaño, empecé a tener serios problemas de rendimiento, hasta que aprendí a usar los índices.

Consultas …

[Lea más]
InnoDB Log, que es y como configurarlo

Prácticamente todas las bases de datos tienen algo que generalmente se conoce como REDO LOG. MySQL también lo tiene (ib_logfile*) y hasta donde yo se toda base de datos con propiedades ACID lo tiene. La idea de este post es explicar cual es la utilidad de dicho log y que tamaño deberemos configurar para mejorar el rendimiento de nuestra base de datos.

¿Qué es este log?

Son dos ficheros (o más si tu lo configuras así) que funcionan de forma circular y secuencial. Imaginemos que tenemos A y B. InnoDB empieza escribiendo en A desde el inicio del fichero hasta el final. Una vez terminado con A comienza con B... y una vez terminado B vuelva a A reescribiendo los datos que en el hay. Por lo tanto, independientemente del número de ficheros que tengas configurado en innodb_log_files_in_group este actuará como uno solo. Por esa razón no se suele cambiar innodb_log_files_in_group pero si el tamaño total del …

[Lea más]
Disclaimer típico: esto es una opinión mía, completamente personal y...

Disclaimer típico: esto es una opinión mía, completamente personal y no la opinión de la empresa para la que trabajo.

Últimamente mucha gente habla de MariaDB, generalmente por noticias estilo:

RedHat will switch from Oracle MySQL to MariaDB. Por cierto, desmentida por Red Hat, ya que ellos no han tomado ninguna decisión.

Google swaps out MySQL, moves to MariaDB. ¿Razones técnicas? Nadie lo sabe, por lo que posiblemente sea un "vamos a tocar los huevos a Oracle como ellos a nosotros con las patentes de Java":

Ahora, expliquemos un poco la historia de forma resumida.

  • Monty crea MySQL en 1996.
  • A partir de 3.23 InnoDB de Innobase se añade …
[Lea más]