1.編寫腳本
@title MySQL backup start
@echo off
setlocal enabledelayedexpansion
@color 0a
:: --------------------參數設定------------------------
:: 設定時間變量
set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%"
:: 要備份的資料庫名稱,多個用空格分隔
set DATABASES=data1 data2
:: HOST IP
set HOST=127.0.0.1
:: PROT 端口
set PROT=3306
:: MySQL 使用者名
set USERNAME=root
:: MySQL 密碼
set PASSWORD=123456
:: MYSQLDUMP 目錄
set MYSQLDUMP="C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqldump.exe"
:: WinRAR 自帶指令行工具的可執行檔案路徑,長檔案名注意用 Dos 長檔案名書寫方式
set WINRAR=C:\Progra~1\WinRAR\Rar.exe
:: 備份天數,會自動删除30天之前的資料
set DT=30
:: 備份放置的盤,加 \
set BACKUP_PATH=D:\
:: 備份放置的路徑,加 \
set FILE=Backup\
:: --------------------開始備份------------------------
for %%D in (%DATABASES%) do (
if exist %BACKUP_PATH%%FILE%%%D (
echo 目錄%BACKUP_PATH%%FILE%%%D已存在,無需建立
) else (
echo 建立%BACKUP_PATH%%FILE%%%D
md %BACKUP_PATH%%FILE%%%D
)
:: 删除
forfiles /p "%BACKUP_PATH%%FILE%%%D" /m %%D_*.sql -d -%DT% /c "cmd /c del /f @path"
cd %MYSQL%
:: 備份
%MYSQLDUMP% --opt --single-transaction=TRUE --user=%USERNAME% --password=%PASSWORD% --host=%HOST% --protocol=tcp --port=%PROT% --default-character-set=utf8mb4 --single-transaction=TRUE --routines --events "%%D" > %BACKUP_PATH%%FILE%%%D\%%D_%Ymd%.sql
)
:: --------------------結束備份------------------------
@echo on
2.添加windows定時任務
2.1 Windows鍵+R,調出此視窗,輸入compmgmt.msc

2.2
2.3
2.4
2.5
2.6
2.7
2.8
2.9
3.附錄
3.1警告提示
該提示不影響檔案生成,是一個不建議你在指令行中出現明文密碼的警告。
3.2參數釋義,括号中為簡寫
--host(-h)
需要導出的主機資訊
--port(-P)
連接配接資料庫端口号
--user(-u)
指定連接配接的使用者名。
--password(-p)
連接配接資料庫密碼
--opt
等同于--add-drop-table, --add-locks, --create-options, --quick, --extended-insert, --lock-tables, --set-charset, --disable-keys 該選項預設開啟, 可以用--skip-opt禁用.
--skip-opt
禁用–opt選項.
--single-transaction
該選項在導出資料之前送出一個BEGIN SQL語句,BEGIN 不會阻塞任何應用程式且能保證導出時資料庫的一緻性狀态。它隻适用于多版本存儲引擎,僅InnoDB。本選項和--lock-tables 選項是互斥的,因為LOCK TABLES 會使任何挂起的事務隐含送出。要想導出大表的話,應結合使用--quick 選項。
--protocol
使用的連接配接協定,包括:tcp, socket, pipe, memory.
--all-tablespaces(-Y)
導出全部表空間。
--tables
覆寫--databases (-B)參數,指定需要導出的表名。
--no-tablespaces(-y)
不導出任何表空間資訊。
--ignore-table
不導出指定表。指定忽略多個表時,需要重複多次,每次一個表。每個表必須同時指定資料庫和表名。例如:--ignore-table=database.table1 --ignore-table=database.table2 ……
--events(-E)
導出事件。
--routines(-R)
導出存儲過程以及自定義函數。
--lock-all-tables(-x)
送出請求鎖定所有資料庫中的所有表,以保證資料的一緻性。這是一個全局讀鎖,并且自動關閉--single-transaction 和--lock-tables 選項。
--lock-tables(-l)
開始導出前,鎖定所有表。用READ LOCAL鎖定表以允許MyISAM表并行插入。對于支援事務的表例如InnoDB和BDB,--single-transaction是一個更好的選擇,因為它根本不需要鎖定表。請注意當導出多個資料庫時,--lock-tables分别為每個資料庫鎖定表。是以,該選項不能保證導出檔案中的表在資料庫之間的邏輯一緻性。不同資料庫表的導出狀态可以完全不同。
--add-drop-database
每個資料庫建立之前添加drop資料庫語句。
--add-drop-table
每個資料表建立之前添加drop資料表語句。(預設為打開狀态,使用--skip-add-drop-table取消選項)
--add-locks
在每個表導出之前增加LOCK TABLES并且之後UNLOCK TABLE。(預設為打開狀态,使用--skip-add-locks取消選項)
--allow-keywords
允許建立是關鍵詞的列名字。這由表名字首于每個列名做到。
--apply-slave-statements
在'CHANGE MASTER'前添加'STOP SLAVE',并且在導出的最後添加'START SLAVE'。
--character-sets-dir
字元集檔案的目錄
--comments
附加注釋資訊。預設為打開,可以用--skip-comments取消
--compact
導出更少的輸出資訊(用于調試)。去掉注釋和頭尾等結構。可以使用選項:--skip-add-drop-table --skip-add-locks --skip-comments --skip-disable-keys
--complete-insert(-c)
使用完整的insert語句(包含列名稱)。這麼做能提高插入效率,但是可能會受到max_allowed_packet參數的影響而導緻插入失敗。
--compress(-C)
在用戶端和伺服器之間啟用壓縮傳遞所有資訊
--create-options(-a)
在CREATE TABLE語句中包括所有MySQL特性選項。(預設為打開狀态)
--databases(-B)
導出幾個資料庫。參數後面所有名字參量都被看作資料庫名。
--default-character-set
設定預設字元集,預設值為utf8
--delayed-insert
采用延時插入方式(INSERT DELAYED)導出資料
--extended-insert(-e)
使用具有多個VALUES列的INSERT文法。這樣使導出檔案更小,并加速導入時的速度。預設為打開狀态,使用--skip-extended-insert取消選項。
--fields-terminated-by
導出檔案中忽略給定字段。與--tab選項一起使用,不能用于--databases和--all-databases選項
--fields-enclosed-by
輸出檔案中的各個字段用給定字元包裹。與--tab選項一起使用,不能用于--databases和--all-databases選項
--flush-logs
開始導出之前重新整理日志。
--flush-privileges
在導出mysql資料庫之後,發出一條FLUSH PRIVILEGES 語句。為了正确恢複,該選項應該用于導出mysql資料庫和依賴mysql資料庫資料的任何時候。
--force
在導出過程中忽略出現的SQL錯誤。
--hex-blob
使用十六進制格式導出二進制字元串字段。如果有二進制資料就必須使用該選項。影響到的字段類型有BINARY、VARBINARY、BLOB。
--insert-ignore
在插入行時使用INSERT IGNORE語句.
--lines-terminated-by
輸出檔案的每行用給定字元串劃分。與--tab選項一起使用,不能用于--databases和--all-databases選項。
--log-error
附加警告和錯誤資訊到給定檔案
--max_allowed_packet
伺服器發送和接受的最大包長度。
--net_buffer_length
TCP/IP和socket連接配接的緩存大小。
--no-create-db(-n)
隻導出資料,而不添加CREATE DATABASE 語句。
--no-create-info(-t)
隻導出資料,而不添加CREATE TABLE 語句。
--no-data(-d)
不導出任何資料,隻導出資料庫表結構。
--quick(-q)
不緩沖查詢,直接導出到标準輸出。預設為打開狀态,使用--skip-quick取消該選項。
--quote-names(-Q)
使用(`)引起表和列名。預設為打開狀态,使用--skip-quote-names取消該選項。
--replace
使用REPLACE INTO 取代INSERT INTO.
--set-charset
添加'SET NAMES default_character_set'到輸出檔案。預設為打開狀态,使用--skip-set-charset關閉選項。