Mysqlhotcopy

Para realizar backups de bases de datos MySQL, se suele usar el comando mysqldump. Este comando, se encarga de generar las consultas necesarias para recrear toda la estructura de tablas y su contenido, a base de sentencias SQL. Sin embargo, este comando, puede resultar muy lento, para bases de datos grandes.

Si se quiere hacer un backup de una base de datos con tablas MyISAM, desde la propia documentaci贸n oficial de MySQL se insta a usar mysqlhotcopy en lugar de mysqldump:

芦If you are doing a backup on the server and your tables all are MyISAM tables, consider using the mysqlhotcopy instead because it can accomplish faster backups and faster restores禄
Fuente: aqu铆

Mysqlhotcopy, sin embargo, tiene una serie de requisitos que no tiene mysqldump, en cuanto a privilegios del usuario que ejecuta el comando. Concretamente, se requieren:

  • Permisos de SELECT sobre las tablas de la base de datos
  • Permisos de LOCK TABLES
  • Permisos de RELOAD

Se puede crear un usuario de backup con estos permisos, con tal de que el usurario se use 煤nicamente para tareas de copias de seguridad, sin necesidad de otorgarle permisos adicionales.

mysql> create user 鈥榖ackup鈥橜'localhost鈥 identified by 鈥榤ipassword鈥;
mysql> grant select on basededatos.* to 鈥榖ackup鈥橜'localhost鈥 with grant option;
mysql> grant lock tables on basededatos.* to [email protected];
mysql> grant reload on *.* to [email protected];

El usuario backup quedar谩 entonces con los siguientes permisos:

mysql> show grants for [email protected];
+---------------------------------------------------------------------------------------+
| Grants for [email protected] |
+---------------------------------------------------------------------------------------+
| GRANT RELOAD ON *.* TO 'backup'@'localhost' IDENTIFIED BY PASSWORD '7363gd5' |
| GRANT SELECT, LOCK TABLES ON `basededatos`.* TO 'backup'@'localhost' |
+---------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

Con este usuario, ya se podr谩 ejecutar el comando mysqlhotcopy sobre la base de datos ‘basededatos’, tal y como sigue:

mysqlhotcopy basededatos –user=backup –password=mipassword /destino

Las primeras ejecuciones han reducido el tiempo del backup de 20 minutos (realizado con mysqldump) a poco m谩s de 1 min 30 segundos, aunque tambi茅n es verdad que los backups realizados con mysqlhotcopy, ocupan el doble que los resultantes de usar mysqldump, una vez comprimidos ambos.

Flickr! Foto por Eric Lim Photography

2 respuestas a 芦Mysqlhotcopy禄

Deja una respuesta

Tu direcci贸n de correo electr贸nico no ser谩 publicada.