MySQL MyISAM和InNodb備份與恢復(fù)技巧
在注釋中顯示日志的十六進制轉(zhuǎn)儲。該輸出可以幫助復(fù)制過程中的調(diào)試。在MySQL 5.1.2中添加了該選項。
本文引用地址:http://butianyuan.cn/article/201609/304118.htm· --host=host_name,-h host_name
獲取給定主機上的MySQL服務(wù)器的二進制日志。
· --local-load=path,-l pat
為指定目錄中的LOAD DATA INFILE預(yù)處理本地臨時文件。
· --offset=N,-o N
跳過前N個條目。
· --password[=password],-p[password]
當連接服務(wù)器時使用的密碼。如果使用短選項形式(-p),選項和 密碼之間不能有空格。如果在命令行中--password或-p選項后面沒有 密碼值,則提示輸入一個密碼。
· --port=port_num,-P port_num
用于連接遠程服務(wù)器的TCP/IP端口號。
· --position=N,-j N
不贊成使用,應(yīng)使用--start-position。
· --protocol={TCP | SOCKET | PIPE | -position
使用的連接協(xié)議。
· --read-from-remote-server,-R
從MySQL服務(wù)器讀二進制日志。如果未給出該選項,任何連接參數(shù)選項將被忽略。這些選項是--host、--password、--port、--protocol、--socket和--user。
· --result-file=name, -r name
將輸出指向給定的文件。
· --short-form,-s
只顯示日志中包含的語句,不顯示其它信息。
· --socket=path,-S path
用于連接的套接字文件。
· --start-datetime=datetime
從二進制日志中第1個日期時間等于或晚于datetime參量的事件開始讀取。datetime值相對于運行mysqlbinlog的機器上的本地時區(qū)。該值格式應(yīng)符合DATETIME或TIMESTAMP數(shù)據(jù)類型。例如:
shell> mysqlbinlog --start-datetime=2004-12-25 11:25:56 binlog.000003
該選項可以幫助點對點恢復(fù)。
· --stop-datetime=datetime
從二進制日志中第1個日期時間等于或晚于datetime參量的事件起停止讀。關(guān)于datetime值的描述參見--start-datetime選項。該選項可以幫助及時恢復(fù)。
· --start-position=N
從二進制日志中第1個位置等于N參量時的事件開始讀。
· --stop-position=N
從二進制日志中第1個位置等于和大于N參量時的事件起停止讀。
· --to-last-logs,-t
在MySQL服務(wù)器中請求的二進制日志的結(jié)尾處不停止,而是繼續(xù)打印直到最后一個二進制日志的結(jié)尾。如果將輸出發(fā)送給同一臺MySQL服務(wù)器,會導(dǎo)致無限循環(huán)。該選項要求--read-from-remote-server。
· --disable-logs-bin,-D
禁用二進制日志。如果使用--to-last-logs選項將輸出發(fā)送給同一臺MySQL服務(wù)器,可以避免無限循環(huán)。該選項在崩潰恢復(fù)時也很有用,可以避免復(fù)制已經(jīng)記錄的語句。注釋:該選項要求有SUPER權(quán)限。
· --user=user_name,-u user_name
連接遠程服務(wù)器時使用的MySQL用戶名。
· --version,-V
顯示版本信息并退出。
還可以使用--var_name=value選項設(shè)置下面的變量:
· open_files_limit
指定要保留的打開的文件描述符的數(shù)量。
4. InnoDB 表備份/恢復(fù)策略
4.1. 使用商業(yè)的在線熱備份工具
InnoDB Hotbackup 是一個在線備份工具,你可以用它來在InnoDB數(shù)據(jù)庫運行之時備份你的InnoDB數(shù)據(jù)庫。InnoDB 熱備份工具 不要求你關(guān)閉數(shù)據(jù)庫,并且它不設(shè)置任何鎖定或干擾你正常的數(shù)據(jù)庫處理。InnoDB 熱備份工具 是非免費(商業(yè)的)附加軟件,它每年的證書費用是每臺MySQL服務(wù)器運行的計算機390歐元。
具體使用方法可以參考相關(guān)文檔,我也沒有使用過這個工具。
4.2. 使用mysqldump 熱備份
Mysqldump提供對InnoDB非物理的在線邏輯熱備份。
使用方法與備份MyISAM時一樣。
4.3. 使用select into 熱備份單個/多個表
可以使用select into備份一個或多個表,用法與MyISAM表相同。
4.4. 二進制冷備份
如果你可以關(guān)閉你的MySQL服務(wù)器,你可以生成一個包含InnoDB用來管理它的表的所有文件的二進制備份。使用如下步驟:
1. 關(guān)閉MySQL服務(wù)器,確信它是無錯誤關(guān)閉。
2. 復(fù)制你所有數(shù)據(jù)文件(ibdata文件和.ibd文件)到一個安全的地方。
3. 復(fù)制你所有ib_logfile文件到一個安全的地方。
4. 復(fù)制my.cnf配置文件或文件到一個安全的地方。
5. 為你InnoDB表復(fù)制.frm文件到一個安全的地方。
4.5. InnoDB 表恢復(fù)
1、 先嘗試使用InnoDB的日志自動恢復(fù)功能,方法是重啟mysql服務(wù)。
2、 在一些情況下,明顯地數(shù)據(jù)庫損壞是因為操作系統(tǒng)損壞它自己的文件緩存,磁盤上的數(shù)據(jù)可能完好,最好是首先重啟計算機。它可以消除那些顯得是數(shù)據(jù)庫頁損壞的錯誤。
如果不行,則采用下面的方法進行恢復(fù)。
3、 如果是mysqldump做的完全備份,先恢復(fù)完全備份,然后再恢復(fù)完全備份后的增量日志備份。
4、 如果是采用select into備份表的話,則采用load data或mysqlimport恢復(fù)。
5、 如果是采用二進制冷備份做的完全備份,則先停止mysql服務(wù),覆蓋備份的二進制文件,然后執(zhí)行上次完全備份后的增量日志備份。
6、 注意:InnoDB二進制文件沒有MyISAM那么好,必須在相同的浮點數(shù)的cpu機器上移植。
5. MyISAM/InnoDB 備份/恢復(fù)策略
因為在一個數(shù)據(jù)庫中有可能要同時使用MyISAM和InnoDB兩種引擎,因此統(tǒng)一考慮他們的備份/恢復(fù)策略。
1、 完整備份采用mysqldump。
2、 增量備份采用bin-log日志。
3、 單表備份采用select into。
4、
6. 定期維護表
雖然MySQL提供了多種備份/恢復(fù)手段,但是定期維護表大大可以降低表毀壞的可能性,并且可以提高查詢性能。
1、對于InnoDB引擎,你可以使用innodb_tablespace_monitor來檢查表空間文件內(nèi)文件空間管理的完整性。
2、對于MyISAM引擎,可以通過sql語句或myisamchk 工具來維護表 。
評論