Skip to content

Instantly share code, notes, and snippets.

@WimObiwan
Created April 3, 2019 17:47
Show Gist options
  • Save WimObiwan/81c2ee9266e8abb9878eef4bd35b50e3 to your computer and use it in GitHub Desktop.
Save WimObiwan/81c2ee9266e8abb9878eef4bd35b50e3 to your computer and use it in GitHub Desktop.
mysql backup
#!/usr/bin/env bash
# First:
# Create backup user
# bash> mysql
# mysql> CREATE USER 'backupuser'@'localhost' IDENTIFIED BY 'p455w0rd';
# mysql> GRANT SELECT, SHOW VIEW, LOCK TABLES, RELOAD, REPLICATION CLIENT ON *.* TO 'backupuser'@'localhost';
# mysql> FLUSH PRIVILEGES;
# mysql> exit
TIMESTAMP=$(date +"%F")
BACKUP_DIR="/backup/$TIMESTAMP"
MYSQL_USER="backupuser"
MYSQL=/usr/bin/mysql
MYSQL_PASSWORD="p455w0rd"
MYSQLDUMP=/usr/bin/mysqldump
mkdir -p "$BACKUP_DIR/mysql"
databases=`$MYSQL --user=$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema)"`
for db in $databases; do
$MYSQLDUMP --force --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD --databases $db | gzip > "$BACKUP_DIR/mysql/$db.gz"
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment