Displaying posts with tag: DBA (reset)
Parámetros básicos para configurar MySQL 5.6.10

Una vez instalado el servidor MySQL 5.6.10 y comprobado que funciona, no está mal del todo cofigurar el mismo para las necesidades que tenemos. En mi caso, es un servidor local, que como mucho tendrá unas 15 bases de datos, y sobre 20 Gigas de tamaño en total.

NOTA: Esta entrada también es válida para el servidor de bases de datos MariaDB.

Modificando la configuración en My.ini

Se trata de abrir my.ini con un editor de texto y modificar algunos parámetros.

En el apartado de cliente [client] es fundamental indicar el puerto de conexión. Por defecto es el 3306, pero puede ser otro.

[Lea más]
La salud del servidor MySQL: fichero de errores. Paso 7

Tal y cómo hemos contado en las entradas previas, la modificación de algunos parámetros para configurar el servidor me han ocasionado un Error 1067 que impide arrancar el servidor. Gracias a dicho error, he ampliado mis conocimientos sobre MySQL, en la parte de configuración y puesta a punto, aunque a mi me gusta más el tema de desarrollo de bases de datos, etc, etc, …. pero hay que aprender de todo, ¿no?

Navegando por los bugs de MySQL

Gracias a las labores del equipo de errores de MySQL he podido ser conoceder de algunas buenas prácticas que todo Administrador de MySQL debería tener en cuenta. Concretamente, me estoy refiriendo …

[Lea más]
Mantenimiento del log en MySQL 5.6

En la entrada anterior se han descrito las características más importantes del servidor MySQL sobre los ficheros de registros, que facilitan la optimización tanto del propio servidor como de las sentencias SQL para tener el mejor rendimiento.

NOTA: Esta entrada también válida para las bases de datos MariaDB.

En la entrada sobre configuración del servidor MySQL ya comenté que es interesante tener activado el fichero de logs del servidor, pero … cada cierto tiempo es muy recomendable también realizar tareas de mantenimiento.

En mi caso, tras una importante migración de varias bases de datos ocupando en torno a 10 Gb, el fichero de logs ha sobrepasado los 6 …

[Lea más]
Ficheros de registros en MySQL

Una de las bondades de MySQL (y también de MariaDB) es poder ir almacenando todo lo que ocure en el servidor de bases de datos, para lo que MySQL dispone de varias alternativas. Por defecto, todos los ficheros de registros son almacenados en el directorio de datos, aunque se puede forzar a que se dirijan a otras rutas desde el fichero de configuración del servidor.

Registro de errores

Se registra toda la información que indica cuando se ha iniciado y parado mysqld y también si ha ocurrido algún error crítico mientras el servidor se estaba ejecutando. Este paso resulta clave en caso de tener problemas al iniciar el servidor, para ver por dónde “puede” estar fallando.

Registro general de consultas

Se registra todas las conexiones y sentencias enviadas al servidor, que se …

[Lea más]
Fechas mal formadas en MySQL

Haciendo una query en un MySQL con una fecha mal formada, a priori, yo esperaría que no devolviera ningún resultado. Podemos comprobar que MySQL considera mejor devolver algún resultado, aunque sean en realidad TODOS los resultados.

Si hacemos un explain de una query con una fecha malformada:

mysql> explain select * from sales where creationDate < '2012-08-27T17:00:02+02:00'\W;
Show warnings enabled.
+----+-------------+-------+------+---------------+------+---------+------+---------+-------------+
| id | select_type | table | type | possible_keys | key  | key_len | ref  | rows    | Extra       |
+----+-------------+-------+------+---------------+------+---------+------+---------+-------------+
|  1 | SIMPLE      | sales | ALL  | NULL          | NULL | NULL    | NULL | 6750684 | Using where | …
[Lea más]
Engine blackhole de MySQL

En engine BLACKHOLE de MySQL se puede usar para hacer desparecer los datos de algunas tablas que no nos interesen. Por ejemplo, en un entorno master-slave podemos eliminar una tabla grande que no nos cabe en disco. O también, si tenemos una aplicación que no podemos modificar, descartar los datos que se introducen en dicha tabla.

Primero deberemos mirar si la instalación de MySQL soporta el engine BLACKHOLE, lo podemos ver con SHOW ENGINES:

mysql> show engines;
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine     | Support | Comment                                                        | Transactions | XA   | Savepoints | …
[Lea más]
MySQL: ignored in –skip-name-resolve mode

Al arrancar un servidor MySQL nos podmeos encontrar en los logs un error similar al siguiente:

110510  9:29:06 [Warning] 'user' entry 'root@systemadmin.es' ignored in --skip-name-resolve mode.

Esto se debe a la contradicción que existe entre usar nombres DNS y decirle en la configuración que no los resuelva:

# grep resol /etc/my.cnf 
skip-name-resolve

Las entradas que deban resolver nombres simplemente se ignoraran en los permisos, por lo que podemos pasar a usar IPs o rangos de IPs en lugar de nombres. O bien, eliminar la opción skip-name-resolve del arranque del MySQL.

Tags: MySQL
Relacionados

[Lea más]
Múltiples nodos de gestión en un MySQL Cluster (ndb)

Tal como vimos en la instalación de MySQL Cluster, el nodo de gestión (ndb_mgmd) se encarga de arbitrar el cluster. Vamos a ver cómo redundar dicho servicio.

Para añadir más de un nodo de gestión, deberemos modificar su fichero config.ini, añadiendo en la definición otro nodo, por ejemplo:

[ndb_mgmd]
hostname=10.10.88.15
PortNumber=1186
datadir=/var/mysql/mgm
nodeid=1

[ndb_mgmd]
hostname=10.10.88.14
PortNumber=1186
datadir=/var/mysql/mgm
nodeid=4

Deberemos recargar la configuración, si tenemos un nodo ya activo, con la opción –reload:

/opt/mysql-cluster/bin/ndb_mgmd --skip-daemon \
  -f /usr/local/etc/mysql/config.ini --reload \
  --configdir=/usr/local/etc/mysql/

En el otro nodo deberemos arrancar el nuevo daemon ndb_mgmd con la …

[Lea más]
Snapshots de MySQL y la Query Cache

Algunos datos que pueden ser interesantes mostrar en un gráfico son las queries en la cache y la memoria libre de la query cache:

mysql> show status like 'Qca%';
+-------------------------+------------+
| Variable_name           | Value      |
+-------------------------+------------+
| Qcache_free_blocks      | 2          |
| Qcache_free_memory      | 400954376  |
| Qcache_hits             | 1014709429 |
| Qcache_inserts          | 149894868  |
| Qcache_lowmem_prunes    | 1785432    |
| Qcache_not_cached       | 57337894   |
| Qcache_queries_in_cache | 26915      |
| Qcache_total_blocks     | 53982      |
+-------------------------+------------+
8 rows in set (0.00 sec)

Si mostramos las queries en cache en gráfico podemos obtener algo similar a:

Queries en cache

Para el caso …

[Lea más]
Comprobación del estado de un slave de MySQL con Nagios

En un post anterior comenté que no es suficiente mirar el Seconds_Behind_Master para saber si se esta replicando correctamente un MySQL, por lo que las herramientas de monitorización se deben adaptar a esto.

El siguiente script comprueba no sólo Seconds_Behind_Master, sino también Last_Errno para dar por buena la sincronización entre master y slave. Los dos únicos parámetros que debemos definir en el script son:

  • SBMLIMIT: Número de segundos de retraso máximo que permitimos, no nos interesa que por una pequeña desincronización puntual nos este avisando
  • AUTOSTARTSLAVE: Si debe intentar arrancar el slave en caso que se lo encuentre parado

Por otro lado, espera que el password de …

[Lea más]