1.編寫腳本
@title MySQL backup start
@echo off
setlocal enabledelayedexpansion
@color 0a
:: --------------------參數(shù)設置------------------------
:: 設置時間變量
set YEAR=%date:~0,4%
set MONTH=%date:~5,2%
set DAY=%date:~8,2%
:: 如果在 dos 下輸入 time 返回的不是 24 小時制(沒有 0 填充),請自行修改此處
set HOUR=%time:~0,2%
set MINUTE=%time:~3,2%
set SECOND=%time:~6,2%
set "Ymd=%YEAR%%MONTH%%DAY%"
:: 要備份的數(shù)據庫名稱,多個用空格分隔
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 FilesMySQLMySQL Server 5.7inmysqldump.exe"
:: WinRAR 自帶命令行工具的可執(zhí)行文件路徑,長文件名注意用 Dos 長文件名書寫方式
set WINRAR=C:Progra~1WinRARRar.exe
:: 備份天數(shù),會自動刪除30天之前的數(shù)據
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已存在,無需創(chuàng)建
) else (
echo 創(chuàng)建%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"
:: 備份
%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警告提示
該提示不影響文件生成,是一個不建議你在命令行中出現(xiàn)明文密碼的警告。
3.2參數(shù)釋義,括號中為簡寫
--host(-h)
需要導出的主機信息--port(-P)
連接數(shù)據庫端口號--user(-u)
指定連接的用戶名。--password(-p)
連接數(shù)據庫密碼--opt
等同于--add-drop-table, --add-locks, --create-options, --quick, --extended-insert, --lock-tables, --set-charset, --disable-keys 該選項默認開啟, 可以用--skip-opt禁用.--skip-opt
禁用–opt選項.--single-transaction
該選項在導出數(shù)據之前提交一個BEGIN SQL語句,BEGIN 不會阻塞任何應用程序且能保證導出時數(shù)據庫的一致性狀態(tài)。它只適用于多版本存儲引擎,僅InnoDB。本選項和--lock-tables 選項是互斥的,因為LOCK TABLES 會使任何掛起的事務隱含提交。要想導出大表的話,應結合使用--quick 選項。--protocol
使用的連接協(xié)議,包括:tcp, socket, pipe, memory.--all-tablespaces(-Y)
導出全部表空間。--tables
覆蓋--databases (-B)參數(shù),指定需要導出的表名。--no-tablespaces(-y)
不導出任何表空間信息。--ignore-table
不導出指定表。指定忽略多個表時,需要重復多次,每次一個表。每個表必須同時指定數(shù)據庫和表名。例如:--ignore-table=database.table1 --ignore-table=database.table2 ……--events(-E)
導出事件。--routines(-R)
導出存儲過程以及自定義函數(shù)。--lock-all-tables(-x)
提交請求鎖定所有數(shù)據庫中的所有表,以保證數(shù)據的一致性。這是一個全局讀鎖,并且自動關閉--single-transaction 和--lock-tables 選項。--lock-tables(-l)
開始導出前,鎖定所有表。用READ LOCAL鎖定表以允許MyISAM表并行插入。對于支持事務的表例如InnoDB和BDB,--single-transaction是一個更好的選擇,因為它根本不需要鎖定表。請注意當導出多個數(shù)據庫時,--lock-tables分別為每個數(shù)據庫鎖定表。因此,該選項不能保證導出文件中的表在數(shù)據庫之間的邏輯一致性。不同數(shù)據庫表的導出狀態(tài)可以完全不同。--add-drop-database
每個數(shù)據庫創(chuàng)建之前添加drop數(shù)據庫語句。--add-drop-table
每個數(shù)據表創(chuàng)建之前添加drop數(shù)據表語句。(默認為打開狀態(tài),使用--skip-add-drop-table取消選項)--add-locks
在每個表導出之前增加LOCK TABLES并且之后UNLOCK TABLE。(默認為打開狀態(tài),使用--skip-add-locks取消選項)--allow-keywords
允許創(chuàng)建是關鍵詞的列名字。這由表名前綴于每個列名做到。--apply-slave-statements
在'CHANGE MASTER'前添加'STOP SLAVE',并且在導出的最后添加'START SLAVE'。--character-sets-dir
字符集文件的目錄--comments
附加注釋信息。默認為打開,可以用--skip-comments取消--compact
導出更少的輸出信息(用于調試)。去掉注釋和頭尾等結構??梢允褂眠x項:--skip-add-drop-table --skip-add-locks --skip-comments --skip-disable-keys--complete-insert(-c)
使用完整的insert語句(包含列名稱)。這么做能提高插入效率,但是可能會受到max_allowed_packet參數(shù)的影響而導致插入失敗。--compress(-C)
在客戶端和服務器之間啟用壓縮傳遞所有信息--create-options(-a)
在CREATE TABLE語句中包括所有MySQL特性選項。(默認為打開狀態(tài))--databases(-B)
導出幾個數(shù)據庫。參數(shù)后面所有名字參量都被看作數(shù)據庫名。--default-character-set
設置默認字符集,默認值為utf8--delayed-insert
采用延時插入方式(INSERT DELAYED)導出數(shù)據--extended-insert(-e)
使用具有多個VALUES列的INSERT語法。這樣使導出文件更小,并加速導入時的速度。默認為打開狀態(tài),使用--skip-extended-insert取消選項。--fields-terminated-by
導出文件中忽略給定字段。與--tab選項一起使用,不能用于--databases和--all-databases選項--fields-enclosed-by
輸出文件中的各個字段用給定字符包裹。與--tab選項一起使用,不能用于--databases和--all-databases選項--flush-logs
開始導出之前刷新日志。--flush-privileges
在導出mysql數(shù)據庫之后,發(fā)出一條FLUSH PRIVILEGES 語句。為了正確恢復,該選項應該用于導出mysql數(shù)據庫和依賴mysql數(shù)據庫數(shù)據的任何時候。--force
在導出過程中忽略出現(xiàn)的SQL錯誤。--hex-blob
使用十六進制格式導出二進制字符串字段。如果有二進制數(shù)據就必須使用該選項。影響到的字段類型有BINARY、VARBINARY、BLOB。--insert-ignore
在插入行時使用INSERT IGNORE語句.--lines-terminated-by
輸出文件的每行用給定字符串劃分。與--tab選項一起使用,不能用于--databases和--all-databases選項。--log-error
附加警告和錯誤信息到給定文件--max_allowed_packet
服務器發(fā)送和接受的最大包長度。--net_buffer_length
TCP/IP和socket連接的緩存大小。--no-create-db(-n)
只導出數(shù)據,而不添加CREATE DATABASE 語句。--no-create-info(-t)
只導出數(shù)據,而不添加CREATE TABLE 語句。--no-data(-d)
不導出任何數(shù)據,只導出數(shù)據庫表結構。--quick(-q)
不緩沖查詢,直接導出到標準輸出。默認為打開狀態(tài),使用--skip-quick取消該選項。--quote-names(-Q)
使用(`)引起表和列名。默認為打開狀態(tài),使用--skip-quote-names取消該選項。--replace
使用REPLACE INTO 取代INSERT INTO.--set-charset
添加'SET NAMES default_character_set'到輸出文件。默認為打開狀態(tài),使用--skip-set-charset關閉選項。--dump-date
將導出時間添加到輸出文件中。默認為打開狀態(tài),使用--skip-dump-date關閉選項。--tab(-T)
為每個表在給定路徑創(chuàng)建tab分割的文本文件。注意:僅僅用于mysqldump和mysqld服務器運行在相同機器上。--triggers
導出觸發(fā)器。該選項默認啟用,用--skip-triggers禁用它。
本文摘自 :https://www.cnblogs.com/