Skip to content

InnoBackupX

  • This is great tool for hot online backup.
  • Following script is used to backup mysql to remote server with key less entry only.
  • Following script need you to change some variables.
Master server

File: /usr/bin/pushbackup.sh

#!/bin/bash

if /usr/bin/innobackupex-1.5.1 --no-timestamp --no-lock --user=root --password=testpassword --stream=tar ./ | ssh [email protected] "cat - > /root/bkuptest/Backup/test.tar"
then
        if ssh [email protected] "/usr/bin/mybackup.sh"
                then
                echo "Backup Done" | mail -s "[Backup] backup done Complete" [email protected]
        else
                echo "Backup Failed" | mail -s "[Backup] master Failed" [email protected]
        fi
else
        echo "Backup Failed" | mail -s "[Backup] master Failed" [email protected]
fi
Remote Server

File: /usr/bin/mybackup.sh

#!/bin/bash

cd /root/bkuptest/Backup
if tar -ixvf test.tar
then
/etc/init.d/mysqld stop
/bin/sleep 20
if ps awux | grep -v grep | grep mysqld
  then
    exit $?
  else
   echo "mysql stopped"
fi
if rm -rf /var/lib/mysql/*
  then
        echo "remove done"
   if /usr/bin/innobackupex-1.5.1 --copy-back /root/bkuptest/Backup/
    then 
        echo "copy back done"
     if chown -R mysql:mysql /var/lib/mysql
      then 
        echo "permission Done"
        /bin/sleep 20
       /etc/init.d/mysqld start
          /bin/sleep 20
                if ps awux | grep -v grep | grep mysqld
                then
                  echo "mysql started"
                else
                  exit $?
                fi
          if /usr/bin/innobackupex-1.5.1 --apply-log --user=root --password=testpassword /root/bkuptest/Backup/
           then
                echo "applying log done"
            if rm -rf /root/bkuptest/Backup/*
            then
                echo "removing done"
                exit $?
            else
             echo "failed removing backup" | mail -s "[Backup] remote.backup.com Failed Backup " [email protected]
             exit $?
           fi
          else
            echo "Failed applying log" | mail -s "[Backup] remote.backup.com Failed Backup " [email protected]
            exit $?
          fi
       else
        echo "Failed setting up permission" | mail -s "[Backup] remote.backup.com Failed Backup " [email protected]
        exit $?
       fi
     else
      echo "Filed on Copy Back" | mail -s "[Backup] remote.backup.com Failed Backup " [email protected]
      exit $?
     fi
   else
    echo "Failed Removing Mysql Files" | mail -s "[Backup] remote.backup.com Failed Backup " [email protected]
    exit $?
   fi
fi
else
echo "Failed everything on destination" | mail -s "[Backup] remote.backup.com Failed Backup " [email protected]
fi