MySQL数据库备份脚本

MySQL数据库备份脚本概述远程或者本地备份mysql数据库,并且保存最新7天的备份内容。#!/bin/sh#definevariables#thelogininformationofyourmysqldb.login_user=""login_passwd="&a

大家好,又见面了,我是你们的朋友全栈君。

概述

每天定时远程或者本地备份mysql数据库,并且保存最新7天的备份内容。

脚本内容

[root@myhost ~]# cat  /home/script/mysqlbackup.sh
#!/bin/sh 
source /etc/profile
#define variables
#the login information of your mysql db.
login_user=""
login_passwd=""       #数据库密码最好不要含有$符号,因为避免被当成变量,这是个大坑,被坑惨了
db_host=""   
db_port=""
#the real databases which you want to backup.
db_array=("db_name0" "db_name1" "db_name2")
#the dir for saving your backup file.
backup_dir="/home/backup/mysql_bak/$db_host-backup"
if [ ! -d  $backup_dir ];then
	mkdir -p $backup_dir
fi 
#date format for the backup file (yyyy-mm-dd) 
time=`date +"%Y-%m-%d"`
#the mysql,mysqldump and other bin's path
MYSQL_COMMDAND=""   			#根据自己的数据库安装路径决定
MYSQLDUMP_COMMAND=""			#根据自己的数据库安装路径决定
MKDIR_COMMAND="/bin/mkdir"
RM_COMMAND="/bin/rm"
MV_COMMAND="/bin/mv"
GZIP_COMMAND="/bin/gzip"

# check the dir for saving backup file is writeable or not.
if [ ! -w  $backup_dir ];then

	echo "Error: $backup_dir is un-writeable." && exit 0 

fi

#check if the dir for saving the backup file exists or not.
if [ ! -d  ${backup_dir}/backup.0 ];then

	$MKDIR_COMMAND  -p "$backup_dir/backup.0"

fi

#starting to backup.

for db_name in ${db_array[*]}
do
	$MYSQLDUMP_COMMAND -P$db_port -u$login_user -h$db_host  --set-gtid-purged=off -p$login_passwd -B  $db_name | $GZIP_COMMAND -9 > "$backup_dir/backup.0/$time.$db_name.gz" 
done

# delete the oldest backup 
if [ -d "$backup_dir/backup.7" ];then

	$RM_COMMAND -rf "$backup_dir/backup.7" 

fi


# rotate backup directory 

#for int in 6 5 4 3 2 1 0 
for int in {6..0}
do 
	if [ -d "$backup_dir"/backup."$int" ];then
		next_int=`expr  $int  + 1` 
		$MV_COMMAND "$backup_dir"/backup."$int" "$backup_dir"/backup."$next_int" 
	fi
done 
	
exit 0; 

定时任务

数据库备份的定时任务尽量避开数据库访问的高峰期,可以选择在半夜执行。

[root@myhost ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed
30 3  *  *  * root /home/script/mysqlbackup.sh

数据库恢复

[root@myhost ~]#  cd $backup_dir  && ll
##假设备份文件名为:2019-09-29.dbname.gz
[root@myhost ~]#  gzip -d 2019-09-29.dbname.gz && ll    #解压备份文件之后文件名: 2019-09-29.dbname
[root@myhost ~]#  cat  2019-09-29.dbname > 2019-09-29_dbname.sql 或者 mv  2019-09-29.dbname  2019-09-29_dbname.sql 
[root@myhost ~]# mysql -uroot -proot123456 -B  dbname <   2019-09-29_dbname.sql   #恢复数据库
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/130902.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月13日 上午9:46
下一篇 2022年6月13日 上午9:46


相关推荐

  • 三极管典型开关电路

    三极管典型开关电路1.基极必须串接电阻,保护基极,保护CPU的IO口。2.基极根据PNP或者NPN管子加上拉电阻或者下拉电阻。3.集电极电阻阻值根据驱动电流实际情况调整。同样基极电阻也可以根据实际情况调整。4.基极和发射极需要并联电阻,该电阻的作用是在输入呈高阻态时使晶体管可靠截止,极小值是在前级驱动使晶体管饱和时与基极限流电阻分压后能够满足晶体管的临界饱和,实际选择时会大大高于这个极小值,

    2025年11月27日
    3
  • 【强化学习】GAIL生成对抗模仿学习详解《Generative adversarial imitation learning》

    【强化学习】GAIL生成对抗模仿学习详解《Generative adversarial imitation learning》通过深度强化学习,我们能够让机器人针对一个任务实现从0到1的学习,但是需要我们定义出reward函数,在很多复杂任务,例如无人驾驶中,很难根据状态特征来建立一个科学合理的reward。人类学习新东西有一个重要的方法就是模仿学习,通过观察别人的动作来模仿学习,不需要知道任务的reward函数。模仿学习就是希望机器能够通过观察模仿专家的行为来进行学习。OpenAI,DeepMind,Google…

    2026年1月24日
    8
  • Wannacry(永恒之蓝)病毒「建议收藏」

    Wannacry(永恒之蓝)病毒「建议收藏」一、Wannacry(永恒之蓝)病毒2017.04-051)一种“蠕虫式”的勒索病毒软件,大小3.3MB,勒索病毒肆虐。2)由不法分子利用NSA(美国国家安全局)泄露的危险漏洞“EternalBlue”(永恒之蓝)进行传播。3)中国部分Windows操作系统用户遭受感染,校园网用户首当其冲,受害严重,大量实验室数据和毕业设计被锁定加密。部分大型企业的应用系统和数据库文件被加密后,无法正常工作,影响巨大。4)文件被加密,要求支付高比特币。5)比特币:比特币是一种P2P形式的虚拟的加密数字货币

    2022年10月17日
    5
  • Activity工作流引擎学习笔记(二)

    Activity工作流引擎学习笔记(二)核心APIProcessEngine说明:1) 在Activiti中最核心的类,其他的类都是由他而来。2) 产生方式:在前面看到了两种创建ProcessEngine(流程引擎)的方式,而这里要简化很多,调用ProcessEngines的getDefaultProceeEngine方法时会自动加载classpath下名为activiti.cfg.xml文件。3) 可以产生R

    2022年7月11日
    24
  • VoIP 技术究竟是什么?

    VoIP 技术究竟是什么?自从 1995 年首次面世用来 VoIP 已经成为世界上使用最广泛的电话产品 目前 VoIP 用户大约是 5 百万 业界观察家表示 未来两年 这一数字将增长 5 倍 将打电话通过互联网传输的 VoIP 技术也是目前世界上最经济的电话技术之一 尽管存在一些严重的局限性 许多 VoIP 服务一个月的费用才只有 20 美元 要搞清 VoIP 究竟是什么 你得明白以下问题 VoIP 是什么 VoIP

    2026年3月17日
    1
  • 闲话IS-IS路由协议之一:认证实现问题

    闲话IS-IS路由协议之一:认证实现问题

    2021年8月19日
    57

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号