Windows Server 2012:如何自动转储和压缩 MySQL 数据库

Windows Server 2012:如何自动转储和压缩 MySQL 数据库

我正在使用 Windows Server 2012。我需要每两小时转储一次数据库并压缩 SQL 生成的文件。

zip 文件必须具有以下语法:nameOfFile_date_hour.zip
我不需要 zip 文件名的分钟和秒详细信息。
有办法吗?

我知道如何使用 Linux 来做到这一点,但不知道如何使用 Windows 来做到这一点。

答案1

您可以编写一个 PowerShell 脚本,并让 Windows 任务计划程序每 2 小时运行一次

一个快速而肮脏的示例脚本:

# Declare variables
$db = "[DB NAME]"
$user = "[DB USERNAME]"
$pw = "[DB PASSWORD]"
$date = (Get-Date).ToString("yyyy-MM-dd_HH.mm.ss")
$mysql_backupfile = ".\backup_$date.sql"
$zipped_backupfile = "$mysql_backupfile.zip"

# Backup MySql database
mysqldump --user=$user --password=$pw --databases $db > $mysql_backupfile

# Compress file using 7zip
sz a -tzip $zipped_backupfile $mysql_backupfile

# Remove uncompressed backup file
rm -Path $mysql_backupfile

将数据库名称、用户名、密码以及日期格式更改为您需要的格式。

注意:我不太确定将用户名和密码直接插入脚本是否安全,但如果您的服务器是安全的,我相信这样做不会有问题。但您可以随意加载凭据(例如从环境变量加载)

编辑评论中的问题:

删除 3 天前的 '.zip' 文件:

Get-ChildItem -Filter '*.zip' |
    where { $_.LastWriteTime -lt (Get-Date).AddDays(-3) } |
    Remove-Item

相关内容