shell脚本---实现mysql定时备份、删除、恢复

十大shell脚本任务(二)备份和恢复脚本 备份脚本可以自动化这一过程,确保数据的连续性和完整性。:在数据丢失或损坏的情况下,备份脚本可以与恢复脚本结合使用,快速恢复数据。:脚本可以定制以满足特定需求,例如选择备份频率、指定备份文件的类型和位置。通过脚本化,可以轻松调整这些参数,而无需手动处理。一旦设置,脚本可以在无需额外干预的情况下运行,从而减少了对人力资源的需求。例如,在crontab中添加一条规则,可以每天晚上自动运行备份脚本。:这些命令用于生成文件的哈希值,可以用来验证备份文件的完整性。是一个用于快速同步文件的工具,可以用于创建备份。 阅读详情

mysql备份脚本:
脚本实现:按照数据库名称,全量备份mysql数据库并定期删除

#!/bin/bash
#全备方式,一般在从机上执行,适用于小中型mysql数据库
#删除15天以前备份
#作者:lcm_linux
#时间:2019.08.06
 
source ~/.bash_profile  #加载用户环境变量
set -o nounset       #引用未初始化变量时退出
set -o errexit      #执行shell命令遇到错误时退出
#备份用户---需要在mysql中提前创建并授权
#GRANT SELECT,RELOAD,LOCK TABLES,REPLICATION CLIENT,SHOW VIEW,TRIGGER,EVENT ON *.* TO 'backup'@'%' IDENTIFIED BY '123456';
#GRANT SELECT,RELOAD,LOCK TABLES,REPLICATION CLIENT,SHOW VIEW,TRIGGER,EVENT ON *.* TO 'backup'@'localhost' IDENTIFIED BY '123456';
user="backup"
#备份用户密码
password="123456"
#mysql连接端口
port="3306"
#mysql path---视情况修改
mysql_path="/usr/local/mysql"
date=$(date +%Y-%m-%d_%H-%M-%S)
del_date=$(date +%Y-%m-%d)
#备份路径---需要修改
backup_path="/opt/mysql_backup/new-bak/data"
backup_log_path="${backup_path}/log"
day=0
backup_log="${backup_log_path}/mysqldump_backup_${date}.log"
# 除了127.0.0.1以外的ip截取 /sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"
#删除以前备份
find ${backup_path} -type f -mtime +$day -name "*.tar.gz" -exec rm -rf {} \; > /dev/null 2>&1 

for f in `ls $backup_path`;
do
    if [[ $f = ${del_date}_* ]]; then
        rm -rf $backup_path/$f
    fi
done
#建立备份目录
if [ ! -e $backup_path/${date} ];then
  mkdir -p {$backup_path/${date},$backup_log_path}
fi
 
 
#echo "开始备份所有数据库" 
echo "备份开始,结果查看 $backup_log"
echo "==========All databases backups begin==========" >>$backup_log
#备份并压缩
  for dbname in $(mysql -P$port -u$user -p$password -A -e "show databases\G"|grep Database|grep -v schema|grep -v test|awk '{print $2}')
  do
  sleep 1
  mysqldump -P$port  -u$user -p$password  $dbname > $backup_path/${date}/$dbname.sql
  if [[ $? == 0 ]];then
    cd $backup_path/${date}
    size=$(du $backup_path/${date}/$dbname.sql -sh | awk '{print $1}')
    echo "备份时间:${date} 备份方式:mysqldump 备份数据库:$dbname($size) 备份状态:成功!" >>$backup_log
  else
    cd $backup_path/${date}
    echo "备份时间:${date} 备份方式:mysqldump 备份数据库:${dbname} 备份状态:失败,请查看日志." >>$backup_log
  fi
 
  done
 
  cd $backup_path
  tar zcpvf mysql_all_databases_$date.tar.gz $date
  rm -rf $backup_path/$date

du mysql_all_databases_$date.tar.gz -sh | awk '{print "文件:" $2 ",大小:" $1}'
echo "==========All databases backups over==========" >>$backup_log

配置定时任务:
crontab -e
内容如下:

0 1 * * * /bin/bash /opt/script/mysql_shell/mysqlbackup.sh

附上恢复脚本A:
目标实现:对于删除数据库,根据上述备份脚本产生的备份文件内容,进行恢复数据库操作,包括创建数据库名称
注意:恢复脚本需要手动操作

#! /bin/bash
source /etc/profile    #加载系统环境变量
source ~/.bash_profile  #加载用户环境变量
set -o nounset       #引用未初始化变量时退出
set -o errexit      #执行shell命令遇到错误时退出
date_tar=$(date +%Y-%m-%d_%H-%M-%S)
date=$(date +%Y-%m-%d)
local_path=${PWD}
user="root"
#备份用户密码
password="123456"
#mysql连接端口
port="3306"
DB_HOST=`/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"`
mysql_path="/usr/local/mysql"
read -ep "请输入数据库备份文件的路径: " choose_path
if [ ! -d ${choose_path} ];then
	echo "请输入正确路径,已退出"
	exit
else
echo "以下为检测到的数据库文件名称:"
cd ${choose_path}
for file in $(ls ${choose_path})
do
    [ -f ${file} ] && echo ${file%.*} && echo ${file%.*} >> ${local_path}/list.txt #先判断是否是目录,然后再输出
done
fi
cat_list=`cat ${local_path}/list.txt`
function recovery(){
        for dbname in ${cat_list};do
                sleep 1
                create_db="create database IF NOT EXISTS \`${dbname}\`"
                mysql -h$DB_HOST -P$port -u$user -p$password -e "${create_db}"
                mysql -h$DB_HOST -P$port -u$user -p$password -A $dbname < ${choose_path}/$dbname.sql
                 if [[ $? == 0 ]];then
                        echo "恢复时间:${date} 恢复方式:mysqldump 恢复数据库:$dbname 恢复状态:成功!" >> $local_path/recovery_${date}.log
                else
                        echo "恢复时间:${date} 恢复方式:mysqldump 恢复数据库:${dbname} 恢复状态:失败,请查看日志." >> $local_path/recovery_${date}.log

                fi
        done    


}

read -ep "全部恢复输入(A/a),单个恢复输入(B/b):" choose
        if [ $choose = 'A' -o $choose = 'a' ];then
	recovery
	 elif [ $choose = 'B' -o $choose = 'b' ];then
	     read -ep "正在单个恢复数据库,请输入想要恢复的数据库名称:" mydatabase
             echo "正在恢复$mydatabase 请稍后....."
	     create_db="create database IF NOT EXISTS \`${mydatabase}\`"
	     mysql -h$DB_HOST -P$port -u$user -p$password -e "${create_db}"
             mysql -h$DB_HOST -P$port -u$user -p$password -A $mydatabase < $choose_path/$mydatabase.sql
             echo "$mydatabase 已成功恢复,恭喜!"
       	     exit			
			  
	else 
		echo "输入不符合规则,请重新执行..."
	     exit
	    fi	

附上恢复脚本B:
脚本实现:在未删除数据库的情况下,对mysql数据库进行数据恢复,可以选择全部恢复或者逐个恢复。
注意:恢复脚本需要手动操作

#! /bin/bash
source /etc/profile    #加载系统环境变量
source ~/.bash_profile  #加载用户环境变量
set -o nounset       #引用未初始化变量时退出
set -o errexit      #执行shell命令遇到错误时退出
user="root"
#备份用户密码
password="123456"
#mysql连接端口
port="3306"
DB_HOST=`/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"`
mysql_path="/usr/local/mysql"
date=$(date +%Y-%m-%d_%H-%M-%S)
#备份路径---需要修改
#recovery_path="/opt/mysql_backup/new-bak"
#recovery_log="${recovery_path}/mysqldump_recovery_${date}.log"
mysql_list=`mysql -h$DB_HOST -P$port -u$user -p$password -A -e "show databases\G"|grep Database|grep -v schema|grep -v test|awk '{print $2}'`
echo "数据库名称列表如下:"
echo "${mysql_list}"

read -p "全部恢复输入(A/a),单个恢复输入(B/b):" choose
#echo $choose
#	if [ $choose = 'A' -o $choose = 'a' -o $choose != 'B' -o $choose != 'b' ];then
        if [ $choose = 'A' -o $choose = 'a' ];then
	read -p "正在准备恢复全部数据库,请输入恢复数据文件所在路径:" allpath
		if [ ! -d $allpath ];then
			echo "此路径不存在,请重新执行..."
			exit				
		fi
	for dbname in ${mysql_list};do
		sleep 1
		create_db="create database IF NOT EXISTS ${dbname}"
		mysql -h$DB_HOST -P$port -u$user -p$password -e "${create_db}"
		mysql -h$DB_HOST -P$port -u$user -p$password -A $dbname < $allpath/$dbname.sql
		 if [[ $? == 0 ]];then
			cd $allpath
    			size=$(du $allpath/$dbname.sql -sh | awk '{print $1}')
    			echo "恢复时间:${date} 恢复方式:mysql 恢复数据库:$dbname($size) 恢复状态:成功!" >> $allpath/recovery_${date}.log
  		else
    			cd $allpath
    			echo "恢复时间:${date} 恢复方式:mysqldump 恢复数据库:${dbname} 恢复状态:失败,请查看日志." >> $allpath/recovery_${date}.log

		fi
	done	
	 elif [ $choose = 'B' -o $choose = 'b' ];then
	     read -p -e "正在单个恢复数据库,请输入想要恢复的数据库名称:" mydatabase
	     read -p -e "请输入数据库恢复的路径:" mypath
		if [ ! -d $mypath ];then
        		echo "此路径不存在,请重新执行..."
       		 	exit
		elif [ ! -f $mypath/$mydatabase.sql ];then
			echo "此路径下没有目标数据库文件,请重新执行..."
			exit
		     elif [ $mydatabase != $mysql_list ];then
                                echo "$mydatabase 不在此数据库中,请确认数据库名称后再试,再见!"
			  else
                                echo "正在恢复$mydatabase 请稍后....."
								create_db="create database IF NOT EXISTS ${dbname}"
								mysql -h$DB_HOST -P$port -u$user -p$password -e "${create_db}"
                                mysql -h$DB_HOST -P$port -u$user -p$password -A $mydatabase < $mypath/$mydatabase.sql
                                echo "$mydatabase 已成功恢复,恭喜!"
       			 	exit			
			  fi
#		     fi
#		fi
#	     fi
	else 
#	    if [ $choose != 'B' -o $choose != 'b' -o $choose != 'A' -o $choose != 'a' ];then 
		echo "输入不符合规则,请重新执行..."
	     exit
	    fi
	

MySQL定时备份(全量备份+增量备份) 说明产品上线后,数据非常非常重要,万一哪天数据被误删,那么就gg了,准备跑路吧。所以要对线上的数据库定时做。增量备份的优点是没有重复数据,备份量不大,时间短。但缺点也很明显,需要建立在上次完全备份及完全备份之后所有的增量才能恢复。MySQL没有提供直接的增量备份方法,但是可以通过mysql二进制日志间接实现增量备份。 阅读详情

相关推荐

Linux下mysql数据库备份以及恢复shell脚本

Linux下mysql数据库备份以及恢复shell脚本

linux的mysql数据库备份和恢复与日志还原

mysqlbinlog [–no-defaults] --start-datetime=’年-月-日 小时:分钟:秒‘ --stop-datetime=’年-月-日 小时:分钟:秒‘ 二进制日志 | mysql -u用户名 -p密码。mysqlbinlog [–no-defaults] --stop-datetime=’年-月-日 小时:分钟:秒‘ 二进制日志 | mysql -u用户名 -p密码。mysqldump -u用户名 -p[密码] [选项] --databases 库名1 [库名2]……

2301_78602537的博客 3685

MySQL数据库自动备份、还原bat

MySQL数据库自动备份、还原bat的例子

shell mysql 备份_shell脚本实现mysql定时备份、删除、恢复功能

mysql备份脚本:脚本实现:按照数据库名称,全量备份mysql数据库并定期删除#!/bin/bash#全备方式,一般在从机上执行,适用于小中型mysql数据库#删除15天以前备份#作者:lcm_linux#时间:2019.08.06source ~/.bash_profile #加载用户环境变量set -o nounset #引用未初始化变量时退出set -o errexit #执行s...

weixin_39928480的博客 313

shell脚本实现mysql定时备份、删除、恢复功能

主要介绍了shell脚本实现mysql定时备份、删除、恢复功能,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

Flotherm XT新手必看:5分钟搞定自然对流热仿真(附案例文件)

本文为Flotherm XT新手提供了自然对流热仿真的快速入门指南,通过详细的步骤解析和实用技巧,帮助用户在5分钟内完成从建模到后处理的全流程。重点介绍了环境设置、几何建模、材料属性、网格划分等关键环节,并附有案例文件供参考学习,助力工程师快速掌握热仿真技术。

weixin_30839881的博客 630

通过shell脚本实现MySQL备份并恢复,for in流程控制

从3306备份数据库,还原到3307数据库上,通过shell脚本的for in流程控制实现 #!/bin/bash my_date=`date +%Y%m%d` my_time=`date +%H%M` my_date_yesterday=`date +%Y%m%d --date='1 days ago'` echo "------------------...

abs9668的博客 254

ARM学习 | 紧耦合存储器 (TCM)

TCM 是一种专用的片上存储器,直接与处理器核心耦合。确定性访问:由于不涉及缓存替换或一致性管理,访问延迟固定。高带宽:TCM 通常通过专用总线连接处理器核心,可以提供更高的数据吞吐率。用户管理:TCM 的分配和管理完全由开发者控制,不依赖硬件缓存策略。ARM 处理器中的 TCM 通常分为ITCM(指令紧耦合存储器)和DTCM(数据紧耦合存储器),分别用于存储指令和数据。TCM 是 ARM 处理器中不可忽视的重要特性,在实时系统和高性能嵌入式应用中具有重要地位。

qq_43167806的博客 3329

mysql定时备份脚本_CentOS MySQL自动备份shell脚本

在数据库的日常维护工作中,除了保证业务的正常运行以外,就是要对数据库进行备份,以免造成数据库的丢失,从而给企业带来重大经济损失。通常备份可以按照备份时数据库状态分为热备和冷备,按照备份数据库文件的大小分为增量备份、差异备份和全量备份。这里,我们讲解一种全量备份的方法,来实现定时备份数据到mysql脚本文件,并且支持过期删除。1、新建shell脚本vi /opt/mysqlBackup.sh#!/b...

weixin_29550949的博客 192

【实战】ESP32 + LN298N 实现电动推杆的闭环位置伺服控制

本文详细介绍了如何使用ESP32微控制器和LN298N电机驱动模块,为普通电动推杆增加编码器反馈,实现精准的闭环位置伺服控制。文章从硬件选型与接线讲起,深入解析了编码器四倍频计数原理与位置换算,并重点阐述了PID控制算法的核心思想、代码实现及参数整定方法,旨在帮助读者从零构建一个反应迅速、定位精准的智能执行器系统。

weixin_29195615的博客 319

Matlab+Matpower实战:手把手教你生成IEEE14节点FDIA攻击数据集(附完整代码)

本文提供了一份基于Matlab与Matpower工具构建IEEE14节点FDIA攻击数据集的完整实战指南。通过动态负荷数据模拟、潮流计算、状态估计及隐蔽攻击向量注入,手把手教你生成可用于电力系统网络安全研究的仿真数据集,并附有核心代码与调试技巧。

bean的博客 399

CentOS MySQL自动备份shell脚本

在数据库的日常维护工作中,除了保证业务的正常运行以外,就是要对数据库进行备份,以免造成数据库的丢失,从而给企业带来重大经济损失。通常备份可以按照备份时数据库状态分为热备和冷备,按照备份数据库文件的大小分为增量备份、差异备份和全量备份。这里,我们讲解一种全量备份的方法,来实现定时备份数据到mysql脚本文件,并且支持过期删除。 1、新建shell脚本 vi /opt/mysqlBackup.sh...

weixin_30701521的博客 78

Java的API帮助文档

JDK帮助文档 SUN公司为JDK工具包提供了一整套文档资料,我们习惯上称之为JDK文档。 JDK文档中提供了Java中的各种技术的详细资料,以及JDK中提供的各种类的帮助说明。 JDk文档是Java语言的完整说明,大多数书籍中的类的介绍都要参照它来完成,它是编程者经常查阅的资料 如何理解API:就当做是一个“字典”,“使用手册”,API就相当于是一个电子的帮助文档,可以帮我们查看JDK提供的类的信息,平时查看的时候可结合百度一起看。 官网下载: 1、登录Oracle官网(Oracl.

人生得意须尽欢 2万+

MySQL自动备份shell脚本

在数据库的日常维护工作中,除了保证业务的正常运行以外,就是要对数据库进行备份,以免造成数据库的丢失,从而给企业带来重大经济损失。通常备份可以按照备份时数据库状态分为热备和冷备,按照备份数据库文件的大小分为增量备份、差异备份和全量备份.一种全量备份的方法,来实现定时备份数据到mysql脚本文件,并且支持过期删除。 1、新建shell脚本 vi /opt/mysqlBackup....

weixin_33827731的博客 330

海洋CMS admin_notify.php 远程代码执行漏洞复现(CVE-2024-30565)

海洋CMS admin_notify.php 接口处存在远程代码执行漏洞,经过身份验证的远程攻击者可利用该漏洞执行任意代码,写入后门文件,进而控制整个web服务器。

0xSec 2719

Sigrity System SI Parallel Bus Analysis模式进行DDR3仿真分析操作指导-单个颗粒

Default Strobe Offset:DQS默认偏移时间,自动填充为0.5ns,即DQS默认偏移1/2UI,DQS滞后于DQ 1/2UI,让建立保持时间均分。WLO:写平衡偏移的数值,DataL是0ps,DataU是500ps,是根据WLOSkew自动定义的,可以认为是WLOSkew取整,也可以根据需要手动调整数值。注意AddCmd的UI=T,这里的Data Rate仍然是DQ的速率,并不是地址线的速率,地址线的速率=1/UI=1/2ns=0.5Gbps。

weixin_54787054的博客 366

在Centos7中利用Shell脚本:实现MySQL的数据备份

备份是容灾的基础,是指为防止系统出现操作失误或系统故障导致数据丢失,而将全部或部分数据集合从应用主机的硬盘或阵列复制到其它的存储介质的过程。而对于一些网站、系统来说,数据库就是一切,所以做好数据库的备份是至关重要的

lz17267861157的博客 3371

B站自动答题协议分析

使用Python写了一个自动答题机器人!基于接口协议实现且包含点选验证码识别

吴秋霖的博客 2656

MySQL--基于Xtrabackup+Shell+Crond实现的数据库(全量+增量)热备份方案

学习背景 不管你是正在上学,还是已经工作了,想必多多少少都听说过删库跑路、rm -rf的情况,主要指的就是被有意或无意的删除掉了数据库的数据,而数据是整个业务最重要的价值体现,如果你的公司或者项目组没有一个成熟的数据库数据备份方案,一旦发生意外,我只能说年轻人,大意了吧,没有备份数据库!!! 一、Xtrabackup介绍 官方介绍文档 简单总结下来就是XtraBackup是Percona旗下的一款产品,支持MySQL数据库的热备份(在线不停机),并且是免费、开源,适用所有MySQL版本,非阻塞、紧密

JustinQin 3万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

【 MySQL定时备份(全量备份+增量备份)】

产品上线后,数据非常非常重要,万一哪天数据被误删,那么就gg了,准备跑路吧。所以要对线上的数据库定时做。增量备份的优点是没有重复数据,备份量不大,时间短。但缺点也很明显,需要建立在上次完全备份及完全备份之后所有的增量才能恢复。MySQL没有提供直接的增量备份方法,但是可以通过mysql二进制日志间接实现增量备份。

Jordan_Kobe的博客 3736

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

MySQL脚本自动备份和恢复

1. MySQL有一个默认的最大数据包大小限制,当备份文件超过这个限制时,备份操作会失败,所以我们可以在备份前,对数据库进行压缩处理,以减少备份文件的大小。echo "备份文件 $BACKUP_FILE 大小超过了 $MAX_SIZE MB,正在进行压缩..."read -p "请输入要恢复的备份文件名(包括日期和扩展名):" BACKUP_FILENAME。read -p "请输入恢复的数据库名称:" MYSQL_DATABASE。read -p "请输入要备份的数据库的目录:" BACKUP_DIR。

2402_86248291的博客 1292

MySQL、Oracle、PostgreSQL 数据库备份用的 Shell 脚本

首先,输出一些提示信息,然后获取当前时间,并设置日志文件路径、备份日期时间、保留文件的日期时间、本地备份路径、远端备份路径、Oracle 数据库服务器本机 IP、远端备份 IP、用户名、密码、告警邮箱变量。该脚本主要是用于在Linux系统上备份MySQL数据库,自定义数据库用户名、密码、IP 地址、远程备份服务器 IP、本地备份路径、远程备份路径、当前时间、7 天前的日期变量。然后,使用 exp 命令进行Oracle数据库的全量备份,并将备份文件保存在指定的本地备份目录路径中。

紫水木鱼的博客 1561

太强了!MySQL、Oracle、PostgreSQL 数据库备份拿来就用的 Shell 脚本!

不止备份脚本,还有恢复步骤。

JackTian 2402

MySQL备份脚本

CentOS MySQL自动备份shell脚本 在数据库的日常维护工作中,除了保证业务的正常运行以外,就是要对数据库进行备份,以免造成数据库的丢失,从而给企业带来重大经济损失。 通常备份可以按照备份时数据库状态分为热备和冷备,按照备份数据库文件的大小分为增量备份、差异备份和全量备份。 这里,我们讲解一种全量备份的方法,来实现定时备份数据到mysql脚本文件,并且支持过期删除。 1、新建shel...

tangshiweibbs的专栏 2211

MySQL数据库备份&还原-shell脚本

手动备份使用mysqldump: 备份一个数据库 mysqldump -hhostname -uusername -pmypwd databasename > /path to backup/bakname.sql 备份并压缩 mysqldump -hhostname -uusername -pmypwd databasename | gzip > /path to bac...

haoxiaoyong1014的博客 4251

MySQL【实践 01】Linux 环境 MySQL 数据库备份 shell 脚本(脚本源码及说明+定时任务配置+数据库恢复测试)粘贴可以_shell 脚本实现mysql备份实验报告

bin/bash。

2501_90401405的博客 756
上一篇: shell中read使用后控制台不能删除内容
下一篇: shell脚本---实现tomcat部署包自动打包并下载到本地
lcm_linux
博客等级 码龄7年 7258粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值