martes, junio 25, 2013
|
Hoy me salgo un poco de los artículos típicos de eliax para explicar algo un poco más técnico, aunque sencillo, concerniente al respaldo/backup de bases de datos MySQL (y su subsiguiente restauración)...
Sucede que con frecuencia visito amigos o clientes que utilizan esta popular base de datos, y noto la forma en que hacen respaldos y restauraciones de bases de datos, y he notado que muchos pasan un gran trabajo haciendo algo que en realidad se pueda hacer de una forma muy sencilla, y sobre todo mucho más rápida. Noten que existen soluciones pagas para gestionar el respaldo y restauración de MySQL, pero esta forma que les mostraré no solo es gratis, sino que la más rápida de todas. Por lo general, los respaldos en MySQL se hacen por alguna interfaz gráfica, siendo quizás la más popular de todas el gestionar phpMyAdmin. Sin embargo herramientas como esa solo son prácticas para hacer respaldos de pequeñas bases de datos (en el orden de unos cuentos miles de registros). En el momento que tratas de procesar tablas de cientos de miles o millones de registros, te metes en problemas. Esos problemas vienen por lo general en dos formas: O toma muchísimo tiempo hacer el respaldo/restauración, o sencillamente el proceso no se termina, y por lo general eso conlleva a que algunos traten de hacer respaldos de forma manual con programas escritos en todo tipo de lenguajes, lo cual como veremos a continuación es absolutamente innecesario.. Así que el truco es bastante sencillo, y hasta documentado, aunque me sorprende la cantidad de personas que lo desconocen. Los dos comandos para hacer backup y respaldo de bases de datos de MySQL son estos:
Ahora noten unas cuantas importantes observaciones sobre esos dos comandos: 1. Estamos asumiendo una base de datos que se llama "eliax". 2. El primero de estos comandos hace el respaldo, el segundo hace la restauración. Al ejecutarlos, les preguntará la clave del usuario root para proceder. 3. Para que el segundo comando funcione, deben primer crear una base de datos vacía, que en este caso se llame "eliax", de lo contrario el comando fallará diciendo que no existe la base de datos en donde restaurar los datos. Ojo, que para fines de automatización, podrían crear un script que les cree la base de datos primero. 4. Estos comandos son extremadamente rápidos. Una base de datos que por otros medios quizás le tome buena parte de una hora, con este método les tomará posiblemente unos pocos segundos. 5. Esto funciona tanto en Windows como en derivados de UNIX (Linux, Mac OS X, etc), y yo mismo lo he probado en todos estos entornos. Así mismo debería funcionar con forks de MySQL como MariaDB (esto no lo he probado). 6. En algunos sistemas operativos, estos comandos no se reconocerán en la linea de comando debido a que no están en el PATH (ruta de binarios reconocidos) de comandos del sistema. En esos casos tienen dos opciones: O agregan el directorio donde están los comandos "bin" de MySQL al PATH, o sencillamente llaman estos comandos con la ruta completa al comando directamente. 7. Obviamente, el archivo eliax.sql o debe estar en el mismo directorio en donde están ejecutando el comando, o sino deben especificar la ruta completa en donde se encuentra. 8. Noten que debido a la sencillez de estos comandos, que es posible automatizar en forma recurrente los respaldos de MySQL con scripts sencillos, tanto en un .bat en Windows, como en un script de shell en UNIX y derivados, llamando ese script periódicamente con algo como el programador de tareas de Windows o un cron job en UNIX o similar. En tales casos recomiendo que el script sea lo suficientemente inteligente como para escribir eliax.sql en un formato más apropiado para respaldos, como por ejemplo: eliax_2013_06_26.sql (que indicaría un respaldo el día 26 de junio del 2013). Como ven, esto es extremadamente sencillo, y espero que ayude a algunos que no estaban al tanto de estos comandos. Y si tiene más trucos, observaciones, mejoras o alternativas, no dejen de compartirlas en los comentarios abajo... Nota: Si quieren aprender y compartir más de este tipo de tips para desarrolladores de software, sugiero se hagan miembros del grupo hermano de eliax en Facebook para tal fin, developers.X Actualización 14 de Agosto del 2014: Otro caso similar al ejemplo del artículo es querer cargar a MySQL un archivo .csv extremadamente grande (por ejemplo, de cientos de MegaBytes), y una vez más, por la linea de comando esto se puede hacer super fácil y sobre todo, super rápidamente. He aquí los comandos necesarios (explicación de cada uno más abajo después de los comandos):
Y esta es la explicación de cada comando (noten que estoy conciente que todos estos comandos se podrían ejecutar todos como un solo comando, pero de esta manera se entiende mejor lo que estamos haciendo - prefiere la simpleza por motivos didácticos): Linea 1. Hacer un CD en la linea de comando para llegar al directorio donde se encuentra el archivo CSV que quieres importar. Asumamos que el archivo se llama eliax_datos.csv y que queremos importarlo a una tabla que se llama "eliax_datos" en la base de datos "eliax", la cual contiene 2 columnas llamadas NOMBRES y APELLIDOS. Linea 2. Esto entra a la linea de comando de MySQL. Linea 3. Esto le dice a MySQL que queremos trabajar con la base de datos eliax. Linea 4. Este es el comando que hace toda la magia. Noten que esas 4 lineas son en realidad una sola linea (que corté para hacer más legible). Actualización 7 de Noviembre 2015: Otro truco: Si después de cambiar de versión de MySQL se encuentran con tablas que aparentan corruptas, o programas como phpMyAdmin que no reconocen sus tablas, prueben este comando y crucen los dedos: mysqlcheck --all-databases --check-upgrade --auto-repair Actualización 24 de Diciembre 2016: Un truco más: Si desean hacer backup/respaldo y restauración de todas las bases de datos y tablas en una instalación de MySQL, utilicen estos dos comandos: mysqldump -u root -p --all-databases > mis_bases_de_datos.sql Actualización 29 de Octubre 2019: Un tema que quizás pueda surgir en todo este mundo de hacer respaldos y restauraciones de datos es que cuando traten de quizás borrar una versión anterior de una base de datos se encuentren con un error de que no pueden borrarla debido a temas de que quizás sus tablas utilicen la funcionalidad de FOREIGN KEYS (claves o llaves o índices foráneos), y no pueden borrar una tabla si esta tiene una relación de un índice con otra. A tal fin lo que deber hacer es entrar a la linea de comando de MySQL y desabilitar temporalmente los chequeos de FOREIGN KEYS, y ya después que hagan eso pueden borrar la base de datos. Para lograr eso el comando es el siguiente: SET FOREIGN_KEY_CHECKS = 0;Obviamente después que borren la base de datos deben volver a activar los chequeos seteando la misma variable a 1: SET FOREIGN_KEY_CHECKS = 1; autor: josé elías |
22 comentarios |
Pregunta a eliax , Software |
Comentarios
Añadir Comentario |
"Está bueno este avance, al final la ciencia va hacer un millón de veces más por los derechos de los animales que todos los proderechos de animales y vegetarianos juntos"
en camino a la singularidad...
©2005-2024 josé c. elías
todos los derechos reservados
como compartir los artículos de eliax
Seguir a @eliax
*-* excelente :D me has resulto muchos dolores de cabeza XD