一、問題描述
某項目客戶要求把阿里云上一臺ECS非核心的MySQL庫做備份,具體要求如下:
1、每天1:00對mysql數據庫進行完全備份。
2、備份文件存放到阿里云的NAS平臺上。
3、保留5天的備份副本。
TPS:
- 運行mysql的ECS的操作系統為windows 2012 64位
- mysql的版本為MariaDB 10.2
- 本地備份路徑在C:mysql_backup(因為只有一個系統盤,沒得選擇)
看似很簡單的問題,中間在實施過程中,還是遇到一些坑,特地作一下記錄,以備后續參考。
二、實施過程
2.1 編寫mysql的備份腳本
1、mysql的自動備份腳本
@echo off
set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%"
cd C:Program FilesMariaDB 10.2bin&&mysqldump -hlocalhost -uroot -p***** --single-transaction --opt --events --triggers --routines -B itsm > C:itop_mysql_backupitsm_%Ymd%.sql
forfiles /p "C:itop_mysql_backup" /s /m *.sql /d -5 /c "cmd /c del @path"
mysqldump參數說明:
- --single-transaction:該選項在導出數據之前提交一個BEGIN SQL語句,BEGIN 不會阻塞任何應用程序且能保證導出時數據庫的一致性狀態。它只適用于多版本存儲引擎,僅InnoDB。本選項和--lock-tables 選項是互斥的,因為LOCK TABLES 會使任何掛起的事務隱含提交。要想導出大表的話,應結合使用--quick 選項。
- --opt: 等同于--add-drop-table, --add-locks, --create-options, --quick, --extended-insert, --lock-tables, --set-charset, --disable-keys 該選項默認開啟, 可以用--skip-opt禁用.
- --event: 導出事件
- --triggers: 導出觸發器
- --routines:導出存儲過程以及自定義函數
forfiles參數說明:
- /p Path指定 Path,表明要從哪里開始搜索。默認的文件夾是當前工作目錄,該目錄通過鍵入句號 (.) 指定。注:絕對路徑應該包含在雙引號中,且路徑應該由反斜杠分割:example:"D:HOMEDesktop62backup"
- /m SearchMask
按照 SearchMask 搜索文件。默認的 SearchMask 是 *.*。
- /s
指示 forfiles 在子目錄中搜索。
- /c Command
在每個文件上運行指定的 Command。帶有空格的命令字符串必須用引號括起來。默認的 Command 是 "cmd /c echo @file"。
- /d[{+ | -}] [{MM/*DD/YYYY* | DD}]
選擇日期大于或等于 (+)(或者小于或等于 (-))指定日期的文件,其中 MM/*DD/YYYY* 是指定的日期,DD 是當前日期減去 DD 天。如果未指定 + 或-,則使用 +。DD 的有效范圍是 0 - 32768。
- /?
在命令提示符下顯示幫助。
2、設置腳本的靜默執行
mysql_bak.vbs,內容如下:
Set ws = CreateObject("Wscript.Shell")
ws.run "cmd /c mysql_bak.bat",vbhide
參數說明:
- mysql_bak.bat:mysql備份腳本文件名。
2.2 設置定時計劃
1、任務計劃--》創建基本任務
2、設置觸發器
3、設置操作
2.3 同步備份文件至NAS
1、安裝SyncBackPro軟件
2、創建任務
1)點擊添加按鈕,創建任務
2)選擇任務的類型
TPS:
- 備份:不會刪除目標端的文件,如果此文件在源端不存在的話。
- 同步:是雙向同步,最終兩邊的文件會達到一致。
- 鏡像:以源為標準,同步到目標源,如果目標端的文件在源中不存在,則目標端的文件會被刪除掉。
3)選擇同步文件的位置
4)選擇要同步的源文件夾和目標文件夾
3、創建定時計劃
1)創建計劃任務
2)設置計劃任務
三、注意事項
1、設置windows計劃時,操作階段,必須在“起始于”設置腳本的路徑,否則bat不能成功執行。具體如下圖所示:
附Windows系統tracert命令詳解
1:作用
tracert 是一個簡單的網絡診斷工具,可以列出分組經過的路由節點,以及它在IP 網絡中每一跳的延遲。(這里的延遲是指:分組從信息源發送到目的地所需的時間,延遲也分為許多的種類——傳播延遲、傳輸延遲、處理延遲、排隊延遲等,是大多數網站性能的瓶頸之一)
2:用法(可參看簡單實用的Windows命令(一))
tracert命令的格式為:tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] [-R] [-S srcaddr] [-4] [-6] target_name。
①、-d
表示不將地址解析成主機名。
②、-h maximum_hops
表示搜索目標的最大躍點數。
③、-j host-list
表示與主機列表一起的松散源路由(僅適用于IPv4)。
④、-w timeout
表示等待每個回復的超時間(以毫秒為單位)。
⑤、-R
表示跟蹤往返行程路徑(僅適用于IPv6)。
⑥、-S srcaddr
表示要使用的源地址(僅適用于IPv6)。
⑦、-4和-6
表示強制使用IPv4或者IPv6。
⑧、target_name
表示目標主機的名稱或者IP地址。
3:實例
命令執行結果的說明:
3-1:tracert命令用于確定 IP數據包訪問目標所采取的路徑,顯示從本地到目標網站所在網絡服務器的一系列網絡節點的訪問速度,最多支持顯示30個網絡節點。
3-2:最左側的,1,2,3,4~8,表明在我使用的寬帶(北京寬帶)上,經過7(不算自己本地的)個路由節點,可以到達百度的服務;如果是電信可能有不同;其他的IP,也有可能不同;各位可以自行測試一下;
3-3:中間的三列,單位是ms,表示我們連接到每個路由節點的速度,返回速度和多次鏈接反饋的平均值;
3-4:后面的IP,就是每個路由節點對應的IP,每個IP代表什么,各位可以通過 4(推薦的站長工具)去了解
3-5:如果返回消息是超時,則表示這個路由節點和當前我們使用的寬帶,是無法聯通的,至于原因,就有很多種了,比如:特意在路由上做了過濾限制,或者確實是路由的問題等,需要具體問題具體分析;
3-6:如果在測試的時候,大量的都是*和返回超時,則就說明這個IP,在各個路由節點都有問題
3-7:一般10個節點以內可以完成跟蹤的網站,訪問速度都是不錯的;10到15個節點之內才完成跟蹤的網站,訪問速度則比較差,如果超過30個節點都沒有完成跟蹤的網站,則可以認為目標網站是無法訪問的。
3-8:在Unix平臺上,traceroute 命令就相當于windows平臺上的 tracert 命令
4:推薦一個查詢IP或者域名信息的工具(http://tool.chinaz.com)






