Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- CURDIR=$(dirname "$(readlink -f "$0")")
- BACKUP=$1
- BASE=$2
- typeset -A conf
- while IFS=$':= \t' read key value; do
- [[ $key = [#!]* ]] || [[ $key = "" ]] || conf[$key]=$value
- done < $CURDIR/restore.cnf
- function wait(){
- secs=$1
- while [ $secs -gt 0 ]; do
- echo -ne "Wait for $secs seconds...\033[0K\r"
- sleep 1
- : $((secs--))
- done
- echo -ne "Countdown complete!\033[0K\n"
- }
- if [ -d $BACKUP ]; then
- rm -r $BACKUP
- fi
- mkdir $BACKUP && cd $BACKUP
- xbstream -x < $BACKUP.xbstream
- xtrabackup --decrypt=AES256 --encrypt-key-file=${conf[encryption_key]} --target-dir=$BACKUP
- for i in $(find -name "*.xbcrypt"); do rm -f $i; done
- for i in $(find -name "*.qp"); do qpress -vd $i $(dirname ${i}) && rm -f $i; done
- xtrabackup --prepare --export --target-dir=$BACKUP
- typeset -A props
- while IFS=$':= \t' read key value; do
- [[ $key = [#!]* ]] || [[ $key = "" ]] || props[$key]=$value
- done < $BACKUP/$BASE/db.opt
- echo "CREATE DATABASE IF NOT EXISTS $BASE CHARACTER SET ${props[default-character-set]} COLLATE ${props[default-collation]}"
- echo "CREATE DATABASE IF NOT EXISTS $BASE CHARACTER SET ${props[default-character-set]} COLLATE ${props[default-collation]}" | mysql -h${conf[host]} -P${conf[port]} -u${conf[user]} -p${conf[password]}
- cd $BACKUP/$BASE
- echo "Importing InnoDB tables structure"
- for i in $(find -name "*.exp"); do ${conf[dbsake_path]} frmdump $(echo $i|head -c -5).frm | mysql -h${conf[host]} -P${conf[port]} -u${conf[user]} -p${conf[password]} $BASE && sleep 1; done
- for i in $(find -name "*.exp"); do echo "ALTER TABLE $(echo $i|tail -c +3|head -c -5) DISCARD TABLESPACE" && echo "ALTER TABLE $(echo $i|tail -c +3|head -c -5) DISCARD TABLESPACE" | mysql -h${conf[host]} -P${conf[port]} -u${conf[user]} -p${conf[password]} $BASE && sleep 1; done
- if [ -d ${conf[database_dir]}/$BASE ]; then
- rm -r ${conf[database_dir]}/$BASE
- fi
- cp -vr $BACKUP/$BASE ${conf[database_dir]}/
- echo ${conf[restart_mysql]}
- eval ${conf[restart_mysql]}
- wait 120
- for i in $(find -name "*.exp"); do echo "ALTER TABLE $(echo $i|tail -c +3|head -c -5) IMPORT TABLESPACE" && echo "ALTER TABLE $(echo $i|tail -c +3|head -c -5) IMPORT TABLESPACE" | mysql -h${conf[host]} -P${conf[port]} -u${conf[user]} -p${conf[password]} $BASE && sleep 1; done
- rm -r $BACKUP
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement