6Marzo2011Backup

MySQL es uno de los motores de bases de datos más utilizados actualmente, principalmente por ser uno de los componentes del stack LAMP (Linux, Apache, MySQL, PHP).

Necesidad:

  • Se requiere generar desde la terminal de linux una copia de respaldo de cierta base de datos, el objetivo es repetir este comando desde algún script de cron cuando sea requerido

Solución utilizada:

  • El comando mysqldump es la herramienta buscada, recibe como parámetro el usuario de la base de datos, el nombre de la base de datos, el servidor al que nos conectamos.
  • Sintaxis:
    • mysqldump -p -h SERVIDOR -u USUARIO_B.D. NOMBRE_B.D. > /directorio/destino/nombre.sql
  • El caracter de redirección de flujo ">", es una característica de bash que permite dirigir la salida de un comando a un archivo, en este caso el archivo sql requerido (si no existe dicho archivo se crea, y si existe lo sobreescribe. Si se usa doble ">>" agrega el contenido al final ...útil para algun tipo de log en el sistema)
  • El comando anterior preguntará la contraseña, sin embargo puede incluirse directamente (aunque quedaría en texto plano y visible 😐 ...eso se puede mejorar ...en otra entrada registraremos como hacerlo) junto al parámetro -p asi:
    • mysqldump -pCONTRASEÑASINESPACIOS -h SERVIDOR -u USUARIO_B.D. NOMBRE_B.D. > /directorio/destino/nombre.sql
  • También se puede mejorar (de nuevo gracias a las bondades de bash) reemplazando el "nombre.sql" por un archivo con la fecha del momento de ejecución del comando, eso puede ser útil si se usa en un script en cron:
    • mysqldump -pCONTRASEÑASINESPACIOS -h SERVIDOR -u USUARIO_B.D. NOMBRE_B.D. > /directorio/destino/nombre-$(date +"%F-%H:%M:%S").sql
  • Como siempre se pueden consultar opciones y características adicionales del comando con:
    • man mysqldump
Imagen Original (CC Atribución): https://flic.kr/p/mUfqu4

Comments powered by CComment

.