使用批處理(.bat)管理 MySQL 數據庫:備份、還原與更新元號

| Work Notes | 5 Reads

在日常維護 MySQL 數據庫的過程中,經常需要進行 數據庫備份、數據還原以及數據表更新 等操作。本文將介紹三個批處理文件的功能與原理,並提供完整代碼與逐行解讀,幫助你快速理解與使用。


一、tskdb_backup.bat —— 自動備份 MySQL 數據庫

完整代碼

@echo off
cd C:\Program Files\MySQL\MySQL Server 5.7\bin

REM set bk_file=dump_tskdb_%date:~0,4%%date:~5,2%%date:~8,2%.bak
set bk_file=dump_tskdb.bak

mysqldump -uroot -ptoukei2013 tsk_db --opt -F > c:\db_backup\%bk_file%

net use \\pc02 Gg5DeZ2t /USER:administrator
copy c:\db_backup\%bk_file% \\PC02\db_backup\%bk_file%

net use \\pc03 Gg5DeZ2t /USER:administrator
copy c:\db_backup\%bk_file% \\PC03\db_backup\%bk_file%

說明

  1. @echo off
    關閉命令行回顯,讓輸出更乾淨。

  2. cd C:\Program Files\MySQL\MySQL Server 5.7\bin
    切換到 MySQL 的安裝目錄,確保後續 mysqldump 命令能正常執行。

  3. set bk_file=dump_tskdb.bak
    定義備份文件名,這裏固定為 dump_tskdb.bak
    (註:上方被註解掉的一行,可以生成帶日期的文件名,例如 dump_tskdb_20250908.bak,方便歸檔。)

  4. mysqldump -uroot -ptoukei2013 tsk_db --opt -F > c:\db_backup\%bk_file%
    使用 mysqldump 對數據庫 tsk_db 進行備份,保存到 c:\db_backup\dump_tskdb.bak

  5. net use \\pc02 Gg5DeZ2t /USER:administrator
    連接遠程電腦 pc02,使用管理員帳號和密碼登錄。

  6. copy c:\db_backup\%bk_file% \\PC02\db_backup\%bk_file%
    將備份文件複製到 pc02 的共享目錄。

  7. 同理,後面兩行將備份文件複製到 pc03 的共享目錄。
    這樣一份備份就能分發到多台電腦,提高安全性。


二、tskdb_restore.bat —— 從備份文件還原數據庫

完整代碼

@echo off

cd C:\Program Files\MySQL\MySQL Server 5.7\bin
mysql -uroot -ptoukei2013 tsk_db < C:\db_backup\dump_tskdb.bak

echo f[^x[X̃XgA܂
pause;

說明

  1. @echo off
    隱藏命令執行過程。

  2. cd C:\Program Files\MySQL\MySQL Server 5.7\bin
    切換到 MySQL 的安裝目錄。

  3. mysql -uroot -ptoukei2013 tsk_db < C:\db_backup\dump_tskdb.bak
    調用 mysql 客戶端,將 dump_tskdb.bak 文件中的 SQL 語句導入數據庫 tsk_db

    注意:這會直接覆蓋當前數據庫中的數據,請謹慎操作。

  4. echo f[^x[X̃XgA܂
    這一行看起來是亂碼,可能是作者原本想輸出提示文字(例如「復元が完了しました」)。
    如果有需要,可以改成:

    echo Restore completed!
    
  5. pause;
    暫停,等待用戶按任意鍵再關閉窗口,避免命令執行完成後窗口立即退出。


三、update_gengou.bat —— 更新「元號」資料表

完整代碼

@ECHO off

chcp 65001

ECHO use tsk_db; > sql.bat
ECHO UPDATE gengou SET sort = sort + 1; >> sql.bat
ECHO UPDATE gengou SET to_date = "2019-04-30" where id = 1; >> sql.bat
ECHO INSERT INTO gengou VALUES(5, 5, "R", "令和", "2019-05-01", NULL, 1); >> sql.bat

mysql -u root -ptoukei2013 < sql.bat
del sql.bat

說明

  1. @ECHO off
    隱藏執行命令。

  2. chcp 65001
    切換命令行編碼為 UTF-8,避免日文「令和」顯示亂碼。

  3. ECHO use tsk_db; > sql.bat
    創建臨時文件 sql.bat,並寫入 SQL 語句 use tsk_db;

  4. 接下來的 ECHO ... >> sql.bat
    將多條 SQL 更新語句追加到臨時文件中:

    • gengou 表的 sort 全部 +1。

    • 更新 id=1 的記錄(可能是「平成」),把結束日期設為 2019-04-30。

    • 插入新紀元「令和」,起始日期 2019-05-01。

  5. mysql -u root -ptoukei2013 < sql.bat
    執行臨時 SQL 文件,完成更新。

  6. del sql.bat
    執行完後刪除臨時文件,保持環境乾淨。


總結

這三個 .bat 文件分別解決了 備份數據庫、還原數據庫與更新數據 的實際需求。

  • tskdb_backup.bat:確保數據有多份備份,降低風險。

  • tskdb_restore.bat:快速將備份恢復到數據庫。

  • update_gengou.bat:針對特定表(如日本元號表)進行批量更新。

使用批處理的好處是:自動化、可重複執行、操作簡單。只需雙擊文件,即可完成一系列操作,適合日常維護。

This article was last edited at