lunes, marzo 05, 2007

Backups de MySQL

Normalmente para realizar backups de mysql se usa el comando mysqldump (aunque con tablas de tipo MyISAM, se podría usar mysqlhotcopy). Lo que hace esta utilidad no es más que volcar una serie de comandos SQL que permita reconstruir las tablas y los datos de los mismos, volcándolos normalmente por la salida estándar.

El problema de realizar copia de bases de datos es que debe de obtener una versión coherente de los datos de la misma. Si se está usando con MySQL tablas de tipo innodb, se puede usar ciertas instrucciones para sacar una imagen coherente de la BBDD. La opción es --single-transaction. Esta orden emite un BEGIN SQL, de tal manera, que obtiene toda la información coherente desde que empezó, y además evita bloquear otras operaciones sobre las tablas, y además hacerlo de manera online.

Además, es interesante usar la opción -q, de tal manera que no se traiga todos los row sets desde el servidor a la vez, sino que se va trayendo fila a fila los datos. Según el manual de MySQL es la manera más eficiente cuando estamos usando tablas muy grandes.

Una funcionalidad que desconocía era en log de transaciones que almacena MySQL, al menos en la versión 5.x. MySQL si se arranca con la opción --log-bin[=base_name] almacena todos los comandos que modifican datos. Este fichero es binario, puede usarse mysqlbinlog para transformarlos a comandos SQL (aunque este log binario no se sincroniza automáticamente en disco, puede producir incoherencias).

Technorati Tags:

No hay comentarios: