前言:

数据库备份的重要性不言而喻,特别是在生产环境,任何数据的丢失都可能产生严重的后果。所以,无论什么环境,我们都应该有相应的备份策略来定时备份数据库。在 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:    Used for database backup
# 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_backupdt=date +'%Y%m%d_%H%M'
echo "Backup Begin Date:" $(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.sqlfind $backup_dir -mtime +7 -type f -name '*.sql' -exec rm -rf {} ;
echo "Backup Succeed Date:" $(date +"%Y-%m-%d %H:%M:%S")

以上脚本可根据实际情况修改,比如备份某一个库、保留时间变更等等。脚本写完后要注意调试,调试完成后就可以部署了,比如我们打算每天凌晨2点进行备份,则可以这样设置定时任务。

# 注意脚本执行权限及修改脚本路径
00 02 * * * sh /root/scripts/mysql_backup.sh > /root/scripts/mysql_backup.log 2>&1

3.Windows系统备份脚本

Windows 系统备份脚本也是类似的,只不过变成了bat脚本,需要设置计划任务来定时执行。比如我们可以在E盘下创建一个 MySQLdata_Bak 目录,此目录下创建 mysql_backup 目录存放备份文件,mysql_bak.bat 是备份脚本,脚本内容如下(自动删除7天前的备份文件):

rem auther:wang
rem date:20200811
rem ******MySQL backup start********
@echo offforfiles /p "E:MySQLdata_Bakmysql_backup" /m backup_*.sql -d -7 /c "cmd /c del /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.23binmysqldump" -uroot -p123456 -P3306 --default-character-set=utf8 -R -E --single-transaction  --all-databases > "E:MySQLdata_Bakmysql_backupbackup_%Ymd%.sql"
@echo on
rem ******MySQL backup end********

以上脚本仅供参考,可以根据自己的环境稍加改动。同样的,脚本调试完成后就可以加入计划任务了,如果你对 Windows 计划任务还不了解,可以百度下,也是比较方便简单的。

4.备份可用性校验

除了备份,非常重要的一件事情就是验证备份数据的可用性。想象一下,当你需要进行数据恢复的时候,忽然发现过去的备份数据都是无效的,那得有多难受。很多朋友在写好备份脚本加到定时任务后,只是检查下定时任务有执行,备份目录有文件就不再关注了,往往到了需要使用备份文件的时候才发现备份数据有问题。

目前对于备份文件的数据校验没有非常方便的办法,用的比较多的还是定时把备份文件拉出来做备份恢复演练,例如一个月做一次备份恢复演练就可以有效提高备份文件可用性,心里也踏实。

所以,千万不要以为有了备份就万无一失了,平时也要多检查备份脚本执行是否正确,生产的备份脚本内容是否可用,最好可以定期做恢复演练。

总结:

本篇文章主要分享了 Linux 系统及 Windows 系统下的 MySQL 定时备份脚本,脚本内容比较简单明了,功能并不复杂,如果你有其他备份需求,可以在此基础上修改完善。如果这篇文章对你有所帮助的话,请多多分享转发。

http://weixin.qq.com/r/pTn17UfEJRparQOO92y3 (二维码自动识别)

bat脚本保存dir结果_MySQL备份脚本,应该这么写相关推荐

  1. bat脚本保存dir结果_Tomcat的启停脚本源码解析

    作者 | 程序员自由之路 来源 | cnblogs.com/54chensongxia/p/13234398.html Tomcat的启停脚本源码解析 Tomcat是一款我们平时开发过程中最常用到的S ...

  2. php mysql备份脚本_MySQL备份脚本,mysql脚本

    MySQL备份脚本,mysql脚本 mysqlbackup.php: php//备份mysql set_time_limit(0); date_default_timezone_set('PRC'); ...

  3. mysql脚本下载_Mysql备份脚本

    Mysql备份脚本 时间:2005/10/20 13:29:56 作者:无从考证 人气:337 操作系统:windows2000 professional 数据库:mysql server4.0.18 ...

  4. mysql用sql语句怎么做个脚本备份_mysql备份脚本

    一.介绍两种日志 1.redo log是InnoDB存储引擎层的日志,又称重做日志文件,用于记录事务操作的变化,记录的是数据修改之后的值,不管事务是否提交都会记录下来.在实例和介质失败(media f ...

  5. shell mysql备份脚本_mysql备份脚本(shell)

    mysql数据库shell备份脚本 任何项目的运行都离不开数据,持久化数据对于一个企业尤为重要,任何时候都不可掉以轻心,下面是我自己写的一个shell脚本,用来备份数据,分享给大家. #!/bin/b ...

  6. linux下的rman自动备份脚本,LINUX上RMAN自动备份脚本

    1. 建备份目录 oradataback,2级目录archback(放归档日志).rmanscripts(备份脚本), 在rmanscripts下面建  rmanlevel0.sh  rmanleve ...

  7. oracle增量备份0级,oracle_linux自动运行rman增量备份脚本,一、增量备份脚本0级备份脚本...

    一.增量备份脚本 0级备份脚本:红色部分为自定义的备份文件放置的目录 #script.:BackupFull.sh #creater:xyh #date:2014-03-08 #desc:backup ...

  8. mysql创建备份表脚本_MySQL 备份脚本(单库/分库分表)

    MySQL数据库分库备份 数据库密码保存在/etc/my.cnf文件中,所以在执行与mysql相关的命令不需要输入密码 分库备份思路: mysqldump db1 >db1.sql.gz mys ...

  9. mysql自动备份脚本linux_一个Mysql自动备份脚本,定时备份MYSQ脚本,linux下Mysql自动备份脚本...

    本文转自:http://hi.baidu.com/visual_art/item/6713e2091b41ea33a2332a15 #!/bin/bash #This is a ShellScript ...

最新文章

  1. Java基础Switch和循环控制
  2. 浅析枚举类型(Enumerated types)
  3. R语言acres92 region_《R语言实战》读书笔记-- 第六章 基本图形
  4. HDU 1573: X问题
  5. ACE入门---很好的文章
  6. Android 热修复之DexPatch 介绍
  7. 推送通知(二)远程通知
  8. javafx css_JavaFX缺少的功能调查:CSS
  9. 为什么考研的都不是班里最优秀的?
  10. asp.net:验证控件中ValidationExpression的写法
  11. grpc(3):使用 golang 开发 grpc 服务端和client
  12. 【agc006f】Blackout(神仙题)
  13. C/C++[codeup 1933,1993]图形输出
  14. 如何防止输入同样的编号到数据库中(30分)
  15. 如何在Mac OS上从Photoshop 2020作为插件访问Topaz DeNoise AI?
  16. 最全的PS快捷键大全!
  17. 在python中安装包出现Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None))
  18. Finclip小程序宿主环境与微信小程序宿主环境
  19. 服务器搭建是基于操作系统的,服务器搭建是基于操作系统的
  20. java自定义窗口,java 自定义窗口

热门文章

  1. 【专访】首届腾讯社交广告“高校算法大赛”落幕 冠亚季军团队参赛心得精彩分享
  2. KDD2021|小红书在推荐多样化的实践——SSD
  3. 阿里系 java_阿里系六大开源项目,你知道几个?
  4. 建站+流量+运营,跨境电商的2021
  5. 电导增量法matlab,基于变步长电导增量法MPPT研究.doc
  6. java界面ATM机取款后的余额_java_ATM机银行存取款系统的设计与实现本科毕业论文...
  7. BSN: Boundary-Sensitive Network for Temporal Action Proposal Generation
  8. 西瓜书+实战+吴恩达机器学习(九)监督学习之k近邻 K-Nearest Neighbor
  9. python接口自动化(十)--post请求四种传送正文方式(详解)
  10. mysql数据库不小心删除文件_mysql数据库被删除了,怎么恢復吗