通过windows批处理程序定时备份mysql数据库文件并压缩为7z

先放一个批处理的dos命令入门教程,没有dos命令基础的可以先看一看,否则下面的脚本直接看懵逼:传送门

开始正文,最近客户有个需求就是每个月都要将mysql数据库的数据备份一份出来,由他们交给当地gong安部门处理。正好公司有一台阿里云的windows server 2012R2服务器的资源比较空闲,就打算利用windows的BAT批处理脚本来完成这个任务。

这里将程序分解为以下几个步骤:

  • 从数据库读取需要备份数据的客户id到服务器的txt文件,取名为tenant.txt(项目是一个多租户ERP系统,主要面向公用事业,一个企业客户有一个客户id)
  • 从数据库读取需要备份数据的表到服务器的txt文件,取名为table_name.txt(里面包含了需要备份的表的名称)
  • 读取tenant.txt,循环处理每一个客户id,每一个客户id都需要备份table_name.txt中所有表的数据
  • 数据备份完成后,调用7z.exe压缩数据文件,压缩完成后删除源数据文件

下面直接上bat脚本代码:

1.先调用备份脚本backup.bat('::'两个冒号表示注释)
@echo off
:: 进入mysql的bin目录
cd ..\mysql-5.7.28-winx64\bin
:: windows server的日期格式包含斜杠和中文,这里做一下处理
set temp=%date:~0,10%
set day=%temp:/=-%
:: 通用的路径
set "prefix=G:\backup\"
:: 日志路径
set "logpath=%prefix%log\%day%baklog.log"
:: 抽取一下mysql命令的共用内容
set "uap=-uroot -p123456 -hlocalhost -P3306"
:: 导出需要备份的客户id信息
echo %time%-导出需要备份的客户id信息 >> %logpath%
mysql %uap% -e "select kid from xxx " database_name > %prefix%tenant.txt
:: 导出需要备份的表信息
echo %time%-导出需要备份的表信息 >> %logpath%
mysql %uap% -e "SELECT  table_name FROM columns WHERE column_name='kid' and table_Schema = 'xxxx' " information_schema >%prefix%table_name.txt
:: 读取客户id文件,做循环处理
echo %time%-开始读取客户id >> %logpath%
for /f "skip=1" %%i in (%prefix%tenant.txt) do (
  :: 在临时目录下创建以该客户id命名的文件夹
  md %prefix%tmp\%%i
  echo =====%time%-租户%%i开始转储 >> %logpath%
  :: 读取需要转储的表信息
  for /f "skip=1" %%j in (%prefix%table_name.txt) do (
    echo %time%-%%j开始转储 >> %logpath%
   :: 通过mysqldump命令备份数据库数据文件到临时目录下的客户id文件夹中
    mysqldump %uap% --skip-opt --set-gtid-purged=OFF database_name %%j --where=" kid='%%i'" > %prefix%tmp\%%i\%%j.sql
  )
  echo =====%time%-租户%%i结束转储 >> %logpath%
 :: 通过start命令调用压缩脚本并传递参数。start命令会另起一个进程,因此当前脚本不会被阻塞
  start %prefix%compresse.bat %%i
)
2.被调用的压缩脚本compresse.bat
@echo off
:: windows server的日期格式包含斜杠和中文,这里做一下处理
set temp=%date:~0,10%
set day=%temp:/=-%
:: 通用路径
set prefix=G:\backup\
:: 日志路径
set "logpath=%prefix%log\%day%baklog.log"
:: 设置7z.exe路径
set "zip=C:\Program Files\7-Zip\7z.exe"
:: 这是上面备份脚本里传过来的参数
set des=%1
::设置源文件夹所在目录
set SourDir=%prefix%tmp\%des%
echo %time%-开始压缩客户%des%数据 >> %logpath%
"%zip%" a -mx7 "%prefix%data\%des%(%day%).7z" "%SourDir%"
:: 压缩完成后删除源文件夹
rd  /s /q %prefix%tmp\%des%
echo %time%-完成压缩客户%des%数据 >> %logpath%

通过以上两个脚本就能完成批处理程序备份mysql数据库文件并压缩为7z的任务了~

至于如何定时执行上述bat脚本,则可以通过window的定时任务来解决,网上文章一大把,随便一篇就能搞定了。

还有几个注意点:

  • window server记得安装一个mysql,我的windows server 2012R2无法启动mysql,报错少了msvcp120.dll文件,解决办法网上一搜就有
  • 记得配置一下mysql的环境变量,否则定时任务调用bat脚本的时候,mysql命令会执行失败
  • mysqldump命令的参数建议根据个人需要做一下调整,我这里的命令是直接跳过各种参数设置的

以上就是全部内容了,本人也是bat脚本新手,此文仅仅是记录并分享一下自己搞定任务的过程,如有不妥之处,还请指出~

转载请注明出处.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,045评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,114评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,120评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,902评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,828评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,132评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,590评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,258评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,408评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,335评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,385评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,068评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,660评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,747评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,967评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,406评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,970评论 2 341