如何定期备份 MySQL 及删除旧有档案-适用 Windows

MySQL 是免费的关联式资料库,具有轻量级速度快的优点,适合小型网站架设使用。
目前最流行的 WordPress 就是采用 MySQL 做为指定资料库。

如果还没安装 MySQL 的话,可参考我这篇教学文章: Windows Server 安装 MySQL Community 免费社群版

在上一篇我讲解了如何备份与还原 MySQL 资料库,我所教学的方法是手动备份的方式。

接下来这一篇将会讲解如何在 Windows 做到定期备份,并定期删除旧有备份档。
而我所使用的方式是命令提示字元(CMD),呼叫 MySQL 备份程序。
再使用工作排程器来定期执行批次指令。

编写命令列

在开始写命令列之前,我们先建立要存放备份的目录。例如放在 C:\mysql_backup。
然後在建立一个批次档案,副档名为 .bat。例如放在 C:\mysql_backup.bat 。
mysql_backup.bat 内容如下:

rem ******MySQL backup start********

@echo off

:: 备份目录
set BackupFile=C:\mysql_backup

:: 资料库连线
set userId=root
set UserPwd=123456
set Host=127.0.0.1
set port=3306
set DBName=world

:: 备份保留天数
set RetentionDays=-3

:: 设定时间格式 yyyyMMdd
set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%"

::删除旧有备份档
forfiles /p %BackupFile% /m backup_*.sql -d %RetentionDays% /c "cmd /c del /f @path"

:: 执行备份指令
"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqldump" --opt --single-transaction=TRUE --user=%userId% --password=%UserPwd% --host=%Host% --protocol=tcp --port=%port% --default-character-set=utf8 --single-transaction=TRUE --routines --events %DBName% > "%BackupFile%\backup_%Ymd%.sql"

@echo on

rem ******MySQL backup end********
rem pause

关於需要调整的参数有:
BackupFile=备份目录。
userId=资料库登入帐号,建立用管理者帐号。
UserPwd=资料库登入密码。
Host=主机 IP。
port=连接埠。
DBName=资料库名称。
RetentionDays=-3 表示删除超过3天的档案。

关於档名的时间,我只有保留{年月日}而已。
如果想要使用{年月日时分秒}格式的话,可以使用以下语法。
set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%"

另外要特别注意的是在执行备份指令的 C:\Program Files\MySQL\MySQL Server 8.0\bin\,要指向你安装的 MySQL 目录。
mysqldump是 MySQL 提供的备份程序。

当执行过後就会产生以下档案

发生错误时检查方式

如果当你执行後,档案没有正常出现,可能出现了问题。
可以把指令最下面的rem pause 改为 pause,
而 rem 是注解的意思,pause 则是暂停的意思。
会让执行画面停住不会消失,这时候你可以看看是那里出现问题。
较常出现的问题是资料库连线失败或是目录有错。

设定工作排程器

当完成了批次档 mysql_backup.bat 後,接下来就是建立「工作排程器」定期备份。

打开「工具排程器」,在右边执行「建立工作」。

输入排程名称

排程名称例如: "MySQL Backup"。
执行选项可选择「只有使用者登入时才执行」或是「不论使用者登入与否均执行」。
这个看你的电脑是否要在登出时执行。

设定触发程序

触发时间依个人想要的周期来备份。

通常我是每天备份一次。

设定动作

动作的部份就选择启动刚刚的批次档,要注意的是「开始位置」也要输入批次档的存放目录。

完成设定後,就可以在清单看到已建立的排程了。

重点整理

  1. 编写命令列 ( .bat 档)
  2. 设定工作排程器

相关学习文章

MySQL Workbench如何备份与还原资料库
Windows Server IIS 如何安装 PHP 网页服务器
Windows Server 安装 MySQL Community 免费社群版


<<:  GCP IAP

>>:  ASP.NET MVC 从入门到放弃(Day23)-MVC编辑资料介绍

[2020铁人赛] Day26 - 用DocX汇出Word档案

今天来讲一下user的需求,要汇出一份word档,并且需要套上参数并替换值,其实nuget上有很多套...

[Golang] Introduction of Functions

Declairing Functions We can use the func keyword t...

JavaScript 的资料型别 (data type) 及存取值

前言:最近算是自学到一个阶段~已经开始面试。这次参加铁人赛的主题以 JS 基础知识为主,并会尽量将面...

[Day 1]从零开始学习 JS 的连续-30 Days---宣告变数

学习 JS Day 1 JavaScript 变数 变数就好比是资料容器,而资料又可以分为不同种类(...

爱用iPhone的UI/UX设计师最恐怖

(这个标题有点耸动跟钓鱼,但不知道为什麽我就是很想用它,在文章开头先讲明。) 即使已经证实了苹果在i...