![Windows Server 2012:如何自动转储和压缩 MySQL 数据库](https://linux22.com/image/1480833/Windows%20Server%202012%EF%BC%9A%E5%A6%82%E4%BD%95%E8%87%AA%E5%8A%A8%E8%BD%AC%E5%82%A8%E5%92%8C%E5%8E%8B%E7%BC%A9%20MySQL%20%E6%95%B0%E6%8D%AE%E5%BA%93.png)
我正在使用 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