MySQL备份脚本的写法
前言:
数据库备份的重要性不言而喻,特别是在生产环境,任何数据的丢失都可能产生严重的后果。所以,无论什么环境,我们都应该有相应的备份策略来定时备份数据库。在MySQL中,比较常用的逻辑备份工具是mysqldump,本篇文章将介绍MySQL定时备份的方法。
1.制定合适的备份策略
对于不同的数据库环境,我们应该考虑不同的备份策略。制定备份策略时,应考虑以下几点因素:
- 物理备份还是逻辑备份。这个可以由数据库大小决定,比如说小于100G用逻辑备份,大于100G用物理备份。
- 备份文件保留时间。这个可以由磁盘大小决定,一般至少保留7天。
- 备份执行时间。一般放在业务低峰期,比如凌晨执行备份操作。
- 备份间隔时间。一般推荐一天一备,如果系统不太重要,备份间隔也可以延长。
- 是否有从库。有从库的话,推荐放在从库上备份,减小对主库的压力。
2.Linux系统备份脚本
Linux系统下,我们可以利用crontab定时任务来执行备份脚本,如果你你对crontab还不了解,可以参考以下介绍快速学习下。
crontab是一个命令,常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。
格式:
*****command
分时日月周命令
第1列表示分钟1~59每分钟用*或者*/1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
crontab-e编辑该用户下的定时任务设置
crontab-l列出该用户下的所有定时任务
下面我们来正式书写备份脚本,废话不多说,先给出脚本模板:
#!/bin/bash #------------------------------------------------------------------------------- #FileName:mysql_backup.sh #Describe:Usedfordatabasebackup #Revision:1.0 #Date:2020/08/11 #Author:wang #设置mysql的登录用户名和密码(根据实际情况填写) mysql_user="root" mysql_password="yourpassword" mysql_host="localhost" mysql_port="3306" backup_dir=/data/mysql_backup dt=date+'%Y%m%d_%H%M' echo"BackupBeginDate:"$(date+"%Y-%m-%d%H:%M:%S") #备份全部数据库 mysqldump-h$mysql_host-P$mysql_port-u$mysql_user-p$mysql_password-R-E--all-databases--single-transaction>$backup_dir/mysql_backup_$dt.sql find$backup_dir-mtime+7-typef-name'*.sql'-execrm-rf{}\; echo"BackupSucceedDate:"$(date+"%Y-%m-%d%H:%M:%S")
以上脚本可根据实际情况修改,比如备份某一个库、保留时间变更等等。脚本写完后要注意调试,调试完成后就可以部署了,比如我们打算每天凌晨2点进行备份,则可以这样设置定时任务。
#注意脚本执行权限及修改脚本路径 0002***sh/root/scripts/mysql_backup.sh>/root/scripts/mysql_backup.log2>&1
3.Windows系统备份脚本
Windows系统备份脚本也是类似的,只不过变成了bat脚本,需要设置计划任务来定时执行。比如我们可以在E盘下创建一个MySQLdata_Bak目录,此目录下创建mysql_backup目录存放备份文件,mysql_bak.bat是备份脚本,脚本内容如下(自动删除7天前的备份文件):
remauther:wang remdate:20200811 rem******MySQLbackupstart******** @echooff forfiles/p"E:\MySQLdata_Bak\mysql_backup"/mbackup_*.sql-d-7/c"cmd/cdel/f@path" set"Ymd=%date:~0,4%%date:~5,2%%date:~8,2%0%time:~1,1%%time:~3,2%%time:~6,2%" "E:\mysql5.7.23\bin\mysqldump"-uroot-p123456-P3306--default-character-set=utf8-R-E--single-transaction--all-databases>"E:\MySQLdata_Bak\mysql_backup\backup_%Ymd%.sql" @echoon rem******MySQLbackupend********
以上脚本仅供参考,可以根据自己的环境稍加改动。同样的,脚本调试完成后就可以加入计划任务了,如果你对Windows计划任务还不了解,可以百度下,也是比较方便简单的。
4.备份可用性校验
除了备份,非常重要的一件事情就是验证备份数据的可用性。想象一下,当你需要进行数据恢复的时候,忽然发现过去的备份数据都是无效的,那得有多难受。很多朋友在写好备份脚本加到定时任务后,只是检查下定时任务有执行,备份目录有文件就不再关注了,往往到了需要使用备份文件的时候才发现备份数据有问题。
目前对于备份文件的数据校验没有非常方便的办法,用的比较多的还是定时把备份文件拉出来做备份恢复演练,例如一个月做一次备份恢复演练就可以有效提高备份文件可用性,心里也踏实。
所以,千万不要以为有了备份就万无一失了,平时也要多检查备份脚本执行是否正确,生产的备份脚本内容是否可用,最好可以定期做恢复演练。
总结:
本篇文章主要分享了Linux系统及Windows系统下的MySQL定时备份脚本,脚本内容比较简单明了,功能并不复杂,如果你有其他备份需求,可以在此基础上修改完善。如果这篇文章对你有所帮助的话,请多多分享转发。
以上就是MySQL备份脚本的写法的详细内容,更多关于MySQL备份脚本的资料请关注毛票票其它相关文章!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。