Advertisement
Guest User

Restore

a guest
Mar 3rd, 2018
357
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.29 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. CURDIR=$(dirname "$(readlink -f "$0")")
  4. BACKUP=$1
  5. BASE=$2
  6.  
  7. typeset -A conf
  8. while IFS=$':= \t' read key value; do
  9.   [[ $key = [#!]* ]] || [[ $key = "" ]] || conf[$key]=$value
  10. done < $CURDIR/restore.cnf
  11.  
  12. function wait(){
  13.     secs=$1
  14.     while [ $secs -gt 0 ]; do
  15.        echo -ne "Wait for $secs seconds...\033[0K\r"
  16.        sleep 1
  17.        : $((secs--))
  18.     done
  19.     echo -ne "Countdown complete!\033[0K\n"
  20. }
  21.  
  22.  
  23. if [ -d $BACKUP ]; then
  24.   rm -r $BACKUP
  25. fi
  26.  
  27. mkdir $BACKUP && cd $BACKUP
  28.  
  29. xbstream -x < $BACKUP.xbstream
  30.  
  31. xtrabackup --decrypt=AES256 --encrypt-key-file=${conf[encryption_key]} --target-dir=$BACKUP
  32.  
  33. for i in $(find -name "*.xbcrypt"); do rm -f $i; done
  34.  
  35. for i in $(find -name "*.qp"); do qpress -vd $i $(dirname ${i}) && rm -f $i; done
  36.  
  37. xtrabackup --prepare --export --target-dir=$BACKUP
  38.  
  39. typeset -A props
  40. while IFS=$':= \t' read key value; do
  41.   [[ $key = [#!]* ]] || [[ $key = "" ]] || props[$key]=$value
  42. done < $BACKUP/$BASE/db.opt
  43.  
  44. echo "CREATE DATABASE IF NOT EXISTS $BASE CHARACTER SET ${props[default-character-set]} COLLATE ${props[default-collation]}"
  45. 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]}
  46.  
  47. cd $BACKUP/$BASE
  48.  
  49. echo "Importing InnoDB tables structure"
  50. 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
  51.  
  52.  
  53. 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
  54.  
  55. if [ -d ${conf[database_dir]}/$BASE ]; then
  56.    rm -r ${conf[database_dir]}/$BASE
  57. fi
  58.  
  59. cp -vr $BACKUP/$BASE ${conf[database_dir]}/
  60.  
  61. echo ${conf[restart_mysql]}
  62. eval ${conf[restart_mysql]}
  63. wait 120
  64.  
  65. 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
  66.  
  67. rm -r $BACKUP
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement