iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >abin 备份脚本
  • 208
分享到

abin 备份脚本

2024-04-02 19:04:59 208人浏览 安东尼
摘要

#!/bin/sh # # 第一次执行它的时候它会检查是否有完全备份,否则先创建一个全库备份# 当你再次运行它的时候,它会根据脚本中的设定来基于之前的全库备份进行增量备份 IN

#!/bin/sh
 #
 # 第一次执行它的时候它会检查是否有完全备份,否则先创建一个全库备份
# 当你再次运行它的时候,它会根据脚本中的设定来基于之前的全库备份进行增量备份

 
INNOBACKUPEX_PATH=innobackupex #INNOBACKUPEX的命令
INNOBACKUPEXFULL=/usr/bin/$INNOBACKUPEX_PATH #INNOBACKUPEX的命令路径
 
#Mysql目标服务器以及用户名和密码
mysql_CMD="--host=192.16.2.11 --user=root --passWord=123456 --port=3306"
 
MYsql_UP="--user=root --password=123456 -p3306" #mysql的用户名和密码
 
TMPLOG="/tmp/innobackupex.$$.log"
 
MY_CNF=/etc/my.cnf #mysql的配置文件
 
MYSQL=/usr/bin/mysql
 
MYSQL_ADMIN=/usr/bin/mysqladmin
 
BACKUP_DIR=/backup # 备份的主目录
 
FULLBACKUP_DIR=$BACKUP_DIR/full # 全库备份的目录
 
INCRBACKUP_DIR=$BACKUP_DIR/incre # 增量备份的目录
 
FULLBACKUP_INTERVAL=259200 # 全库备份的间隔周期,时间:秒
 
KEEP_FULLBACKUP=1 # 至少保留几个全库备份
 
logfiledate=backup.`date +%Y%m%d%H%M`.txt
 
#开始时间
STARTED_TIME=`date +%s`
#date +%s从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数
 
 
#############################################################################
 
# 显示错误并退出
 
#############################################################################
 
error()
 {
     echo "$1" 1>&2
     exit 1
 }
 
 
 
# 检查执行环境
 
if [ ! -x $INNOBACKUPEXFULL ]; then
   error "$INNOBACKUPEXFULL未安装或未链接到/usr/bin."
 fi
#-x 测试是否有执行权限
 
 
if [ ! -d $BACKUP_DIR ]; then
   error "备份目标文件夹:$BACKUP_DIR不存在."
fi
 
 
 
if [ -z "`$MYSQL_ADMIN $MYSQL_UP status | grep 'Uptime'`" ] ; then
  error "MySQL 没有启动运行."
fi
 
 #-z 空字符串
 
 
 
if ! `echo 'exit' | $MYSQL -s $MYSQL_CMD` ; then
  error "提供的数据库用户名或密码不正确!"
fi
 
#mysql -s, --silent //一行一行输出,中间用tab分隔
 
 
# 备份的头部信息
 
echo "----------------------------"
echo
 echo "$0: MySQL备份脚本"
echo "开始于: `date +%F' '%T' '%w`"
 echo
#上面的$0 表示当前运行的进程名或是当前执行的脚本名
 
 
#新建全备和差异备份的目录
 
mkdir -p $FULLBACKUP_DIR
mkdir -p $INCRBACKUP_DIR
 
 
 
#查找最新的完全备份
LATEST_FULL_BACKUP=`find $FULLBACKUP_DIR -mindepth 1 -maxdepth 1 -type d -printf "%P\n" | sort -nr | head -1`
 
#-mindepthd 1,表示从$FULLBACKUP_DIR目录的第0层开始查;-maxdepth 1,表示列出$FULLBACKUP_DIR内的文件时深度最多为0层
 
 
# 查找最近修改的最新备份
 
LATEST_FULL_BACKUP_CREATED_TIME=`stat -c %Y $FULLBACKUP_DIR/$LATEST_FULL_BACKUP`
#stat -c %Y 获取文件的修改时间
 
 #如果全备有效进行增量备份否则执行完全备份
if [ "$LATEST_FULL_BACKUP" -a `expr $LATEST_FULL_BACKUP_CREATED_TIME + $FULLBACKUP_INTERVAL + 5` -ge $STARTED_TIME ] ; then
 # 如果最新的全备未过期则以最新的全备文件名命名在增量备份目录下新建目录
echo -e "完全备份$LATEST_FULL_BACKUP未过期,将根据$LATEST_FULL_BACKUP名字作为增量备份目录命名"
echo " "
 NEW_INCRDIR=$INCRBACKUP_DIR/$LATEST_FULL_BACKUP
 mkdir -p $NEW_INCRDIR
 
 
 
# 查找最新的增量备份是否存在.指定一个备份的路径作为增量备份的基础
LATEST_INCR_BACKUP=`find $NEW_INCRDIR -mindepth 1 -maxdepth 1 -type d | sort -nr | head -1`
 
if [ ! $LATEST_INCR_BACKUP ] ; then
 INCRBASEDIR=$FULLBACKUP_DIR/$LATEST_FULL_BACKUP
 echo -e "增量备份将以$INCRBASEDIR作为备份基础"
echo " "
 else
 INCRBASEDIR=$LATEST_INCR_BACKUP
 echo -e "增量备份将以$INCRBASEDIR作为备份基础"
echo " "
 fi
 
 
 
echo "使用$INCRBASEDIR作为基础做新的增量备份."
 $INNOBACKUPEXFULL --defaults-file=$MY_CNF --use-memory=4G $MYSQL_CMD --incremental $NEW_INCRDIR --incremental-basedir $INCRBASEDIR > $TMPLOG 2>&1
 else
 echo "*********************************"
 echo -e "正在执行全新的完全备份...请稍等..."
echo "*********************************"
 $INNOBACKUPEXFULL --defaults-file=$MY_CNF --use-memory=4G $MYSQL_CMD $FULLBACKUP_DIR > $TMPLOG 2>&1
 fi
# --use-memory该参数在 prepare 的时候使用,控制 prepare 时 innodb 实例使用的内存量
 
 #保留一份备份的详细日志
 
cat $TMPLOG>/backup/$logfiledate
 
 
 
if [ -z "`tail -1 $TMPLOG | grep 'innobackupex: completed OK!'`" ] ; then
  echo "$INNOBACKUPEX命令执行失败:"; echo
  echo -e "---------- $INNOBACKUPEX_PATH错误 ----------"
  cat $TMPLOG
  rm -f $TMPLOG
  exit 1
 fi
 
 
 
THISBACKUP=`awk -- "/Backup created in directory/ { split( \\\$0, p, \"'\" ) ; print p[2] }" $TMPLOG`
 rm -f $TMPLOG
 
 
 
echo -n "数据库成功备份到:$THISBACKUP"
 echo
 
 
 
# 提示应该保留的备份文件起点
LATEST_FULL_BACKUP=`find $FULLBACKUP_DIR -mindepth 1 -maxdepth 1 -type d -printf "%P\n" | sort -nr | head -1`
 echo -e "必须保留$KEEP_FULLBACKUP份全备和全备$LATEST_FULL_BACKUP以后的所有增量备份."
 
 
 #删除过期的全备
echo -e "寻找过期的全备文件并删除">>/backup/$logfiledate
 for efile in $(/usr/bin/find $FULLBACKUP_DIR/ -mtime +6)
 do
  if [ -d $efile ]; then
  rm -rf $efile
  echo -e "删除过期全备文件:$efile" >>/backup/$logfiledate
  elif [ -f $efile ]; then
  rm -rf $file
  echo -e "删除过期全备文件:$efile" >>/backup/$logfiledate
  fi;
 
 done
 
if [ $? -eq "0" ];then
    echo
    echo -e "未找到可以删除的过期全备文件"
fi
 
 
 
echo
 echo "完成于: `date +%F' '%T'


您可能感兴趣的文档:

--结束END--

本文标题: abin 备份脚本

本文链接: https://www.lsjlt.com/news/43670.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python脚本备份
    #!/usr/bin/python #encodeing:utf-8 import os import time import string #需要备份的目录 source = ['/usr/local/nagios','/var/www/...
    99+
    2023-01-31
    脚本 备份 python
  • mysqldump备份脚本
    [root@sq1 /]# cat logic_backup.sh #!/bin/bash CUR_DATE=`date +%Y%m%d`         &...
    99+
    2024-04-02
  • python备份mysql脚本
    今天简单的写了个python的mysql备份脚本,其实也不是很难呀。比shell简洁了很多!  开整:  注释都用英文写了,有些英语基础的朋友应该都可以看得懂了!#!/usr/bin/env python #backup the gtsho...
    99+
    2023-01-31
    脚本 备份 python
  • python备份脚本解析
     脚本简介: 1)备份源目录的文件 2)目标文件以tar 和bzip2的方式压缩之后放在当前日期文件夹下 4)备份文件以时间注释和执行脚本的用户命名 3)主要用到了时间模块,系统模块,和getpass模块 4)source 可以修改为想备份...
    99+
    2023-01-31
    脚本 备份 python
  • python备份目录脚本
    此脚本适用于备份指定发布目录下的目录,可适当修改运用!#!/usr/bin/env python#backup app python script.import osimport timeimport sysnowTime = time.s...
    99+
    2023-01-31
    脚本 备份 目录
  • mysqldump如何备份脚本
    这篇文章将为大家详细讲解有关mysqldump如何备份脚本,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。mysql_full_backup.sh#!/bin/sh#Cre...
    99+
    2024-04-02
  • windows2008下 rman备份脚本
    一般情况下  生产环境都是归档模式,但是有的公司一直用的是非归档方式首先看下db的归档方式SQL> archive log list;如果是归档方式,就可以采用rman方式进行备份。平台:server 2008 databa...
    99+
    2023-06-06
  • 如何备份shell脚本
    小编给大家分享一下如何备份shell脚本,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!backup_run.sh代码如下:    #...
    99+
    2023-06-09
  • python常用的备份脚本
    脚本介绍:1)备份源目录的文件2)目标文件以tar 和bzip2的方式压缩之后放在当前日期文件夹下4)备份文件以时间注释和执行脚本的用户命名3)主要用到了时间模块,系统模块,和getpass模块4)source 可以修改为想备份的目录,因为...
    99+
    2023-01-31
    脚本 备份 常用
  • mysql的备份脚本分享
    本篇内容介绍了“mysql的备份脚本分享”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!#!/bin/bas...
    99+
    2024-04-02
  • MySQL热备份与还原---利用mysqldump---备份脚本
    对extmail数据库进行每天01:00完全热备份,并可以完全恢复!一、先建立备份脚本,如下:vi mysql_extmail_bak.sh #!/bin/bash # Program ...
    99+
    2024-04-02
  • python oracle数据库备份脚本
    学习python,将shell备份脚本改成了python脚本练手.python oracle备份脚本一例如下。#!/usr/bin/env python   # -*- coding: utf-8 -*-  import time impo...
    99+
    2023-01-31
    脚本 备份 数据库
  • rsync多线程备份脚本 --pytho
    闲话少说,脚本奉上,希望对大家有帮助。#!/bin/env python #coding=utf8 import os,sys,time,re,threading now=time.strftime('%Y%m%d') log_02='/...
    99+
    2023-01-31
    多线程 脚本 备份
  • 检查备份情况的脚本
    #-*-coding:gbk-*- #gbk可以识别windows文件里面的中文import osimport sysdef check_backup_info(path):  &...
    99+
    2023-06-02
  • Linux下Oracle自动备份脚本
    #!/bin/bash export ORACLE_HOME=/usr/local/instantclient_11_2export PATH=$ORACLE_HOME:$PATHexport TNS_AD...
    99+
    2024-04-02
  • python 脚本实现备份文件
    ''' 功能:备份文件 版本:1.0 作者:白 ''' import  os,time,sys d_dir = '/data/backup/' d_file = 'system_bak.tar.gz' s_dir = ['/etc','/b...
    99+
    2023-01-31
    脚本 备份文件 python
  • MySQL数据库全库备份及增量备份脚本
    脚本网盘链接下载。 1、全库备份脚本如下: #!/bin/bash ############### 定义默认值 ################# user='root' passwd='123.com...
    99+
    2024-04-02
  • MySQL分库分表备份脚本
    备份数据库脚本[root@*** script]# cat store_backup.sh #!/bin/shMYUSER=rootMYPASS=qwe123SOCKET=/data/3306/m...
    99+
    2024-04-02
  • 【MySQL】Xtrabackup备份及恢复脚本
    简介: 此备份脚本的策略是每周日和周三进去全备 其余每天增量备份。 # 备份脚本XtraBackup.sh: #!/bin/bash # filename : XtraBackup.sh # ...
    99+
    2024-04-02
  • CentOS系统备份脚本分享
    本篇内容主要讲解“CentOS系统备份脚本分享”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“CentOS系统备份脚本分享”吧!#!/bin/sh#设定变量bak_path=/root/bak_l...
    99+
    2023-06-10
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作