Copia de seguridad automática de la base de datos mysql

Necesitas hacer una copia de seguridad mysql de tu base de datos diariamente y también te gustaría copiar el archivo a un servidor remoto para estar seguro de que siempre tienes una copia de seguridad de tu entorno.

Bueno, te diré cómo hacerlo.

Primero, el comando para descargar es similar a este:

mysqldump -u NOMBRE DE USUARIO -pASSWORD NOMEDB > ./backup_NOMEDB$(date +"%Y-%m-%d").sql

Donde NOMBRE DE USUARIO es el usuario db, CONTRASEÑA es la contraseña del usuario, NOMEDB es el nombre del esquema. Y finalmente backup_NOMEDB$(date +”%Y-%m-%d”).sql es el nombre del archivo de respaldo.

El archivo se producirá con la fecha en el formato año mes, día.

Si queremos comprimir nuestro vertedero con gzip podemos modificar el guión así

mysqldump -u NOMBRE DE USUARIO -pASSWORD NOMEDB | $(which gzip) -9 > ./backup_NOMEDB$(date +"%Y-%m-%d").sql.gz

En este punto tenemos nuestro archivo y con el comando scp podemos copiarlo a un servidor linux remoto.

Para automatizar el copiado remoto y no requerir una contraseña, debe configurar SSH para iniciar sesión sin contraseña usando las teclas de SSH. Lea mi artículo sobre SSH sin contraseña

Ahora ejecuta el comando de copia

scp ./backup_NOMEDB$(fecha +"%Y-%m-%d").sql.gz userremoto@ipserverremoto:./backup_NOMEDB$(fecha +"%Y-%m-%d").sql.gz

En este punto para automatizar el proceso podemos, por ejemplo, activar una cronometración a la una de la mañana siguiente al vertido y hacer la copia.

El comando para agregar al crontab es algo como esto:

0 1 * * * * mysqldump -u NOMBRE DE USUARIO -pASSWORD NOMEDB > ./backup_NOMEDB$(fecha +"%Y-%m-%d").sql | scp ./backup_NOMEDB$(fecha +"%Y-%m-%d").sqluserremoto@ipserverremoto:./backup_NOMEDB$(fecha +"%Y-%m-%d").sql

De esta manera muchos simples nos prevenimos en el caso de un accidente completo del db mysql y por lo tanto la pérdida de todo el blog.