Displaying posts with tag: MySQL (reset)
xtrabackup / innobackupex: Backup y restore con Galera

Para realizar backups en Galera, podemos usar xtrabackup.

La única diferéncia es que deberemos conservar la posición del backup, mediante la opción –galera-info se guarda automáticamente:

# innobackupex --galera-info /var/backups/xtrabackup

InnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oy
and Percona LLC and/or its affiliates 2009-2013.  All Rights Reserved.

(...)

140826 16:57:33  innobackupex: Connection to database server closed
140826 16:57:33  innobackupex: completed OK!

Dentro del backup podemos encontrar el fichero xtrabackup_binlog_info:

# ls /var/backups/xtrabackup/2014-08-26_16-57-30/
backup-my.cnf           ibdata1                 mysql/                  test/                   xtrabackup_checkpoints  xtrabackup_info
binlog.000008           jordidb/                performance_schema/     xtrabackup_binlog_info
[Lea más]
xtrabackup / innobackupex: Backup y restore parcial

Mediante xtrabackup también podemos realizar tanto backups como restauraciones parciales. Vamos a ver cómo hacer un backup de una base de datos en concreto y a continuación cómo realizar una restauración parcial de una tabla.

Para realizar un backup parcial de una base de datos únicamente deberemos añadir la opción –databases para indicarla, por ejemplo:

# innobackupex --databases="db2" /var/backups/xtrabackup/

InnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oy
and Percona LLC and/or its affiliates 2009-2013.  All Rights Reserved.

This software is published under
the GNU GENERAL PUBLIC LICENSE Version 2, June 1991.

(...)
innobackupex: Backup created in directory '/var/backups/xtrabackup/2014-08-26_19-51-43'
innobackupex: MySQL binlog position: filename 'binlog.000017', position 1496, gtid_executed …
[Lea más]
Mi Charla en la PyConES 2014 de Zaragoza sobre MySQL Fabric

El próximo sábado 8 de noviembre a las 19:30 estaré hablando sobre MySQL Fabric en la PyConES 2014 (la versión española de la PyCon), la reunión anual de programadores y entusiastas de Python en España.
Aunque no me auto-denomino como programador, una gran parte de mi tiempo cono consultor de MySQL require implementar procedimientos automáticos (backups, comprobaciones de salud, gestión de AWS, …) y para ello utilizo principalmente una combinación de Python y Bash.

En mi charla, que he titulado “MySQL Fabric, a High Availability solution for Connector/Python” explicaré cómo montar y configurar un conjunto de servidores MySQL y …

[Lea más]
Balanceador software (PHP) para MySQL: mysqlnd_ms

Mediante la extensión mysqlnd_ms podemos automáticamente balancear las queries según sean de lectura o escritura entre el MySQL master y sus diferentes MySQL slaves. Vamos a ver cómo instalarla

En caso que no lo tengamos ya habilitado, deberemos recompilar PHP con mysqlnd habilitado para los diferentes métodos de acceso al MySQL. En el ejemplo lo usamos tanto para el clásico mysql (funciones llamadas mysql_), mysqli y para el PDO:

./configure' \
(...)
--enable-mysqlnd \
--with-mysql=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-mysqli=mysqlnd \
(...)

A continuación deberemos instalar el modulo mysqlnd_ms para poder usar dicho balanceador mediante pecl:

# pecl install mysqlnd_ms

El el fichero de configuración del …

[Lea más]
Mi tutorial sobre optimización de consultas para la Percona Live London 2014 (e información importante si deseáis asistir)

El lunes de la próxima semana, 3 de noviembre, impartiré un tutorial de la mayor conferencia europea de MySQL, la Percona Live London 2014. El tema es una continuación natural de la que impartí el año pasado en el mismo lugar, “Optimización de consultas con MySQL 5.6: trucos nuevos y viejos“. Este año me centraré en los últimos cambios en el optimizador que podemos encontrar no sólo en los ya publicados 5.6 y MariaDB 10, pero también alguna de las características de los todavía en desarrollo MySQL 5.7 y MariaDB 10.1. Algunos de los temas de este taller, que he titulado “Optimización de consultas con MySQL …

[Lea más]
Posición inicial de los binlogs (MySQL)

Al realizar el SHOW MASTER STATUS para iniciar la replicación siempre me había preguntado porque la posición inicial no era ni 0 ni 1. Mediante SHOW BINLOG EVENTS podemos verlo:

El primer evento de un binlog contiene información sobre el formato del binlog, por lo tanto, es un evento que realmente no hace nada y que nos podemos saltar (realmente si lo aplicamos tampoco realiza ningún cambio):

mysql-master> show binlog events limit 2;
+------------------+-----+-------------+-----------+-------------+---------------------------------------+
| Log_name         | Pos | Event_type  | Server_id | End_log_pos | Info                                  |
+------------------+-----+-------------+-----------+-------------+---------------------------------------+
| mysql-bin.000355 |   4 | Format_desc |         1 |         106 | Server ver: 5.1.67-log, Binlog ver: 4 |
| …
[Lea más]
Buscar las foreign keys que referencian a una tabla en MySQL

En MySQL, mediante INFORMATION_SCHEMA podemos listar las tablas que tienen foreign keys hacia la tabla que nos interesa

Para ello deberemos hacer la siguiente query a la tabla KEY_COLUMN_USAGE:

SELECT table_name,column_name,constraint_name, referenced_table_name,referenced_column_name
FROM information_schema.key_column_usage
WHERE referenced_table_name = 'tabla';

Por ejemplo, suponiendo que tenemos las siguientes dos tablas:

mysql> CREATE TABLE fc1 (
    ->     i INT PRIMARY KEY,
    ->     j INT
    -> ) ENGINE = InnoDB;
Query OK, 0 rows affected (0.25 sec)

mysql> CREATE TABLE fc2 (
    ->     m INT PRIMARY KEY,
    ->     n INT,
    ->     FOREIGN KEY ni (n) REFERENCES fc1 (i)
    ->         ON DELETE CASCADE
    -> ) ENGINE = InnoDB;
Query OK, 0 rows affected (0.15 sec)

Mediante dicha query podremos listar …

[Lea más]
xtrabackup: Restaurar backup incremental

Tal y como vimos anteriormente, mediante xtrabackup podemos hacer backups incrementales sobre un full. Vamos a ver cómo restaurarlos.

Vamos a suponer que tenemos los siguientes backups:

# ls -la
total 36
drwxr-xr-x 9 root root 4096 Aug 26 19:06 .
drwxr-xr-x 3 root root 4096 Aug 26 14:04 ..
drwxr-xr-x 6 root root 4096 Aug 26 19:02 2014-08-26_19-02-14
drwxr-xr-x 6 root root 4096 Aug 26 19:03 2014-08-26_19-03-30
drwxr-xr-x 6 root root 4096 Aug 26 19:06 2014-08-26_19-06-41

Los renombro por tipo para simplificar la sintaxi:

# mv 2014-08-26_19-02-14 FULL
# mv 2014-08-26_19-03-30 INC1
# mv 2014-08-26_19-06-41 INC2

Primero deberemos preparar el backup aplicando las transacciones ya comiteadas (–apply-log –redo-only) tanto para el full como con los …

[Lea más]
Rotación de Logs MySQL lentas

Original post: http://anothermysqldba.blogspot.com/2014/10/rotating-mysql-slow-logs.html

Al trabajar con diferentes clientes Sucede que correr a través de grandes archivos de registro lento de vez en cuando. Si bien existen varias opiniones sobre la forma en que se deben rotar. Muchas de estas opiniones utilice Girar registro y el comando registros ras, prefiero no para eliminar mis registros binarios sin embargo. Es por esto que estoy de acuerdo con Ronald Bradfordentrada de blog desde hace años sobre la forma de hacer esto.  …

[Lea más]
Probando la manera más rápida de importar una tabla en MySQL (y unos resultados interesantes del rendimiento de 5.7)

Como mencioné en mi anterior entrada, donde comparaba las opciones de configuración por defecto de 5.6 y 5.7, he estado haciendo algunos tests para un tipo particular de carga en varias versiones de MySQL. Lo que he estado comprobando es las diferentes maneras de cargar un archivo CSV (el mismo fichero que usé para comprobar las herramientas de compresión) en MySQL. Aquellos administradores de bases de datos y programadores MySQL con experiencia probablemente ya conozcáis la respuesta, así que podéis saltar a los resultados de 5.7 respecto de 5.6. Sin embargo, la primera parte de este post está dedicado a los desarrolladores/aquellos que dan sus primeros pasos con …

[Lea más]