mysql物理innobackupex备份脚本和自动备份脚本

news2025/6/7 13:55:08

目录

备份命令

恢复命令

自动备份脚本


innobackupex是一款MySQL备份工具,备份速度快(通过直接copy物理文件),而且支持压缩、流式传输、加密等功能

新安装的数据库自带innobackupex,如果找不到命令,需安装percona-xtrabackup-24-2.4.20-1.el7.x86_64.rpm

若遇到问题,请查看MySQL备份工具 Xtrabackup安装_J-贾的博客-CSDN博客

备份命令

innobackupex --defaults-file=/export/servers/data/my3306/my.cnf --user=备份用户名 --password=备份密码 --slave-info 备份名称(all_bak)

恢复命令

Prepare准备,通过回滚未提交的事务及同步已经提交的事务至数据文件数据文件处于一致性状态

innobackupex --defaults-file=/export/servers/data/my3306/my.cnf --user=root --apply-log /export/servers/data/mybackup/备份路径

还原数据,原理即拷贝数据文件至data目录:

innobackupex --defaults-file=/export/servers/data/my3306/my.cnf --user=root --copy-back /export/servers/data/mybackup/备份路径

自动备份脚本

#!/bin/bash
if [ $# = 0 ];
then
    echo "Please enter mysql port"
    exit
fi

##传入需要备份实例的端口号   *************
mysql_port=$1
INNOBACKUPEX=/usr/bin/innobackupex
INNOBACKUPEXFULL=/usr/bin/xtrabackup
MYCNF=/export/servers/data/my${mysql_port}/my.cnf   #(mysql配置文件路径)
MYSOCK=/export/servers/data/my${mysql_port}/run/mysqld.sock  #
USER=备份用户名
PASSWORD=备份密码

MYSQL_BASE=`grep basedir  $MYCNF | awk -F'=' '{print $2}' | sed 's/\/$//' `
BINLOG_CMD="$MYSQL_BASE/bin/mysqlbinlog"
MYSQL_CMD="$MYSQL_BASE/bin/mysql"


#备份盘尽量和数据盘分开
TARBACKUPDIR='/export/backupmysql/backup_'$mysql_port'/data' # 全库备份的目录
LOGS_DIR='/export/backupmysql/backup_'$mysql_port'/logs' # 日志目录
TMPFILE="/tmp/innobackupex-runner.$$.tmp"
BINLOGBACKDIR='/export/backupmysql/backup_'$mysql_port'/binlog' #binlog备份目录

BACKUP_DATE=$(date +%y%m%d_%H_%M)

LOGFILE=$LOGS_DIR/'mysql_xtrabackup_'$mysql_port'_'$BACKUP_DATE'.log'

for i in $TARBACKUPDIR $LOGS_DIR;
do
  if [ ! -d $i ] ;then
     mkdir -p $i
  fi
done

#############################clean data #######################

find $TARBACKUPDIR -name "*tar.gz*"  -mtime +7  -exec rm -rf {} \;

#find  $BINLOGBACKDIR  -name "$BINLOG_NAME*"  -mtime +14| xargs rm -f {}

############################# check dev free space #######################
check_dev_usage(){
#检查磁盘使用率
DEV_USAGE=`df -h $TARBACKUPDIR | grep -E "[0-9]%" | awk '{if ($4~/%/) print $4; else print $5}' |sed 's/%//g'`

if [ ${DEV_USAGE} -ge 80 ]
then
   echo "dele"
   find $TARBACKUPDIR -name "*tar.gz*"  -mtime +4  -exec rm -rf {} \;
   #find  $BINLOGBACKDIR  -name "$BINLOG_NAME*"  -mtime +12 -exec rm -rf {} \;
   #Need super privileges
   #$MYSQL_CMD -u$USER -p$PASSWORD --socket=$MYSOCK -e "PURGE BINARY LOGS BEFORE \"$EXPIRE_DATE\";"
   DEV_USAGE=`df -h $TARBACKUPDIR | grep -E "[0-9]%" | awk '{if ($4~/%/) print $4; else print $5}' |sed s/%//g`
   if [ ${DEV_USAGE} -ge 80 ]
   then
      echo "The capacity of  disk is too small,it cannot to be backup"
      exit 11
   fi
fi
}

############################# backup database #######################
backup_database(){
echo "[`date +"%Y-%m-%d %H:%M:%S"`] start innobackupex" >> $LOGFILE

$INNOBACKUPEXFULL --defaults-file=$MYCNF --user=$USER  --password="$PASSWORD"  --backup  --lock-ddl-per-table --slave-info   --socket=$MYSOCK --target-dir=$TARBACKUPDIR/$BACKUP_DATE > $TMPFILE 2>&1
if tail -1 $TMPFILE | grep 'completed OK!' ;then
        echo "[`date +"%Y-%m-%d %H:%M:%S"`] end innobackupex successfull" >> $LOGFILE
else

        echo "[`date +"%Y-%m-%d %H:%M:%S"`] end innobackupex fail" >> $LOGFILE

        exit
fi
}

##############################tar backup  files ###########################
tar_backupfile(){
cd $TARBACKUPDIR
THISBACKUP=$BACKUP_DATE
TARNAME=$TARBACKUPDIR/'mysql_xtrabackup_'$mysql_port'_'$BACKUP_DATE'.tar.gz'

#echo THISBACKUP==$THISBACKUP
#echo TARNAME==$TARNAME

rm -f $TMPFILE


echo "[`date +"%Y-%m-%d %H:%M:%S"`] start tar $TARDIR " >> $LOGFILE
tar -czf $TARNAME $THISBACKUP
if [ $? == 0 ];then
        echo "[`date +"%Y-%m-%d %H:%M:%S"`] end tar $TARDIR successfull" >> $LOGFILE
else
        echo "[`date +"%Y-%m-%d %H:%M:%S"`] end tar $TARDIR  fail" >> $LOGFILE
        exit
fi

rm -fr $THISBACKUP
}
##############################backup binlog ###########################


main(){
   check_dev_usage
   backup_database
   tar_backupfile
#   backup_binlog

}
main

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/334617.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python数据结构:数组、链表、栈、队列、树

目录1.数组1.1 数组的数据结构1.1.1 数组的定义1.1.2 随机访问和连续内存1.1.3 静态内存和动态内存1.1.4 物理大小和逻辑大小1.2 数组的操作1.2.1 增加数组大小1.2.2 减小数组大小1.2.3 插入一项1.2.4 删除一项1.2.5 复杂度权衡1.3 二维数组2.链表2.1 链表分类2.2 链表特点2.3 …

OKCC呼叫中心使用中常见问题及处理方法

经常有客户咨询在使用OKCC呼叫中心系统时遇到的一些常见但不复杂的问题,下面整理了一些问题和处理方法给伙伴们参考:一、外呼任务为何启动后会自动暂停?1.检查该账户余额是否充足;2.外呼任务班组中是否有空闲坐席;3.分…

终于找到blender渲染总是崩溃的原因了

如果您开始渲染,Blender 会崩溃,并在渲染过程中自动关闭,可能是由于这两个主要原因之一。Blender 用完了可用内存显卡有问题在本文中,我们将了解如何处理 Blender 在渲染时崩溃的情况。Blender内存不足如果我们从 RAM 问题开始。要…

卸载Node.js

0 写在前面 无论您是因为什么原因要卸载Node.js都必须要卸载干净。 请阅读: 1 卸载步骤 1.1通过控制面板卸载node.js winR—>control.exe—>卸载程序—>卸载Node.js 等待—>卸载成功 1.2 删除安装时的nodejs文件夹 通过记忆或者Everthing搜索找…

《MySQL学习》 事务隔离 与 MVCC

《MySQL学习》 事务隔离 一.事务的概念 事务保证一组数据要么全部成功要么全部失败,MySQL的事务基于引擎(如InnoDB)实现。 二.事务的隔离性与隔离级别 MySQL的标准隔离级别: 读未提交 : 一个事务还没提交时&#…

网络变压器与不同芯片之间的匹配原则及POE通讯产品需要注意哪些方面

Hqst盈盛电子导读:网络变压器与不同芯片之间的匹配原则及POE通讯产品需要注意哪些方面网络变压器与不同芯片之间的匹配原则:一,电流型PHY芯片一般要配的网络变压器:1、变压器PHY侧3线共模电感 (更适合POE产品&#xff…

Nginx_3

Rewrite功能配置 Rewrite是Nginx服务器提供的一个重要基本功能,是Web服务器产品中几乎必备的功能。主要的作用是用来实现URL的重写。www.jd.com 注意:Nginx服务器的Rewrite功能的实现依赖于PCRE的支持,因此在编译安装Nginx服务器之前,需要安…

Thinkphp大型进销存ERP源码/ 进销存APP源码/小程序ERP系统/含VUE源码支持二次开发

框架:ThinkPHP5.0.24 uniapp 包含:服务端php全套开源源码,uniapp前端全套开源源码(可发布H5/android/iod/微信小程序/抖音小程序/支付宝/百度小程序) 注:这个是全开源,随便你怎么开,怎么来&a…

DHCP基础

DHCP基础产生背景传统手工配置的缺陷DHCP基本概念及优点DHCP工作原理DHCP租期更新DHCP相关配置命令解析产生背景 因为现在上网的人已经变得非常多了,上网又需要分配IP地址,那么如何进行IP地址的分配?如果是手动分配IP地址,在人数…

深眸科技以科技赋能智慧物流搭建,实现周转箱拆垛作业智能化

数字化时代下市场竞争的核心要素转化为科技的竞争,智能化技术的投入是企业占据市场竞争绝对优势的重要支撑。深眸科技凭借轻辙视觉引擎实现周转箱拆垛作业的智能化突破。人力成本增加,企业积极转变特别是在后疫情时代,人力成本迅猛增加&#…

Docker进阶 - 7. docker network 网络模式之 host

目录 1. host 模式概述 2. host模式代码语法 3. docker inspect 查看 bridge/host模式 容器元数据 4. ip addr 进入 tomcat83 (host模式) 容器内部查看容器ip 5. 如何访问启动 tomcat83 (host模式) 1. host 模式概述 直接使用宿主机的IP地址与外界进行通信,不…

警惕!爆火的ChatGPT 暗藏的安全隐患 数字信息的未来

近段时间以来,ChatGPT 在各大平台网站是刷屏一般的存在,随之而来的各式各样的赞美与吁叹,更是不断地勾起人们的好奇心理。但在几天铺天盖地式的营销之后,ChatGPT 的舆论在2月7日晚的舆论风口就发现了极大的转变,各平台…

2010-2019年290个城市经济发展与环境污染数据

2010-2019年290个城市经济发展与环境污染数据 1、时间:2010-2019年 2、统计口径:全市 3、来源:城市统计NJ,缺失情况与年鉴一致 4、指标包括: 综合经济:地区生产总值、人均地区生产总值、地区生产总值增…

云原生系列之使用 prometheus监控远程主机实战

文章目录前言一. 实验环境二. 安装node_exporter2.1 node_exporter的介绍2.2 node_exporter的安装三. 在prometheus服务端配置监控远程主机3.1 在server端配置拉取node的信息3.2 重启prometheus3.3 通过浏览器查看prometheus总结前言 大家好,又见面了,我…

Pyqt5小案例,界面与逻辑分离的小计算器程序

直接看下最终效果: 使用技术总结 使用Designer设计界面 使用pyuic5命令导出到python文件 新建逻辑处理文件,继承pyuic5导出的文件的类,在里面编写信号与槽的处理逻辑 使用Designer设计界面 要使用Designer,安装一个Python库即…

Qml学习——鼠标事件处理MouseArea

最近在学习Qml,但对Qml的各种用法都不太熟悉,总是会搞忘,所以写几篇文章对学习过程中的遇到的东西做一个记录。 学习参考视频:https://www.bilibili.com/video/BV1Ay4y1W7xd?p1&vd_source0b527ff208c63f0b1150450fd7023fd8 其…

解决:FTP协议路径在资源管理器打开,总是默认跳转到某个浏览器打开

解决:FTP协议路径在资源管理器打开,总是默认跳转到某个浏览器打开一问题描述:(1)电脑原本能够在资源管理器里面,正确打开ftp协议路径地址,不会自动跳转到其他浏览器里面。(2&#xf…

【自学Docker 】Docker search命令

大纲 Docker search命令 docker search命令教程 docker search 命令用于从 Docker Hub 查找镜像。 docker search命令语法 haicoder(www.haicoder.net)# docker search [OPTIONS] TERMdocker search命令参数 参数描述docker search --filter设置过滤条件。docker search -…

Set集合的特点,HashSet去重的几个重要问题

Set集合的特点:无下标,无序(新增顺序和遍历顺序不一致,新增顺序不影响遍历顺序,而且有一个固定顺序),去重(不允许重复记录)public class TestOne {public static void main(String[] args) {// Set集合的特点&#xff…

Python 3 中文编码 ,首先要会

Python 中文编码 前面章节中我们已经学会了如何用 Python 输出 “Hello, World!”, 英文没有问题, 但是如果你输出中文字符 “你好,世界” 就有可能会碰到中文编码问题。 Python 文件中如果未指定编码,在执行过程会出现报错&…