MySQL Backup Script

Backup is one of the most important, part of the database administration. There are several ways to backup MySQL data. I'm discussing a very simple script, easy script  to take backup of multiple databases. This script can be customized as, per the requirement.
Script

#!/bin/bash
     
    MyUSER="backup" # USERNAME
    MyPASS="backup_pass" # PASSWORD
    MyHOST="localhost" # Hostname
     
    # Linux bin paths, change this if it can not be autodetected via which command
    MYSQL="$(which mysql)"
    MYSQLDUMP="$(which mysqldump)"
    CHOWN="$(which chown)"
    CHMOD="$(which chmod)"
    GZIP="$(which gzip)"
     
    # Backup Dest directory, change this if you have someother location
    DEST="/backup"
    
    Month="$(date +"%b")"
    Day="$(date +"%a")" 
    # Main directory where backup will be stored
    MBD="$DEST/data/$Month/$Day"
     
    # Get hostname
    HOST="$(hostname)"
     
    # Get data in dd-mm-yyyy format
    NOW="$(date +"%d-%b-%Y")"

    # File to store current backup file
    FILE=""
    # Store list of databases
    DBS="demeet teens"
     
    # DO NOT BACKUP these databases
    IGGY="information_schema performance_schema test mysql"
     
    [ ! -d $MBD ] && mkdir -p $MBD || :
     
    # Only root can access it!
    $CHOWN 0.0 -R $DEST
    $CHMOD 0600 $DEST
     
    # Get all database list first
    #DBS="$($MYSQL -u $MyUSER -h $MyHOST -p$MyPASS -Bse 'show databases')"
    
    for db in $DBS
    do
    skipdb=-1
    if [ "$IGGY" != "" ];
    then
    for i in $IGGY
    do
    [ "$db" == "$i" ] && skipdb=1 || :
    done
    fi
     
    if [ "$skipdb" == "-1" ] ; then
    FILE="$MBD/$db.sql.gz"
    # do all inone job in pipe,
    # connect to mysql using mysqldump for select mysql database
    # and pipe it out to gz file in backup dir :)
    $MYSQLDUMP  -u $MyUSER -h $MyHOST -p$MyPASS $db | $GZIP > $FILE 
    echo "Successfully $db backup taken on $NOW" >> /backup/myback.log
    fi
    done
 
The script can be placed in /etc/cron.daily to take backup on a daily basis, with retention of one week. This script takes backup every day and keep current one week backup every month.

Nhận xét

Bài đăng phổ biến từ blog này

CLEANING UP THE ZABBIX DATABASE

Configuring DHCP Relay service on the FortiGate unit

WAN link load balancing