ITPub博客

首页 > 数据库 > MySQL > 课时7-备份与恢复----数据库备份策略脚本

课时7-备份与恢复----数据库备份策略脚本

原创 MySQL 作者:小亮520cl 时间:2015-11-24 11:46:57 0 删除 编辑
一个脚本

  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




http://www.dataguru.cn/forum.php?mod=viewthread&tid=344887&extra=
点评:有备份策略,代码逻辑也比较完善。
http://f.dataguru.cn/forum.php?mod=viewthread&tid=344627&page=1&extra=
点评:备份逻辑完整,但是没有体现备份策略和自动化。
http://f.dataguru.cn/thread-342368-1-1.html
点评:很多人都直接借用了,不得不说好。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29096438/viewspace-1845248/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: rsync详细解释
请登录后发表评论 登录
全部评论
毕业以后专业任职数据库工程师职位,itpub一直作为自己的笔记记录的地方,blog写的不详细,草书笔记,仅供参考!

注册时间:2013-09-12

  • 博文量
    529
  • 访问量
    1126954