当前位置: 首页 > news >正文

在Ubuntu/Linux中自动备份MySQL数据库

一、编写备份脚本

login_user="root"    #数据库登录账户
login_passwd=""        #数据库登录密码
vDate=`date +%Y%m%d`    #当前日期,用作目录名
backup_dir="/home/data/backups/"$vDate"/" #配置备份文件保存的目录
echo $backup_dir
if [ ! -d $backup_dir ];then
       mkdir -p $backup_dir
fi
# 将需要备份的数据放入
db_array=("dbName1" "dbName1" "dbName1") #配置要备份的数据库
for db_name in ${db_array[*]}
do
  mysqldump -u$login_user -p$login_passwd $db_name > $backup_dir$db_name.sql
done
# 删除7天前备份的文件
find backup_dir -atime +7 -name "*.sql" -exec rm -rf {} \
echo "备份结束"
# 如果遇到unexpected end of file,使用vim打开文件后,输入“:set ff”,如果看到结果为dos,则文件编码不正确
# 需要输入“:set ff=unix”进行修复

脚本中带有注释,可以自行进行修改或调整。

完成编写后,需要将该脚本保存为一个.sh后缀的文件。

二、确认自己的Ubuntu/Linux使用bash脚本

运行以下命令:

ls -al /bin/sh

如果显示结果中出现“bash”,则可以跳过本小节:

 

但如果显示的是"dash",则需要继续以下步骤。

输入下列命令:

sudo dpkg-reconfigure dash

 操作系统会弹出一个对话框,询问是否要使用“dash”作为默认的执行脚本,此处需要选择“No” :

完成之后,再次使用下列命令检查脚本的类型:

ls -al /bin/sh

三、使用crontab定时执行

3.1安装crontab

crontab是Ubuntu/Linux中一个常用的定时执行程序。大多数情况下在Ubuntu中都会预装crontab。

如果没有安装的话,可以使用以下命令进行安装:

apt-get install cron

如果你已经安装过该程序了,则系统会提示你没有任何更新:

3.2启动或停止crontab

可以使用下列命令来启动、停止或是查看cron的运行状态:

查看crontab是否运行:

sudo service cron status

启动crontab:

sudo service cron start

 停止crontab:

sudo service cron stop

重启crontab:

sudo service cron restart

3.3编辑执行规则

cron的执行规则是需要自行编辑的。输入以下命令:

crontab -e

系统会打开cron的配置文件,文件中有一大堆注释,如下:

注释中简单描述了cron的执行规则是怎么定义的。这个规则主要分为两个部分,第一部分是时间规则,第二部分是需要执行的程序或脚本。

注意cron自带注释中的以下内容:

# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/

 这段注释列举了一个简单的备份例子:在每周1的早晨5点备份指定的目录

例子中的规则如下:

0 5 * * 1 tar -zcf /var/backups/home.tgz /home/

前半部分由5个数字或符号构成,这5个数字和符号分别代表:

第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)

而星标符号“*”则表示任意时间或时段

在这5个数字或符号之后,就是我们需要执行的程序及其参数 。

在本例中,我们需要自动备份MySQL数据库,所以我们可以这样编辑规则:

0 1 * * *  /my_data_backup.sh >> /backup_log.log

在这条规则中,前半部分的“0 1 * * *”代表的是每天的凌晨1点执行。后半部分则是在第一步中所编写的自动备份脚本,而最后的“>>”表示我们需要将执行日志保存在哪个日志文件中。

所以cron规则文件整体看起来会像是这样:

完成之后保存退出即可。保存退出的方式与vim一致。

最后,重启cron程序即可。 

相关文章:

  • 基于windows WSL安装Docker Desktop,修改默认安装到C盘及默认下载镜像到C盘
  • Kubernetes Pod调度策略
  • 猿创征文 | JavaScript函数柯里化
  • Servlet的注册和生命周期
  • [Latex] \bibitem{} | .bbl 格式参考文献转换与获得
  • cmake和makefile区别和cmake指定编译器(cmake -G)
  • JavaWeb对于Listener的运用详解【利用Session统计在线人数】
  • Windows命令: net与sc的区别
  • 向量数据库是如何检索的?基于 Feder 的 HNSW 可视化实现
  • 架构师的 36 项修炼第11讲:致未来的架构师
  • 基于springboot+vue的商城系统(电商平台)
  • Linux CentOS 8(用户组的管理实验)
  • .net core开源商城系统源码,支持可视化布局小程序
  • ElasticSearch诞生
  • DRM系列(7)之drmModeAtomicCommit底层流程
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • angular学习第一篇-----环境搭建
  • Java小白进阶笔记(3)-初级面向对象
  • jquery cookie
  • LeetCode算法系列_0891_子序列宽度之和
  • Python - 闭包Closure
  • Rancher如何对接Ceph-RBD块存储
  • 反思总结然后整装待发
  • 分类模型——Logistics Regression
  • 说说动画卡顿的解决方案
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 小程序测试方案初探
  • 阿里云API、SDK和CLI应用实践方案
  • 关于Android全面屏虚拟导航栏的适配总结
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​LeetCode解法汇总518. 零钱兑换 II
  • ​如何在iOS手机上查看应用日志
  • # 安徽锐锋科技IDMS系统简介
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • %@ page import=%的用法
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (java)关于Thread的挂起和恢复
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案
  • .NET Core6.0 MVC+layui+SqlSugar 简单增删改查
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .net 生成二级域名
  • .NET 中 GetProcess 相关方法的性能
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .Net(C#)自定义WinForm控件之小结篇
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)
  • .Net下C#针对Excel开发控件汇总(ClosedXML,EPPlus,NPOI)
  • .net中生成excel后调整宽度
  • @property python知乎_Python3基础之:property
  • @RequestParam @RequestBody @PathVariable 等参数绑定注解详解