大家好,我是Spring小楊,一個有夢想的Java司機,
1.事件起因
就是之前服務器上用的是mysql資料庫,因為小公司嘛,也沒有專門的運維,我們幾個苦逼的開發都是即當業務,又干開發,還要做測驗和運維,別提多悲催了,

因為出過生產事故,后來兼顧運維的同事只好每天手動去備份,
備份很簡單,就是用navicat,

這個玩意,相信大家都用過吧,里面有一個匯出資料庫的功能,會匯出一個xxx.sql,
然后,我們會在電腦上弄一個檔案夾,改一下sql的檔案名,比如backup20211011.sql,
問題是,每天都手動去備份一下,是真的很麻煩啊,
后來,我靈機一動,說我給你寫個腳本吧,你放到服務器上,以后就不用天天手動去備份了,

2.BAT腳本備份mysql
廢話不多說,直接上腳本:
echo off
for /f "tokens=2 delims==" %%a in ('wmic path win32_operatingsystem get LocalDateTime /value') do (
set t=%%a
)
set ip=127.0.0.1
set user=root
set password=123
set Today=%t:~0,4%-%t:~4,2%-%t:~6,2%
echo,%Today%
echo.
"E:\mysql-5.5.31-win32\bin\mysqldump.exe" -h%ip% -u%user% -p%password% --default-character-set=utf8 --opt --extended-insert=false --triggers -R --hex-blob -x edu>d:\db_backup\YourDataBaseName.sql
echo.
echo,生成目錄d:\db_backup\%Today%
md d:\db_backup\%Today%
move d:\db_backup\YourDataBaseName.sql d:\db_backup\%Today%
echo,備份完畢
就是用cmd命令實作了mysql的備份,這樣子,
小楊在這邊給大家稍微解釋一下關鍵的命令,
set ip=127.0.0.1
set user=root
set password=123
set Today=%t:~0,4%-%t:~4,2%-%t:~6,2%
這幾行是設定IP,用戶名和密碼,Today就是今天的日期,用來生成檔案夾的,
"E:\mysql-5.5.31-win32\bin\mysqldump.exe"
-h%ip% -u%user% -p%password%
--default-character-set=utf8
--opt
--extended-insert=false
--triggers -R --hex-blob
-x YourDataBaseName>d:\db_backup\YourDataBaseName.sql
再看這幾行,其中 E:\mysql-5.5.31-win32\bin\mysqldump.exe 是我們電腦mysqldump執行檔案的絕對路徑,就在你安裝mysql的目錄里面, 然后就是你資料庫的名字:YourDataBaseName,
生成該資料庫的腳本檔案后,會保存到 d:\db_backup 目錄里面,
md d:\db_backup\%Today%
move d:\db_backup\YourDataBaseName.sql d:\db_backup\%Today%
最后,就是生成日期檔案夾,比如20211011,然后用move命令把剛才生成的腳本檔案移動到這個檔案夾中,就大功告成啦!

3. 寫Java定時任務部署到服務器
最后一步,就是寫一個Java定時任務,定時去調這個bat腳本,就完事了,
我用的是Hutool定時任務工具,

核心代碼我也貼出來給大家:
public void mysqlBackup(){
System.out.println("mysql備份 開始...");
RuntimeUtil.exec("cmd.exe /c start C:/mysql_backup.bat");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
RuntimeUtil.exec("taskkill /f /im cmd.exe");
}
哈哈,簡單不?幾行代碼就搞定了!
這種方式我之前寫過一篇教程,可以參考:
我用java寫了個定時工具沾沾自喜,結果發現小丑竟是我自己!
總體來說還是相當簡單的,但是作用卻很大,終于不用每天手動去備份啦~~
熱門推薦:
六年Java程式員,一路走來的辛酸淚! 【作業篇】
Java基礎教程系列:
【??Java入門超簡單??】JavaSE初級教程整合篇,全部手敲,每一節代碼都驗證可行(建議新人收藏)
我是Spring小楊,一個有夢想的Java司機,關注我,Java小白學習不迷路~~
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/310530.html
標籤:其他
