Copia de seguridad automática de mysql en ubuntu

12

Tengo un servidor Ubuntu con una base de datos Mysql. Me gustaría configurar una copia de seguridad automática de esta base de datos durante la noche en otro servidor (por ejemplo, ovh).

No sé cuál sería la mejor herramienta para eso. Si alguien tiene algunos consejos ...

Gracias por adelantado.

usuario1260928
fuente

Respuestas:

29

La forma más fácil de automatizar esta tarea sería la combinación de volcados MySQL y un cronjob. Puede encontrar mucha información sobre este tema en este y otros sitios de Internet, pero para completar:

Crear un archivo mysqldump.sh

Que contendrá el comando de volcado mysql que programaremos en un trabajo cron (reemplace usuario, contraseña y ruta para que coincida con su entorno):

mysqldump -u root -p<mysql_root_password> --all-databases | gzip > /desired/backup/folder/mysqldb_`date +%F`.sql.gz

Editar: si desea que el script almacene la copia de seguridad en una ubicación remota, simplemente monte el dispositivo correspondiente o comparta y use la ruta de montaje en el script.

Probar el guión

Asegúrese de que el script tenga permisos de ejecución:

chmod +x /path/to/mysqldump.sh

Ejecute el script:

sh /path/to/mysqldump.sh

Y pruebe que funciona correctamente (el archivo de copia de seguridad se creará en la carpeta de copia de seguridad especificada).

Crear y programar un nuevo trabajo cron

En un símbolo del sistema, escriba

sudo crontab -e

Y agregue la siguiente línea al final del archivo:

30 23 * * * /path/to/mysqldump.sh

Esto ejecutará el script todos los días a las 23:30.

Amplíe este script simple

Literalmente, hay muchas cosas que puede hacer para mejorar este sencillo método de copia de seguridad:

  • Copia de seguridad a otro sistema
  • Supervisar espacio en disco
  • Informe por correo electrónico
  • ...

¡Así que no termines aquí y experimenta! :-)

Utilice herramientas de respaldo o servicios de respaldo basados ​​en la nube

Aunque el método anterior es uno de los más fáciles y puede ampliarse para satisfacer sus necesidades específicas, vale la pena mencionar que existen otras alternativas:

  • herramientas de copia de seguridad como AutoMySQLBackup, una aplicación de código abierto que puede facilitar el proceso de configuración de notificaciones por correo electrónico, compresión, cifrado, rotación y tipo (por ejemplo, incremental) de sus copias de seguridad. En cuanto a Mai 2018, está disponible para Ubuntu Server a través de APT.
  • servicios de copia de seguridad basados ​​en la nube, como BackupBird, myRepono, Bitcan, etc., que pueden ser interesantes si administra varios servidores de bases de datos y desea administrar de forma centralizada todas sus copias de seguridad.

Tenga en cuenta que no estoy relacionado de ninguna manera con ninguna de las soluciones y servicios mencionados anteriormente y los enumero solo como referencia, así que úselos bajo su propio riesgo.

Enlaces / referencias útiles:

Cron -> https://en.wikipedia.org/wiki/Cron

Descarga de MySQL -> https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html

Eduardo López
fuente
44
Uso date +%F: que elegirá automáticamente una combinación de año + mes + fecha adecuada para la configuración regional del usuario (por ejemplo, obtendré YYYY-MM-DD).
muru
Oh si, mucho mejor. Editaré la respuesta :-)
Eduardo López
+1 Buena respuesta: exactamente lo que se necesita aquí, ni más ni menos.
Jos
2
Si tiene que usar sudo para hacer esta operación (a) llame sudo crontab -ey no olvide hacer que el script sea ejecutable:chmod +x /path/to/mysqldump.sh
zinon
zinon - ¡Gracias por las pistas! Actualicé la respuesta.
Eduardo López