Con este pequeño script podemos hacer backup de las bases de datos del servidor MySQL
Hacer backup de todas las bases en archivos separados
Creamos el Archivo /usr/local/bin/mysql_backup.sh
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# nano /usr/local/bin/mysql_backup.sh #!/bin/bash # Add the backup dir location, MySQL root password, MySQL and mysqldump location DATE=$(date +%d–%m–%Y) BACKUP_DIR=«/backup/test-backup» MYSQL_USER=«root» MYSQL_PASSWORD=«***» MYSQL=/u01/mysql/bin/mysql MYSQLDUMP=/u01/mysql/bin/mysqldump # To create a new directory in the backup directory location based on the date mkdir –p $BACKUP_DIR/$DATE # To get a list of databases databases=`$MYSQL –u$MYSQL_USER –p$MYSQL_PASSWORD –e «SHOW DATABASES;» | grep –Ev «(Database|information_schema)»` # To dump each database in a separate file for db in $databases; do echo $db $MYSQLDUMP —force —opt —skip–lock–tables —user=$MYSQL_USER –p$MYSQL_PASSWORD —databases $db | gzip > «$BACKUP_DIR/$DATE/$db.sql.gz» done # Delete the files older than 10 days find $BACKUP_DIR/* –mtime +10 –exec rm {} \; |
Le damos permisos de ejecucion
|
1 |
chmod +x /usr/local/bin/mysql_backup.sh |
Ejecutamos el script
|
1 |
sh mysql_backup.sh |
Revisamos los archivos
|
1 2 3 4 5 6 |
ls –lh /backup/db–backup/06–04–2019/ total 11M –rw–r—r— 1 root root 134K Apr 6 10:14 mysql.sql.gz –rw–r—r— 1 root root 4.6K Apr 6 10:14 performance_schema.sql.gz –rw–r—r— 1 root root 266K Apr 6 10:14 testdb1.sql.gz –rw–r—r— 1 root root 11M Apr 6 10:14 testdb.sql.gz |
Agregamos los siguiente en el crontab para ejecutarlo todos los dias a la 1 AM
|
1 |
0 1 * * * /usr/local/bin/mysql_backup.sh |
Hacer backup de solo 1 base de datos
Creamos el script mysql_backup_1.sh
|
1 2 3 4 5 6 7 8 9 10 |
# nano /usr/local/bin/mysql_backup_1.sh #!/bin/bash MYSQL_PASSWORD=«*****» DATE=$(date +%d–%m–%Y) BACKUP_DIR=«/backup/db-backup» DB=testdb echo $DB mysqldump –u root –p$MYSQL_PASSWORD $DB | gzip –9 > «$BACKUP_DIR/testdb-$DATE.sql.gz» find $BACKUP_DIR/* –mtime +5 –exec rm {} \; |
Hacer backup de todas las bases en 1 solo archivo
|
1 2 3 4 5 6 7 8 9 |
# nano /usr/local/bin/mysql_backup_2.sh #!/bin/bash MYSQL_PASSWORD=«*****» DATE=$(date +%d–%m–%Y) BACKUP_DIR=«/backup/db-backup» DB=testdb mysqldump –u root –p$MYSQL_PASSWORD —all–databases | gzip –9 > «$BACKUP_DIR/all-dbs-$DATE.sql.gz» find $BACKUP_DIR/* –mtime +5 –exec rm {} \; |

Deja una respuesta
Lo siento, debes estar conectado para publicar un comentario.