首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 備份還原批處理腳本:單表/全庫、壓縮打包、定時自動化

     編輯:MySQL 資料庫相關知識

MySQL 備份還原 Windows 批處理腳本大全

提供即用型 .bat 腳本,覆蓋單表備份/還原、全庫備份、壓縮打包、環境變量配置,適合 Windows 服務器定時任務部署。

前置配置:將 MySQL bin 目錄加入系統 PATH


# 計算機 → 屬性 → 高級系統設置 → 環境變量 → 系統變量 Path → 編輯 → 新增
C:\Program Files\MySQL\MySQL Server 5.7\bin
# 或將 .bat 直接放在 bin 目錄下運行

一、單表備份 bk_table.bat


@echo off
REM 導出表結構+數據 (去掉 -t 只導數據)
mysqldump -h127.0.0.1 -P3306 -uroot -proot --default-character-set=gbk database1 table1 > table1.sql
mysqldump -h127.0.0.1 -P3306 -uroot -proot --default-character-set=gbk database2 table2 > table2.sql
mysqldump -h127.0.0.1 -P3306 -uroot -proot --default-character-set=gbk database2 table3 > table3.sql
echo 備份完成!
pause

二、單表還原 restore.bat


@echo off
mysql -h127.0.0.1 -P3306 -uroot -proot database1 < table1.sql
mysql -h127.0.0.1 -P3306 -uroot -proot database2 < table2.sql
mysql -h127.0.0.1 -P3306 -uroot -proot database2 < table3.sql
echo 還原完成!
pause

三、單表備份 + 壓縮打包 bk_table_rar.bat (需安裝 WinRAR 並配置 PATH)


@echo off
mysqldump -h127.0.0.1 -P3306 -uroot -proot --default-character-set=gbk -t database1 table1 > table1.sql
mysqldump -h127.0.0.1 -P3306 -uroot -proot --default-character-set=gbk -t database2 table2 > table2.sql
mysqldump -h127.0.0.1 -P3306 -uroot -proot --default-character-set=gbk -t database2 table3 > table3.sql

winrar a Db_Bak_%date:~0,10%.rar *.sql
del *.sql
echo 壓縮備份完成:Db_Bak_%date:~0,10%.rar
pause

報錯 "'WinRAR' 不是內部命令" 解決: 將 WinRAR 安裝目錄 (如 C:\Program Files\WinRAR) 加入系統 PATH。

四、全庫備份 bk_database.bat


@echo off
mysqldump -h127.0.0.1 -P3306 -uroot -proot --routines --triggers --events --single-transaction database1 > database1_%date:~0,10%.sql
echo 全庫備份完成!
pause

五、定時自動化部署 (Windows 任務計劃程序)

  1. 建立基本任務 → 觸發器:每日 02:00
  2. 操作:啟動程序 cmd.exe,參數 /c "C:\backup\bk_database_rar.bat"
  3. 備份腳本建議輸出到非系統盤,定期清理 30 天前備份。

六、Linux 環境對應腳本 backup.sh


#!/bin/bash
DATE=$(date +%F)
BAK_DIR=/backup/mysql
DB_USER=root
DB_PASS=password
DB_NAME=my_db

mkdir -p $BAK_DIR
mysqldump -u$DB_USER -p$DB_PASS --single-transaction --routines --triggers --events $DB_NAME | gzip > $BAK_DIR/${DB_NAME}_${DATE}.sql.gz

# 保留 30 天
find $BAK_DIR -name "*.gz" -mtime +30 -delete

加入 crontab:0 2 * * * /backup/backup.sh >> /backup/backup.log 2>&1

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved