我用几行代码实现了mysql数据库的自动备份,老板说小伙子不错!

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 我用几行代码实现了mysql数据库的自动备份,老板说小伙子不错!

大家好,我是Spring小杨,一个有梦想的Java司机。

1.事件起因

就是之前服务器上用的是mysql数据库,因为小公司嘛,也没有专门的运维。我们几个苦逼的开发都是即当业务,又干开发,还要做测试和运维,别提多悲催了。

30.png

因为出过生产事故,后来兼顾运维的同事只好每天手动去备份。

备份很简单,就是用navicat

31.png

这个玩意,相信大家都用过吧,里面有一个导出数据库的功能,会导出一个xxx.sql。


然后,我们会在电脑上弄一个文件夹,改一下sql的文件名,比如backup20211011.sql。


问题是,每天都手动去备份一下,是真的很麻烦啊。


后来,我灵机一动,说我给你写个脚本吧,你放到服务器上,以后就不用天天手动去备份了。

32.jpg

2.BAT脚本备份mysql

废话不多说,直接上脚本:

echo off     
for /f "tokens=2 delims==" %%a in ('wmic path win32_operatingsystem get LocalDateTime /value') do (   
set t=%%a   
)
set ip=127.0.0.1
set user=root
set password=123
set Today=%t:~0,4%-%t:~4,2%-%t:~6,2% 
echo,%Today%         
echo.
"E:\mysql-5.5.31-win32\bin\mysqldump.exe" -h%ip% -u%user% -p%password% --default-character-set=utf8 --opt --extended-insert=false  --triggers -R --hex-blob  -x edu>d:\db_backup\YourDataBaseName.sql  
echo.
echo,生成目录d:\db_backup\%Today%
md d:\db_backup\%Today%
move d:\db_backup\YourDataBaseName.sql d:\db_backup\%Today%
echo,备份完毕

就是用cmd命令实现了mysql的备份,这样子。

小杨在这边给大家稍微解释一下关键的命令。

set ip=127.0.0.1
set user=root
set password=123
set Today=%t:~0,4%-%t:~4,2%-%t:~6,2% 

这几行是设置IP,用户名和密码。Today就是今天的日期,用来生成文件夹的。

"E:\mysql-5.5.31-win32\bin\mysqldump.exe" 
-h%ip% -u%user% -p%password% 
--default-character-set=utf8 
--opt 
--extended-insert=false  
--triggers -R --hex-blob  
-x YourDataBaseName>d:\db_backup\YourDataBaseName.sql  

再看这几行,其中 E:\mysql-5.5.31-win32\bin\mysqldump.exe 是我们电脑mysqldump执行文件的绝对路径,就在你安装mysql的目录里面。 然后就是你数据库的名字:YourDataBaseName。


生成该数据库的脚本文件后,会保存到 d:\db_backup 目录里面。

md d:\db_backup\%Today%
move d:\db_backup\YourDataBaseName.sql d:\db_backup\%Today%

最后,就是生成日期文件夹,比如20211011,然后用move命令把刚才生成的脚本文件移动到这个文件夹中,就大功告成啦!


3. 写Java定时任务部署到服务器

最后一步,就是写一个Java定时任务,定时去调这个bat脚本,就完事了。

我用的是Hutool定时任务工具。


34.png


核心代码我也贴出来给大家:

public void mysqlBackup(){
    System.out.println("mysql备份 开始...");
    RuntimeUtil.exec("cmd.exe /c start  C:/mysql_backup.bat");
    try {
    Thread.sleep(5000);
  } catch (InterruptedException e) {
    e.printStackTrace();
  }
    RuntimeUtil.exec("taskkill /f /im cmd.exe");
}

哈哈,简单不?几行代码就搞定了!

这种方式我之前写过一篇教程,可以参考:

我用java写了个定时工具沾沾自喜,结果发现小丑竟是我自己!

总体来说还是相当简单的,但是作用却很大,终于不用每天手动去备份啦~~

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4月前
|
存储 关系型数据库 MySQL
mysql数据库备份与恢复
MySQL数据库的备份与恢复是确保数据安全性和业务连续性的关键操作。
152 4
|
3月前
|
存储 SQL 关系型数据库
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
152 6
|
10天前
|
SQL Java 数据库连接
JDBC编程安装———通过代码操控数据库
本文,教你从0开始学习JBCD,包括驱动包的下载安装调试设置,以及java是如何通过JBDC实现对数据库的操作,以及代码的分析,超级详细
|
2月前
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
138 3
|
2月前
|
监控 关系型数据库 MySQL
Linux环境下MySQL数据库自动定时备份策略
在Linux环境下,MySQL数据库的自动定时备份是确保数据安全和可靠性的重要措施。通过设置定时任务,我们可以每天自动执行数据库备份,从而减少人为错误和提高数据恢复的效率。本文将详细介绍如何在Linux下实现MySQL数据库的自动定时备份。
59 3
|
2月前
|
JSON JavaScript 关系型数据库
node.js连接GBase 8a 数据库 并进行查询代码示例
node.js连接GBase 8a 数据库 并进行查询代码示例
|
3月前
|
存储 定位技术 数据库
介绍一下数据库的备份和恢复策略
【10月更文挑战第21】介绍一下数据库的备份和恢复策略
|
2月前
|
数据库
【赵渝强老师】数据库的备份方式
备份数据库是指将数据库中的数据及相关信息保存起来,以便在系统故障时恢复。备份对象不仅限于数据本身,还包括数据库对象、用户权限等。根据备份策略、类型和模式的不同,可分为整体/部分备份、完全/增量备份、一致/非一致备份。文中还附有相关视频讲解。
|
3月前
|
SQL 关系型数据库 MySQL
创建SQL数据库的基本步骤与代码指南
在信息时代,数据管理显得尤为重要,其中数据库系统已成为信息技术架构的关键部分。而当我们谈论数据库系统时,SQL(结构化查询语言)无疑是其中最核心的工具之一。本文将详细介绍如何使用SQL创建数据库,包括编写相应的代码和必要的步骤。由于篇幅限制,本文可能无法达到您要求的2000字长度,但会尽量涵盖创建数
125 3
|
3月前
|
安全 关系型数据库 MySQL
MySQL用户备份
【10月更文挑战第2天】MySQL用户备份
74 3