1. 程式人生 > 其它 >MySQL 8.0在Windows上如何備份

MySQL 8.0在Windows上如何備份

現在用MySQL的人非常多,大多數人只是使用資料庫,很少涉及資料庫的備份。

但是在系統部署中,用到MySQL的人肯定避免不了資料庫的資料備份。網上的資料大部分都是Linux系統上MySQL的備份資料,Windows系統上的備份資料較少,即使有,也是說明的很簡單,而且很多給定的指令碼也不能使用,下面我就資料庫的全量備份和增量備份介紹一下。

備份的時候,第一次肯定需要做一次基礎備份,然後再此基礎上執行增量備份。

全量備份的例子如下:

@echo off
set hour=%time:~0,2%
if "%time:~0,1%"==" " set hour=0%time:~1,1%
set now=%Date:~0,4%%Date:~5,2%%Date:~8,2%%hour%%Time:~3,2%%Time:~6,2%
echo %now%
set host=127.0.0.1
set port=3306
set user=root
set pass=123456
set dbname=huali-ticket-server
set backupfile=D:\backup\test\vr\%dbname%-all-%now%.sql
::下面的mysqldump的路徑需要是執行指令碼的系統上的全路徑, "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqldump" -h%host% -P%port% -u%user% -p%pass% -c --add-drop-table %dbname% > %backupfile% echo delete files before 10 days forfiles /p D:\backup\test\vr /s /m *.sql /d -10 /c "cmd /c del @file /f"

  增量備份的例子如下,增量備份只是把binlog檔案備份下來即可:

@echo off

::伺服器資料庫ip 使用者名稱 密碼
set shost=127.0.0.1
set sport=3306
set suser=root
set suserpwd=123456
::mysql 二進位制日誌檔案存放的位置
set filePath= "C:\Program Files\MySQL\MySQL Server 8.0\data"


::當前系統日期 20160309
set now=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%

::備份資料夾
set backup=D:\backup\test\vr\data
if not exist %backup% md %backup%

::以日期命名的資料夾
set nowfile=%backup%\%now%-Increase
if not exist %nowfile% md %nowfile%

::前一次日誌檔名
set binlog=%nowfile%\binlog.txt

"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql" -h%shost% -P%sport% -u%suser% -p%suserpwd% -e "show master status"|findstr -B binlog.>%binlog%

::處理日誌檔名  只取binlog.001365 複製到目標資料夾
for /f " " %%i in (%binlog%) do  copy %filePath%\%%i %nowfile%
::重新整理日誌產生新的日誌
"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqladmin" -h%shost% -P%sport% -u%suser% -p%suserpwd% flush-logs

  

至於自動備份就需要用到Windows的執行計劃了,通過執行計劃執行上面的指令碼即可,具體資料可以在網上查詢,在此就不介紹了。

MySQL的命令可以參考部落格園的如下文章但不限於:

https://www.cnblogs.com/gcixx/p/11145473.html