Creación de un Script para Copias de Seguridad de MySQL ProgramadoEdwin Miguel Triana Gómez, June 2008 IntroducciónEste es un tutorial paso-a-paso para la configuración de un script que realiza una copia de seguridad a una base de datos en MySQL y que se ejecuta periódicamente. Para llevar a cabo esto, voy a crear un script que incluye el comando de copias de seguridad de MySQL
( Nota: Se asume que el lector tiene conocimientos básicos sobre administracion de servidores, sistemas UNIX y servidores de bases de datos. Requerimientos
Mi ambiente de trabajo:
Creando el Script1. Crear un archivo de texto utilizando cualquier editor de texto, (por ejemplo, vi), y añadir >vi backupScript.sh #!/bin/sh 2. Definir el nombre del archivo que tendrá la copia de seguridad: #!/bin/sh filename="databaseName_backup_"`eval date +m%d_%H_%M_%S`".sql" La cadena La cadena
La cadena 3. Añadir el comando de copia de seguridad: #!/bin/sh filename="databaseName_backup_"`eval date +m%d_%H_%M_%S`".sql" mysqldump --lock-tables -u userName -pUserPassword databaseName > \ /path/to/dump/the/database /$filename El manual de referencia de MySQL provee toda la información sobre el comando El parametro El nombre de usuario y contraseña son especificados en los siguientes parámetros:
4. Guarde y cierre el archivo (en vi, use 5. Configurar secure copy ( El comando a. Generación de la llave: ssh-keygen -t rsa La siguiente es la respuesta del sistema: Generating public/private rsa key pair. Enter file in which to save the key (/home/username/.ssh/id_rsa): <Press Enter to use the default> Enter passphrase (empty for no passphrase): <Enter, en mi caso> Enter same passphrase again: <Enter de nuevo> Your identification has been saved in /home/username/.ssh/id_rsa. Your public key has been saved in /home/username/.ssh/id_rsa.pub. The key fingerprint is: e4:f1:b5:3d:57:2e:37:87:2f:55:91:a7:2a:f9:f4:1d username@servername b. Copie la llave publica (la cual termina con scp /home/username/.ssh/id_rsa.pub user@remoteServer:. c. Guarde la llave en el archivo de llave autorizadas ( Para hacer esto, usted debe autenticarse en la maquina remota. Si desea puede usar el comando Se debe incluir la llave publica en el archivo >data="`eval cat ./id_rsa.pub`" (Se asume que la llave publica se encuentra en el home del usuario.) >echo $data >> ./.ssh/authorized_keys (Si el directorio d. Cierre sesión en el servidor remoto. 6. Pruebe la configuración anterior copiando un archivo desde el servidor de bases de datos al servidor remoto usando el
comando scp ./somefile user@remoteServer:. Si la consola no solicita una contraseña, felicitaciones, usted ha configurado la llave correctamente; si la consola le solicita una contraseña, lo siento, usted debe regresar al paso 5. 7. Incluir el comando scp en el script de copia de seguridad: #!/bin/sh filename="databaseName_backup_"`eval date +m%d_%H_%M_%S`".sql" mysqldump --lock-tables -u userName -pUserPassword databaseName > \ /path/to/dump/the/database/$filename scp /path/to/dump/the/database/$filename \ user@remoteServer:/path/to/backups rm /path/to/dump/the/database/$filename La ultima linea es opcional para quien no desee mantener la copia de seguridad en el servidor de bases de datos. El directorio 8. Programar la copia de seguridad. Hasta ahora hemos terminado el script que realiza la copia de seguridad y la copia en el servidor remoto, ahora, solo falta programar
el sistema para que el script se ejecute periódicamente, utilizando a. Abra crontab para añadir el script: >crontab -e b. Añada una nueva linea con la ruta del script y el tiempo de ejecución: min hour * * * /path/to/backupScript.sh Por ejemplo: 00 02 * * * /home/username/backupScript.sh En el anterior ejemplo, el script se ejecutará diariamente a la 02:00 horas (formato 24 horas). Si se desea configurar la ejecución del script de otra forma, tenga en cuenta los siguientes parámetros:
9. Guarde el archivo (en vi, use Nota: El archivo chmod +x /path/to/backupScript.sh 10. Listo!!! Se han completado todos los pasos para realizar copias de seguridad de una base de datos periodicamente. Acerca del AutorMi nombre es Edwin Miguel Triana Gómez, soy Ingeniero de Sistema de la Universidad Nacional de Colombia y trabajo en el Centro de Telemedicina de la misma institución. English version: Creating a Script for Scheduled MySQL Backups
Comments (latest comments first)Discuss and comment on this resource in the BigAdmin Wiki
Unless otherwise licensed, code in all technical manuals herein (including articles, FAQs, samples) is provided under this License. |
BigAdmin SubscriptionsBigAdmin Areas
BigAdmin Sun Center
BigAdmin Topics | ||||||||||