使用 PowerShell 批量导出 MySQL 数据库(新手教程)

在日常开发或运维中,我们常常需要备份 MySQL 数据库。手动操作不仅繁琐,还容易遗漏。本文将教你如何使用 PowerShell 脚本,一键导出所有非系统数据库,并自动按时间归档,适合 Windows 用户,零基础也能轻松上手。


🧰 准备工作

1️⃣ 安装 MySQL 并获取 mysqldump 工具

如果你尚未在 Windows 电脑上安装 mysqldump,请参考这篇详细教程:

👉 《Windows 电脑安装 mysqldump 的详细教程》

该文章会指导你:

  • 如何下载 MySQL 安装包
  • 如何配置环境变量
  • 如何验证 mysqldump.exe 是否可用

安装完成后,请确认以下两个工具的路径:

powershell 复制代码
C:\Programs\MySQL\bin\mysqldump.exe
C:\Programs\MySQL\bin\mysql.exe

你可以在文件资源管理器中搜索这两个文件,复制它们的完整路径。


2️⃣ 创建 my.ini 配置文件

在你的电脑上创建一个配置文件,例如 C:\Users\5277\my.ini,内容如下:

ini 复制代码
[client]
user=dev
password=123456
host=192.168.0.77
port=3306

📌 说明:

  • userpassword 是你的数据库登录账号
  • host 是数据库服务器地址(本地或远程)
  • port 是数据库端口,默认是 3306

这个文件的作用是让脚本自动读取连接信息,避免在命令中暴露密码。


🧾 PowerShell 脚本代码

将以下代码保存为 mysql_backup.ps1

powershell 复制代码
# 配置项
$mysqlDump = "C:\Programs\MySQL\bin\mysqldump.exe"
$mysqlCmd  = "C:\Programs\MySQL\bin\mysql.exe"
$defaults  = "--defaults-extra-file=C:\Users\5277\my.ini"
$charset   = "utf8mb4"

# 获取当前时间戳
$timestamp = Get-Date -Format "yyyy_MM_dd_HH_mm_ss"

# 创建导出目录(以时间戳命名)
$exportDir = Join-Path $PWD $timestamp
if (-not (Test-Path $exportDir)) {
    New-Item -ItemType Directory -Path $exportDir | Out-Null
}

# 获取数据库列表(排除系统库)
$databases = & "$mysqlCmd" `
    $defaults `
    "-N" `
    "-e" "SHOW DATABASES;" | Where-Object {
        $_ -notin @("information_schema", "performance_schema", "mysql", "sys")
    }

# 导出每个数据库
foreach ($db in $databases) {
    Write-Host "📦 正在导出数据库:$db"
    $filename = "$db-$timestamp-dump.sql"
    $resultFile = Join-Path $exportDir $filename

    & "$mysqlDump" `
        $defaults `
        "--quick" `
        "--skip-lock-tables" `
        "--max_allowed_packet=1G" `
        "--routines" `
        "--events" `
        "--triggers" `
        "--set-gtid-purged=OFF" `
        "--default-character-set=$charset" `
        "--set-charset" `
        "--databases" "$db" `
        "--result-file=$resultFile"
}

Write-Host "`n✅ 所有数据库导出完成,保存在目录:$exportDir"

▶️ 如何运行脚本

  1. 打开 PowerShell(建议以管理员身份)
  2. 切换到脚本所在目录,例如:
powershell 复制代码
cd C:\Users\5277\Documents\MySQLBackup
  1. 运行脚本:
powershell 复制代码
.\mysql_backup.ps1

📂 导出结果说明

  • 每次运行脚本,会在当前目录下创建一个以时间戳命名的文件夹,例如:2025_10_28_09_10_08
  • 每个数据库会生成一个 .sql 文件,文件名格式为:数据库名-时间戳-dump.sql
  • 所有文件都是纯文本格式,可用于恢复或版本管理

🛠 常见问题

❌ 报错:Can't create/write to file...

说明目标目录不存在。脚本中已自动创建目录,如仍报错,请检查:

  • 当前用户是否有写入权限
  • my.ini 路径是否正确
  • 数据库连接是否成功

🎯 总结

通过这个脚本,你可以:

  • 自动导出所有非系统数据库
  • 按时间归档,便于管理
  • 保持备份一致性,适合定期任务或手动执行
相关推荐
玄同76525 分钟前
SQLite + LLM:大模型应用落地的轻量级数据存储方案
jvm·数据库·人工智能·python·语言模型·sqlite·知识图谱
吾日三省吾码26 分钟前
别只会“加索引”了!这 3 个 PostgreSQL 反常识优化,能把性能和成本一起打下来
数据库·postgresql
chian-ocean28 分钟前
百万级图文检索实战:`ops-transformer` + 向量数据库构建语义搜索引擎
数据库·搜索引擎·transformer
那个村的李富贵1 小时前
解锁CANN仓库核心能力:50行代码搭建国产化AIGC图片风格迁移神器
mysql·信息可视化·aigc·cann
小Tomkk1 小时前
数据库 变更和版本控制管理工具 --Bytebase 安装部署(linux 安装篇)
linux·运维·数据库·ci/cd·bytebase
qq_12498707531 小时前
基于JavaWeb的大学生房屋租赁系统(源码+论文+部署+安装)
java·数据库·人工智能·spring boot·计算机视觉·毕业设计·计算机毕业设计
倒流时光三十年2 小时前
SpringBoot 数据库同步 Elasticsearch 性能优化
数据库·spring boot·elasticsearch
码农小卡拉2 小时前
深入解析Spring Boot文件加载顺序与加载方式
java·数据库·spring boot
怣502 小时前
MySQL多表连接:全外连接、交叉连接与结果集合并详解
数据库·sql
wjhx3 小时前
QT中对蓝牙权限的申请,整理一下
java·数据库·qt