新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > MySQL MyISAM和InNodb備份與恢復(fù)技巧

MySQL MyISAM和InNodb備份與恢復(fù)技巧

作者: 時間:2016-09-12 來源:網(wǎng)絡(luò) 收藏

在注釋中顯示日志的十六進制轉(zhuǎn)儲。該輸出可以幫助復(fù)制過程中的調(diào)試。在 5.1.2中添加了該選項。

本文引用地址:http://butianyuan.cn/article/201609/304118.htm

· --host=host_name,-h host_name

獲取給定主機上的服務(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

服務(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

該選項可以幫助點對點

· --stop-datetime=datetime

從二進制日志中第1個日期時間等于或晚于datetime參量的事件起停止讀。關(guān)于datetime值的描述參見--start-datetime選項。該選項可以幫助及時。

· --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ù)制已經(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 工具來維護表 。



關(guān)鍵詞: MySQL 備份 恢復(fù)

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉