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

作者:

文章目录
  • 在日常开发或运维中,我们常常需要备份 MySQL 数据库。手动操作不仅繁琐,还容易遗漏。本文将教你如何使用 PowerShell 脚本,一键导出所有非系统数据库,并自动按时间归档,适合 Windows 用户,零基础也能轻松上手。
  • 将以下代码保存为 mysql_backup.ps1: # 配置项 $mysqlDump = “C:ProgramsMySQLbinmysqldump.exe” $mysqlCmd = “C:ProgramsMySQLbinmysql.exe” $defaults = “–defaults-extra-file=C:Users5277my.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”
  • 打开 PowerShell(建议以管理员身份) 切换到脚本所在目录,例如: cd C:Users5277DocumentsMySQLBackup 运行脚本: .mysql_backup.ps1
  • 每次运行脚本,会在当前目录下创建一个以时间戳命名的文件夹,例如:2025_10_28_09_10_08 每个数据库会生成一个 .sql 文件,文件名格式为:数据库名-时间戳-dump.sql 所有文件都是纯文本格式,可用于恢复或版本管理
  • 通过这个脚本,你可以: 自动导出所有非系统数据库 按时间归档,便于管理 保持备份一致性,适合定期任务或手动执行 到此这篇关于使用PowerShell批量导出MySQL数据库的新手教程的文章就介绍到这了,更多相关PowerShell批量导出MySQL内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 您可能感兴趣的文章: Windows Powershell导出管道结果 powershell玩转sqlite数据库详细介绍 PowerShell连接SQL SERVER数据库进行操作的实现代码 Powershell访问SQL Server数据库代码实例
  • 目录
    • 引言
    • 准备工作
      • 1 安装 MySQL 并获取 mysqldump 工具
      • 2 创建 my.ini 配置文件
    • PowerShell 脚本代码
      • 如何运行脚本
        • 导出结果说明
          • 常见问题
            • 报错:Can’t create/write to file…
          • 总结

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

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

            Windows电脑安装mysqldump的详细教程_Mysql_风君子博客

            该文章会指导你:

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

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

            C:ProgramsMySQLbinmysqldump.exe
            C:ProgramsMySQLbinmysql.exe
            

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

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

            [client]
            user=dev
            password=123456
            host=192.168.0.77
            port=3306
            

            说明:

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

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

            将以下代码保存为 mysql_backup.ps1

            # 配置项
            $mysqlDump = "C:ProgramsMySQLbinmysqldump.exe"
            $mysqlCmd  = "C:ProgramsMySQLbinmysql.exe"
            $defaults  = "--defaults-extra-file=C:Users5277my.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. 切换到脚本所在目录,例如:
            cd C:Users5277DocumentsMySQLBackup
            
            1. 运行脚本:
            .mysql_backup.ps1
            

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

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

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

            通过这个脚本,你可以:

            • 自动导出所有非系统数据库
            • 按时间归档,便于管理
            • 保持备份一致性,适合定期任务或手动执行

            到此这篇关于使用PowerShell批量导出MySQL数据库的新手教程的文章就介绍到这了,更多相关PowerShell批量导出MySQL内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

            您可能感兴趣的文章:

            • Windows Powershell导出管道结果
            • powershell玩转sqlite数据库详细介绍
            • PowerShell连接SQL SERVER数据库进行操作的实现代码
            • Powershell访问SQL Server数据库代码实例

            站内搜索