最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

windows服務器下備份mysql數(shù)據(jù)庫的腳本分享

 更新時間:2025年12月05日 14:41:50   作者:IT界Tony哥  
這篇文章主要為大家詳細介紹了windows服務器下備份mysql數(shù)據(jù)庫的腳本,本文主要以5.7版本為例,文中的示例代碼講解詳細,感興趣的小伙伴可以了解下

根據(jù)MySQL 5.7版本,我為您提供專門優(yōu)化的備份腳本:

1. MySQL 5.7專用備份腳本

創(chuàng)建 mysql57_backup.bat

@echo off
chcp 65001 >nul
cls
echo ============================================
echo    MySQL 5.7 數(shù)據(jù)庫備份工具
echo    Database: jfdzyl
echo ============================================
echo.

REM ============ 配置區(qū)域 ============
REM 1. MySQL 5.7 路徑(默認安裝路徑)
set "MYSQL_PATH=C:\Program Files\MySQL\MySQL Server 5.7\bin"
if not exist "%MYSQL_PATH%\mysqldump.exe" (
    echo [錯誤] 未找到 MySQL 5.7
    echo 請修改 MYSQL_PATH 為正確的安裝路徑
    pause
    exit /b 1
)

REM 2. 數(shù)據(jù)庫連接信息
set DB_HOST=localhost
set DB_PORT=3306
set DB_USER=root
set DB_PASS=mysql
set DB_NAME=xxxx

REM 3. 備份設置
set BACKUP_ROOT="D:\MySQL_Backups\MySQL5.7"
set KEEP_DAYS=7           REM 保留最近7天備份
set MAX_BACKUPS=20        REM 最大保留備份文件數(shù)
set COMPRESS=true         REM 是否啟用壓縮

echo [信息] MySQL 5.7 路徑: %MYSQL_PATH%
echo [信息] 數(shù)據(jù)庫: %DB_NAME%@%DB_HOST%:%DB_PORT%

REM ============ 創(chuàng)建備份目錄 ============
for /f "tokens=1-3 delims=/ " %%a in ('date /t') do (
    set YEAR=%%c
    set MONTH=%%a
    set DAY=%%b
)

REM 處理日期格式(如果日期是yyyy/MM/dd格式)
if "%YEAR:~0,2%"=="20" (
    set DATE_STRING=%YEAR%%MONTH%%DAY%
) else (
    set DATE_STRING=%DAY%%MONTH%%YEAR%
    set YEAR=%DATE_STRING:~4,4%
    set MONTH=%DATE_STRING:~2,2%
    set DAY=%DATE_STRING:~0,2%
)

set TIMESTAMP=%TIME: =0%
set TIMESTAMP=%TIMESTAMP::=-%
set BACKUP_DIR=%BACKUP_ROOT%%YEAR%-%MONTH%-%DAY%
set LOG_FILE=%BACKUP_DIR%%DB_NAME%_backup.log

if not exist %BACKUP_ROOT% (
    mkdir %BACKUP_ROOT%
    echo [信息] 創(chuàng)建備份根目錄: %BACKUP_ROOT%
)

if not exist "%BACKUP_DIR%" (
    mkdir "%BACKUP_DIR%"
    echo [信息] 創(chuàng)建備份目錄: %BACKUP_DIR%
)

echo ============================================
echo 開始備份時間: %DATE% %TIME%
echo 備份目錄: %BACKUP_DIR%
echo ============================================
echo.

REM ============ 執(zhí)行備份 ============
set BACKUP_FILE=%DB_NAME%_%DATE_STRING%_%TIMESTAMP%.sql
set BACKUP_FILE_FULL=%BACKUP_DIR%%BACKUP_FILE%

echo [步驟1] 檢查MySQL連接...
cd /d "%MYSQL_PATH%"
mysql.exe -h%DB_HOST% -P%DB_PORT% -u%DB_USER% -p%DB_PASS% -e "SELECT 1" >nul 2>&1
if errorlevel 1 (
    echo [錯誤] MySQL連接失??!
    echo 請檢查:
    echo 1. MySQL 5.7服務是否運行
    echo 2. 用戶名/密碼是否正確
    echo 3. 端口號是否正確(默認:3306)
    pause
    exit /b 1
)
echo [成功] MySQL連接正常

echo.
echo [步驟2] 獲取數(shù)據(jù)庫信息...
mysql.exe -h%DB_HOST% -P%DB_PORT% -u%DB_USER% -p%DB_PASS% -N -B -e "SELECT table_schema 'Database', ROUND(SUM(data_length+index_length)/1024/1024,2) 'Size_MB' FROM information_schema.tables WHERE table_schema='%DB_NAME%' GROUP BY table_schema" 2>nul

echo.
echo [步驟3] 執(zhí)行備份...
echo 開始時間: %TIME%
echo 備份文件: %BACKUP_FILE%

REM MySQL 5.7 優(yōu)化備份參數(shù)
mysqldump.exe ^
    -h%DB_HOST% ^
    -P%DB_PORT% ^
    -u%DB_USER% ^
    -p%DB_PASS% ^
    --databases %DB_NAME% ^
    --default-character-set=utf8mb4 ^
    --single-transaction ^
    --routines ^
    --triggers ^
    --events ^
    --hex-blob ^
    --complete-insert ^
    --add-drop-database ^
    --add-drop-table ^
    --result-file="%BACKUP_FILE_FULL%" ^
    --log-error="%BACKUP_DIR%%DB_NAME%_dump_error.log"

if errorlevel 1 (
    echo [錯誤] 備份失??!
    if exist "%BACKUP_DIR%%DB_NAME%_dump_error.log" (
        echo 錯誤日志:
        type "%BACKUP_DIR%%DB_NAME%_dump_error.log"
    )
    pause
    exit /b 1
)

echo 結束時間: %TIME%
echo [成功] 數(shù)據(jù)庫備份完成!

REM 獲取文件大小
for %%F in ("%BACKUP_FILE_FULL%") do (
    set "FILE_SIZE=%%~zF"
    set "SIZE_MB=!FILE_SIZE:/1024/1024=!"
    set /a SIZE_MB=!FILE_SIZE!/1024/1024
    echo 文件大小: !FILE_SIZE! 字節(jié) (!SIZE_MB! MB)
)

echo.
echo [步驟4] 驗證備份文件...
REM 檢查備份文件是否包含正確的結束標記
findstr /i "Dump completed" "%BACKUP_FILE_FULL%" >nul
if errorlevel 1 (
    findstr /i "-- Dump completed" "%BACKUP_FILE_FULL%" >nul
    if errorlevel 0 (
        echo [驗證] 備份文件完整性檢查通過
    ) else (
        echo [警告] 未找到標準結束標記,但文件已生成
    )
) else (
    echo [驗證] 備份文件完整性檢查通過
)

REM ============ 可選:壓縮備份 ============
if "%COMPRESS%"=="true" (
    echo.
    echo [步驟5] 壓縮備份文件...
    
    REM 檢查7-Zip
    set "ZIP_PATH=C:\Program Files\7-Zip\7z.exe"
    if not exist "%ZIP_PATH%" (
        set "ZIP_PATH=%ProgramFiles%\7-Zip\7z.exe"
    )
    
    if exist "%ZIP_PATH%" (
        "%ZIP_PATH%" a -tzip -mx5 "%BACKUP_FILE_FULL%.zip" "%BACKUP_FILE_FULL%" >nul
        if errorlevel 0 (
            del "%BACKUP_FILE_FULL%"
            echo [成功] 壓縮完成: %BACKUP_FILE%.zip
            set BACKUP_FILE_FINAL=%BACKUP_FILE_FULL%.zip
        ) else (
            echo [警告] 壓縮失敗,保留原文件
            set BACKUP_FILE_FINAL=%BACKUP_FILE_FULL%
        )
    ) else (
        echo [信息] 未找到7-Zip,使用未壓縮備份
        set "COMPRESS=false"
        set BACKUP_FILE_FINAL=%BACKUP_FILE_FULL%
    )
) else (
    set BACKUP_FILE_FINAL=%BACKUP_FILE_FULL%
)

REM ============ 清理舊備份 ============
echo.
echo [步驟6] 清理舊備份...

REM 方法1:按天數(shù)清理
echo 清理超過%KEEP_DAYS%天的備份...
forfiles /p %BACKUP_ROOT% /s /m *.sql /d -%KEEP_DAYS% /c "cmd /c echo 刪除: @path && del @path" 2>nul
forfiles /p %BACKUP_ROOT% /s /m *.zip /d -%KEEP_DAYS% /c "cmd /c echo 刪除: @path && del @path" 2>nul

REM 方法2:按文件數(shù)量清理
echo 檢查備份文件數(shù)量...
cd /d %BACKUP_ROOT%
for /f %%i in ('dir /b /s *.sql *.zip ^| find /c /v ""') do set COUNT=%%i
echo 當前備份文件總數(shù): %COUNT%

if %COUNT% GTR %MAX_BACKUPS% (
    echo 超出最大限制(%MAX_BACKUPS%),清理最舊的文件...
    dir /b /s *.sql *.zip /o-d /t:c > "%BACKUP_ROOT%\backup_list.txt"
    
    setlocal enabledelayedexpansion
    set /a DEL_COUNT=%COUNT%-%MAX_BACKUPS%
    echo 需要刪除!DEL_COUNT!個文件
    
    for /f "skip=%MAX_BACKUPS% delims=" %%F in ('dir /b /s *.sql *.zip /o-d /t:c') do (
        if exist "%%F" (
            echo 刪除: %%F
            del "%%F"
        )
    )
    endlocal
)

REM 清理空目錄
for /f "delims=" %%D in ('dir %BACKUP_ROOT% /ad /b /s ^| sort /r') do (
    dir "%%D" 2>nul | findstr "^[0-9]" >nul || (
        rmdir "%%D" 2>nul && echo 清理空目錄: %%D
    )
)

echo.
echo ============================================
echo           備份摘要
echo ============================================
echo 數(shù)據(jù)庫: %DB_NAME%
echo 備份時間: %DATE% %TIME%
echo 備份文件: %BACKUP_FILE_FINAL%
for %%F in ("%BACKUP_FILE_FINAL%") do (
    echo 文件大小: %%~zF 字節(jié)
)
echo 備份位置: %BACKUP_DIR%
echo 壓縮狀態(tài): %COMPRESS%
echo ============================================
echo.

REM 記錄日志
echo %DATE% %TIME% - 備份完成: %BACKUP_FILE_FINAL% >> "%LOG_FILE%"
for %%F in ("%BACKUP_FILE_FINAL%") do (
    echo 文件大小: %%~zF 字節(jié) >> "%LOG_FILE%"
)

pause

2. 簡易版?zhèn)浞菽_本(快速使用)

創(chuàng)建 backup_simple.bat

@echo off
chcp 65001 >nul
title MySQL 5.7 備份工具

REM MySQL 5.7 默認安裝路徑
set MYSQL_PATH="C:\Program Files\MySQL\MySQL Server 5.7\bin"
set BACKUP_DIR="D:\MySQL_Backup"

REM 數(shù)據(jù)庫配置
set DB_HOST=localhost
set DB_USER=root
set DB_PASS=mysql
set DB_NAME=jfdzyl

REM 創(chuàng)建備份目錄
if not exist %BACKUP_DIR% mkdir %BACKUP_DIR%

REM 生成備份文件名
set DATESTAMP=%date:~0,4%%date:~5,2%%date:~8,2%
set TIMESTAMP=%time:~0,2%%time:~3,2%%time:~6,2%
set TIMESTAMP=%TIMESTAMP: =0%
set BACKUP_FILE=%BACKUP_DIR%%DB_NAME%_%DATESTAMP%_%TIMESTAMP%.sql

echo 正在備份數(shù)據(jù)庫 %DB_NAME% ...
echo 請稍候...

cd /d %MYSQL_PATH%
mysqldump -h%DB_HOST% -u%DB_USER% -p%DB_PASS% %DB_NAME% > "%BACKUP_FILE%"

if errorlevel 1 (
    echo 備份失敗!
    pause
    exit /b 1
)

echo 備份成功!
echo 備份文件: %BACKUP_FILE%
for %%F in ("%BACKUP_FILE%") do (
    echo 文件大小: %%~zF 字節(jié)
)

REM 自動打開備份目錄
explorer %BACKUP_DIR%
pause

3. 帶驗證的備份腳本

創(chuàng)建 backup_with_verify.bat

@echo off
chcp 65001 >nul
cls

echo MySQL 5.7 數(shù)據(jù)庫備份驗證工具
echo ==============================
echo.

set MYSQL_PATH="C:\Program Files\MySQL\MySQL Server 5.7\bin"
set BACKUP_DIR="D:\MySQL_Backup"
set DB_USER=root
set DB_PASS=mysql
set DB_NAME=jfdzyl

REM 生成備份文件
set TIMESTAMP=%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%
set TIMESTAMP=%TIMESTAMP: =0%
set TIMESTAMP=%TIMESTAMP::=%
set BACKUP_FILE=%BACKUP_DIR%%DB_NAME%_%TIMESTAMP%.sql

echo 步驟1: 執(zhí)行備份...
cd /d %MYSQL_PATH%
mysqldump -u%DB_USER% -p%DB_PASS^
    --databases %DB_NAME%^
    --single-transaction^
    --routines^
    --triggers^
    --events^
    --set-gtid-purged=OFF^
    --result-file="%BACKUP_FILE%"

if errorlevel 1 (
    echo [錯誤] 備份失敗
    pause
    exit /b 1
)

echo 步驟2: 驗證備份文件...
REM 檢查文件大小
for %%F in ("%BACKUP_FILE%") do set FILESIZE=%%~zF
if %FILESIZE% LSS 1024 (
    echo [警告] 備份文件可能不完整 (大小: %FILESIZE% 字節(jié))
) else (
    echo [通過] 文件大小: %FILESIZE% 字節(jié)
)

REM 檢查文件內容
findstr /i "CREATE TABLE" "%BACKUP_FILE%" >nul
if errorlevel 1 (
    echo [錯誤] 備份文件不包含表結構
) else (
    echo [通過] 包含表結構定義
)

findstr /i "INSERT INTO" "%BACKUP_FILE%" >nul
if errorlevel 1 (
    echo [警告] 備份文件不包含數(shù)據(jù)插入語句
) else (
    echo [通過] 包含數(shù)據(jù)插入語句
)

REM 快速恢復測試(可選)
echo.
echo 步驟3: 快速完整性測試...
echo 測試表結構語法...
REM 這里可以添加更多驗證邏輯

echo.
echo 備份驗證完成!
echo 文件: %BACKUP_FILE%
echo 大小: %FILESIZE% 字節(jié)
echo.

pause

4. 任務計劃配置腳本

創(chuàng)建 setup_scheduled_backup.bat

@echo off
chcp 65001 >nul
title 設置MySQL 5.7定時備份

echo 正在創(chuàng)建MySQL 5.7自動備份任務...
echo.

REM 創(chuàng)建備份腳本
(
echo @echo off
echo chcp 65001 ^>nul
echo set MYSQL_PATH="C:\Program Files\MySQL\MySQL Server 5.7\bin"
echo set BACKUP_DIR="D:\MySQL_Backup"
echo.
echo set DB_USER=root
echo set DB_PASS=mysql
echo set DB_NAME=jfdzyl
echo.
echo REM 生成帶日期的文件名
echo for /f "tokens=1-3 delims=/ " %%a in ('date /t'^) do set DATE=%%a-%%b-%%c
echo set DATE=%%DATE:/=-%%
echo set BACKUP_FILE=%%BACKUP_DIR%%%%DB_NAME%%_%%DATE%%.sql
echo.
echo cd /d %%MYSQL_PATH%%
echo mysqldump -u%%DB_USER%% -p%%DB_PASS%% --databases %%DB_NAME%% --routines --triggers --events --single-transaction ^> "%%BACKUP_FILE%%"
echo.
echo echo 備份完成: %%DATE%% ^>^> "%%BACKUP_DIR%%\backup.log"
) > "%TEMP%\mysql_backup_task.bat"

REM 創(chuàng)建任務計劃
schtasks /create /tn "MySQL5.7_Backup_%DB_NAME%" ^
    /tr "%TEMP%\mysql_backup_task.bat" ^
    /sc daily /st 02:00 ^
    /ru "SYSTEM" ^
    /rl HIGHEST ^
    /f

if errorlevel 1 (
    echo 任務創(chuàng)建失敗,嘗試使用管理員權限...
    echo 請右鍵以管理員身份重新運行此腳本
) else (
    echo 定時備份任務創(chuàng)建成功!
    echo 任務名稱: MySQL5.7_Backup_%DB_NAME%
    echo 執(zhí)行時間: 每天 02:00
    echo 備份目錄: D:\MySQL_Backup
)

echo.
pause

5. 使用注意事項

MySQL 5.7 特定配置

  • 默認安裝路徑C:\Program Files\MySQL\MySQL Server 5.7\bin
  • 字符集設置:MySQL 5.7 默認使用 utf8,建議備份時指定 --default-character-set=utf8mb4
  • GTID特性:如果啟用了GTID,需要添加 --set-gtid-purged=OFF

常見問題解決

REM 如果遇到權限問題,可以嘗試以下方法:

REM 1. 使用MySQL配置文件存儲密碼
echo [client] > my.cnf
echo host=localhost >> my.cnf
echo user=root >> my.cnf
echo password=mysql >> my.cnf

REM 2. 然后使用
mysqldump --defaults-file=my.cnf jfdzyl > backup.sql

REM 3. 刪除配置文件(安全)
del my.cnf

備份優(yōu)化建議

  • 使用 --single-transaction進行一致性備份
  • 使用 --routines備份存儲過程和函數(shù)
  • 使用 --events備份事件
  • 使用 --triggers備份觸發(fā)器
  • 大型數(shù)據(jù)庫可以分割備份文件

運行前請確保:

  • MySQL 5.7 服務正在運行
  • 備份目錄有寫入權限
  • 防火墻允許MySQL連接
  • 密碼正確無誤

以上就是windows服務器下備份mysql數(shù)據(jù)庫的腳本分享的詳細內容,更多關于mysql數(shù)據(jù)庫備份的資料請關注腳本之家其它相關文章!

相關文章

  • windows 10下mysql 5.7.21 winx64安裝配置方法圖文教程

    windows 10下mysql 5.7.21 winx64安裝配置方法圖文教程

    這篇文章主要為大家詳細介紹了windows 10下mysql 5.7.21 winx64安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • Mysql提升大數(shù)據(jù)表拷貝效率的解決方案

    Mysql提升大數(shù)據(jù)表拷貝效率的解決方案

    這篇文章主要給大家介紹了關于Mysql提升大數(shù)據(jù)表拷貝效率的解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-09-09
  • linux上mysql安裝詳細教程

    linux上mysql安裝詳細教程

    這篇文章主要為大家詳細介紹了linux上mysql安裝詳細教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • MySQL的id關聯(lián)和索引使用的實際優(yōu)化案例

    MySQL的id關聯(lián)和索引使用的實際優(yōu)化案例

    這篇文章主要介紹了MySQL的id關聯(lián)實際優(yōu)化案例,關聯(lián)和索引一直是MySQL常見的可優(yōu)化大塊兒,需要的朋友可以參考下
    2015-05-05
  • MySQL中的排序規(guī)則

    MySQL中的排序規(guī)則

    這篇文章主要介紹了MySQL中的排序規(guī)則,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • MySQL基礎SQL優(yōu)化之查詢性能提升的4大技巧

    MySQL基礎SQL優(yōu)化之查詢性能提升的4大技巧

    在MySQL數(shù)據(jù)庫開發(fā)與管理過程中,SQL語句的性能至關重要,本文將結合實際案例,深入分析優(yōu)化前后的性能差異,助力開發(fā)者寫出高效的SQL語句
    2025-07-07
  • mysql中EXISTS和IN的使用方法比較

    mysql中EXISTS和IN的使用方法比較

    這篇文章主要給大家介紹了關于mysql中EXISTS和IN使用方法比較的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • Mysql數(shù)據(jù)庫不同官方版本對比詳細分析

    Mysql數(shù)據(jù)庫不同官方版本對比詳細分析

    MySQL是一個流行的開源關系型數(shù)據(jù)庫管理系統(tǒng),有多個版本,這篇文章主要介紹了Mysql數(shù)據(jù)庫不同官方版本對比的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-01-01
  • mysql不是內部命令的錯誤解決方案

    mysql不是內部命令的錯誤解決方案

    在本篇內容里小編給各位分享的是一篇關于mysql不是內部命令的錯誤解決方案,需要的朋友們可以學習下。
    2020-08-08
  • Oracle和MySQL的高可用方案對比分析

    Oracle和MySQL的高可用方案對比分析

    這篇文章主要介紹了Oracle和MySQL的高可用方案對比分析,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-11-11

最新評論

太仓市| 泽库县| 溆浦县| 灵丘县| 岳西县| 镇安县| 修武县| 桂林市| 石柱| 莱芜市| 临夏市| 资兴市| 锦州市| 江山市| 西乌珠穆沁旗| 三都| 信宜市| 邻水| 石棉县| 平南县| 全椒县| 海城市| 山丹县| 郸城县| 塔河县| 龙陵县| 宿州市| 屏东市| 玉树县| 东山县| 屯留县| 丰城市| 彭山县| 莆田市| 扶绥县| 特克斯县| 樟树市| 呈贡县| 西吉县| 平遥县| 惠安县|