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