Mysql全量备份数据库-windows系统

使用mysqldump进行数据库备份

mysql数据库自带备份命令mysqldump,可对数据库进行备份操作

最简单的备份是将数据库备份至本地,生成 **.sql文件

 

编写备份脚本文件
(创建一个txt文件,写入批处理脚本,再将文件的后缀改为.bat变为批处理脚本文件)

双击bat文件即可测试运行

 1 rem Auther By Lilin
 2 rem date:20211119
 3 rem ******Backup MySQL Start******
 4 @echo off
 5 ::设置时间变量
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
echo %dt:~0,14%
set Ymd=%dt:~0,14% 7 8 ::创建存储的文件夹 9 if not exist "C:\mysql_backup" md "C:\mysql_backup" 10 11 ::执行备份操作 12 "C:\Program Files\mysql-8.0.25-winx64\bin\mysqldump" --opt --user=root --password=123456 --host=127.0.0.1 --protocol=tcp --port=3306 --default-character-set=utf8 --single-transaction=TRUE --routines --events "demo" >C:\mysql_backup\backup_%Ymd%.sql 13 14 ::删除90天前的备份数据 15 forfiles /p "C:\mysql_backup" /m backup_*.sql -d -90 /c "cmd /c del /f @path" 16 17 @echo on 18 rem ******Backup MySQL End*****

 

 

其中一些关键语句解释:

  1.为备份文件存储位置设立一个文件夹,即如果不存在该文件就md创建该文件夹

1 ::创建存储的文件夹
2 if not exist "D:\mysql_backup" md "D:\mysql_backup"

 


  2.备份操作:
  “C:\Program Files\mysql-8.0.25-winx64\bin\mysqldump” :执行本地mysql文件安装路径的bin文件夹中的mysqldump
  –single-transaction=TRUE: 备份时没有锁表
  –user=root :mysql帐号
  –password=123456 :mysql密码
  –host=127.0.0.1 :mysql的ip地址
  –port=3306 :mysql的端口号
  –default-character-set=utf8 :备份默认编码
  events “demo” :进行备份的数据库名称
  >C:\mysql_backup\backup_%Ymd%.sql :备份文件存储的路径
  set “Ymd=%date:0,4%%date:5,2%%date:~8,2%” :设置备份的日期参数,以供给sql命名使用
  关于时间参数的参考:
  %date:~0,10% //提取年月日信息
  %date:~-3% //提取星期几信息
  %time:~0,5% //提取时间中的时和分
  %time:~0,-3% //提取时和分和秒信息
  *注意由于脚本文件以空格和逗号进行分隔执行,所以有关路径的如果路径中有空格,必须以双引号引起来
  *通常建议有关路径的都用双引号引起来

1 ::执行备份操作
2 "C:\Program Files\mysql-8.0.25-winx64\bin\mysqldump" --opt --user=root --password=123456 --host=127.0.0.1 --protocol=tcp --port=3306 --default-character-set=utf8 --single-transaction=TRUE --routines --events "normalstudy" >C:\mysql_backup\backup_%Ymd%.sql
3  

 


  3.对备份文件进行过期删除处理
  Forfiles:从文件夹或树中选择要进行批处理的文件。
  语法:
  forfiles [/p Path ] [/m SearchMask ] [/s ] [/c Command ] [/d [{+ | - }] [{MM / DD / YYYY | DD }]]
  参数:
  /p Path:指定Path ,表明要从哪里开始搜索。默认的文件夹是当前工作目录,该目录通过键入句号(.) 指定。
  /m SearchMask:按照SearchMask 搜索文件。默认的SearchMask 是*.* 。
  /m backup_*.sql 指的是搜索以backup_为前缀,.sql为后缀的文件
  /s:指示forfiles 在子目录中搜索。
  /c Command:在每个文件上运行指定的Command 。带有空格的命令字符串必须用引号括起来。默认的Command 是"cmd /c echo @file" 。
  /d [{+ | - }] [{MM / DD / YYYY | DD }]:选择日期大于或等于(+ )(或者小于或等于(- ))指定日期的文件,其中MM / DD / YYYY 是指定的日期,DD 是当前日期减去DD 天。如果未指定+ 或- ,则使用+ 。DD 的有效范围是0 - 32768。
  -d -14:即前14天
  ::删除两周前的备份数据
  forfiles /p "D:\mysql_backup" /m backup_*.sql -d -14 /c "cmd /c del /f @path"

 

本地对远程服务器mysql数据库进行备份

 

我们常常会需要对数据进行备份,防止数据被篡改,或者数据库崩溃。

这里我们先一条命令搞定:

   1 E:\MySQL\"MySQL Server 8.0"\bin\mysqldump -h127.0.0.1 -u root -p123456 --databases webpro > backup_webpro.sql 

解释一下,想要本地备份数据库必须要你本地安装mysql使用mysqldump应用去进行备份,因此E:\MySQL\"MySQL Server 8.0"\bin\mysqldump指向的是我自己本地电脑上面的mysqldump,各位看官需要改成自己电脑的mysql安装路径(注意,如果某级目录中间有空格需要用引号括起来)

接下来就好理解了-h表示主机ip,大家替换成自己的远程数据库主机ip/域名就行,-u是数据库登录名,-p是登录密码,--database表示要备份的数据库,>后面的表示存储位置(笔者这里表示跟脚本同级目录下)。

 

编写完bat文件后,新建一个windows定时任务执行此脚本。

 

posted @ 2021-11-19 11:09  joel1889  阅读(32)  评论(0)    收藏  举报