課時7-備份與恢復----資料庫備份策略指令碼

小亮520cl發表於2015-11-24
一個指令碼

  1. #!/bin/bash
  2. export LANG=en_US.UTF-8
  3. export LC_CTYPE="zh_CN.UTF-8"

  4. function usage()
  5. {
  6. cat << EOF
  7. Usage: $0 [OPTION]
  8.     -?,--help show this help and exit
  9.     --user=<> set the username to connect the mysql
  10.     --password=<> set the password to connect the mysql
  11.     --backuptype=<> set the type of backup,such as DATA_FULL,DATA_INC
  12.     --defaults-file=<> set the config file
  13.     --backup_path=<> set the remote host by formate name@host
  14.     --innoback=<> set the full path of the innoback
  15.     --xtraback=<> set the full path of the xtraback
  16. EOF
  17. }

  18. function get_option()
  19. {
  20.         echo "$1" | sed 's/=[/a-zA-Z0-9]*$//' | sed 's/^--//' | tr '[a-z]' '[A-Z]'
  21. }

  22. function get_option_value()
  23. {
  24.         echo "$1" | sed 's/^--[a-zA-Z_-]*=//'
  25. }


  26. function parse_option()
  27. {
  28.         while test $# -gt 0
  29.         do
  30.                 case $1 in
  31.                         --user=*)
  32.                         USER=`get_option_value "$1"`
  33.                         echo "USER : $USER"
  34.                         ;;
  35.                         --password=*)
  36.                         PASSWORD=`get_option_value "$1"`
  37.                         echo "PASSWORD : $PASSWORD"
  38.                         ;;
  39.                         --backup_path=*)
  40.                         BACKUP_PATH=`get_option_value "$1"`
  41.                         echo "BACKUP_PATH : $BACKUP_PATH"
  42.                         ;;
  43.                         --defaults-file=*)
  44.                         MYCNF=`get_option_value "$1"`
  45.                         echo "MYCNF : $MYCNF"
  46.                         ;;
  47.                         --backuptype=*)
  48.                         BACKUPTYPE=`get_option_value "$1"`
  49.                         echo "BACKUPTYPE : $BACKUPTYPE"
  50.                         ;;
  51.                         --innoback=*)
  52.                         INNOBACK=`get_option_value "$1"`
  53.                         #echo "INNOBACK : $INNOBACK"
  54.                         ;;
  55.                         --xtraback=*)
  56.                         XTRABACK=`get_option_value "$1"`
  57.                         #echo "XTRABACK : $XTRABACK"
  58.                         ;;
  59.                         -?|--help)
  60.                         usage
  61.                         exit 0
  62.                         ;;
  63.                         *)
  64.                         echo "Unknown option '$1'"
  65.                         ;;
  66.                 esac
  67.                 shift
  68.         done
  69. }

  70. back_full()
  71. {
  72.    parse_option
  73.    $INNOBACK --user=$USERNAME --password=$PASSWORD --defaults-file=$MYCNF --no-timestamp $DATA_FULL/base$DATE
  74. 2> $DATA_FULL/timestamp$DATE.log
  75.    grep 'INNOBACKupex: completed OK!' $DATA_FULL/timestamp$DATE.log
  76. }

  77. back_inc()
  78. {
  79.         parse_option
  80.         $XTRABACK --defaults-file=$MYCNF --user=$USERNAME --password=$PASSWORD --backup --target-dir=$DATA_I
  81. NC/base_inc$DAY --incremental-basedir=$DATA_FULL/base`date -d "$DAY days ago" +%F` 2> $DATA_INC/timestamp$DATE
  82. _inc.log
  83. }
  84. # XTRABACKup conf
  85. MYCNF=/home/data/mydata/3308/my.cnf
  86. USERNAME=root
  87. PASSWORD=ESBecs00
  88. BACKUP_PATH=/xback
  89. DATA_FULL=$BACKUP_PATH/back_data_full
  90. DATA_INC=$BACKUP_PATH/back_data_inc
  91. INNOBACK=/usr/bin/innobackupex
  92. XTRABACK=/usr/bin/xtrabackup

  93. mkdir -p $DATA_FULL $DATA_INC

  94. DAY=`date +%w`
  95. echo $DAY
  96. #0
  97. DATE=`date +%F`
  98. echo $DATE
  99. #2015-11-22
  100. case $DAY in
  101.     0)
  102.         # Sunday Full backup
  103.         back_full
  104.         ;;
  105.     1)
  106.         # Monday Relatively Sunday's incremental backup
  107.         back_inc
  108.         ;;
  109.     2)
  110.         # Tuesday Compared with Monday's incremental backup
  111.         back_inc
  112.         ;;
  113.     3)
  114.         # Wednesday Full backup
  115.         back_inc
  116.         ;;
  117.     4)
  118.         # Thursday Relatively Wednesday's incremental backup
  119.         back_inc
  120.         ;;
  121.     5)
  122.         # Friday Compared with Thursday's incremental backup
  123.         back_inc
  124.         ;;
  125.     6)
  126.         # Saturday Compared with Friday
  127.         back_inc
            ;;
    esac





點評:有備份策略,程式碼邏輯也比較完善。

點評:備份邏輯完整,但是沒有體現備份策略和自動化。

點評:很多人都直接借用了,不得不說好。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29096438/viewspace-1845248/,如需轉載,請註明出處,否則將追究法律責任。

相關文章