Skip to content

Instantly share code, notes, and snippets.

@gautiermichelin
Forked from guiyomh/mysql_backup.sh
Created June 10, 2017 05:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gautiermichelin/064da8ffbe105a17c23e7d7c87490db1 to your computer and use it in GitHub Desktop.
Save gautiermichelin/064da8ffbe105a17c23e7d7c87490db1 to your computer and use it in GitHub Desktop.
Mysql Backup data and schema
#!/bin/bash
# Configuration de base: datestamp e.g. YYYYMMDD
DATE=$(date +"%Y%m%d")
# Dossier où sauvegarder les backups (créez le d'abord!)
BACKUP_DIR="/backup/mysql"
# Identifiants MySQL
MYSQL_USER="root"
MYSQL_PASSWORD="YOURSECUREPASSWORD"
# Commandes MySQL (aucune raison de modifier ceci)
MYSQL=/usr/bin/mysql
MYSQLDUMP=/usr/bin/mysqldump
# Bases de données MySQL à ignorer
SKIPDATABASES="Database|information_schema|performance_schema|mysql"
# Nombre de jours à garder les dossiers (seront effacés après X jours)
RETENTION=14
# ---- NE RIEN MODIFIER SOUS CETTE LIGNE ------------------------------------------
#
# Create a new directory into backup directory location for this date
mkdir -p $BACKUP_DIR/$DATE
# Retrieve a list of all databases
databases=`$MYSQL -u$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "($SKIPDATABASES)"`
# Dumb the databases in seperate names and gzip the .sql file
for db in $databases; do
echo $db
$MYSQLDUMP --force --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD --skip-lock-tables --events --databases $db | gzip > "$BACKUP_DIR/$DATE/$db.sql.gz"
done
# Remove files older than X days
find $BACKUP_DIR/* -mtime +$RETENTION -delete
@gautiermichelin
Copy link
Author

gautiermichelin commented Jun 10, 2017

Installation :

wget https://gist.githubusercontent.com/gautiermichelin/064da8ffbe105a17c23e7d7c87490db1/raw/e2f9d7e4ee811910dc3b20207313e704dd04e9f4/mysql_backup.sh

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment