MySQL學習筆記之十五 更新日誌檔案恢復資料

2021-06-22 08:50:17 字數 1388 閱讀 6820

你不可能隨時備份資料,但你的資料丟失時,或者資料庫目錄中的檔案損壞時,你只能恢復已經備份的檔案,而在這之後的插入或更新的資料,就無能為力了。解決這個問

題,就必須使用更新日誌。更新日誌可以實時記錄更新、插入和刪除記錄的sql語句。

一、啟用日誌

當以--log-update=file_name選項啟動時,mysqld將所有更新資料的sql命令寫入記錄檔案中。檔案被寫入資料目錄並且有乙個名字file_name.#,這裡#是乙個數字,它在每次

執行mysqladmin refresh或mysqladmin flush-logs、flush logs語句、或重啟伺服器時加1。

如果你不指定file_name,預設使用伺服器的主機名。

如果你在檔案命中指定副檔名,那麼更新日誌不再使用順序檔案,使用指定的檔案。但是當你它在每次執行mysqladmin refresh或mysqladmin flush-logs、flush logs語句、

或重啟伺服器時日誌檔案被清空。

更新記錄很聰明,因為它僅僅記載真正更新資料的語句。因此乙個用where的update或delete找不到行,它就不被寫入記錄檔案。它甚至跳過將設定乙個列為它已經有的值的

update語句。

二、重寫日誌

必須著重指出的是,在下列情況之一,將使用新的日誌檔案——日誌檔案的順序自動增加(未指定file_name或者指定的file_name不包括副檔名)或者清空檔案(指定的

file_name包括副檔名):

命令mysqladmin refresh

命令mysqladmin flush-logs

sql語句flush logs

伺服器重新啟動

三、恢復日誌內容

對於所有的更新日誌檔案,你都可以把它指定為mysql客戶機的輸入,來執行其中的sql語句,恢復資料。例如:

shell>mysql

但是,你可能因為執行drop database誤刪除了,希望只恢復該資料庫的內容,為了這個目的,你可以使用--one-database選項:

shell>mysql --one-database db_name < hostname.nnn

如果你要批量恢復更新日誌的資料,在unix中可以這樣:

$ ls –t –r –l hostname.[0-9]* | xargs cat | mysql --one-database db_name

注意由於檔案是按時間時間排序的,如果你修改的其中的任何檔案,都會因為順序的錯誤導致可能匯入錯誤的資料。

如果按檔案順序恢復資料,就去掉-t和-r選項:

$ ls -l hostname.[0-9]* | xargs cat | mysql --one-database db_name

OpenCV學習筆記(十五)之凸包

老規矩 妹妹鎮樓 輸入候選點,來自findcontours outputarray hull,凸包 bool clockwise,順時針方向 bool returnpoints,true表示返回點個數,如果第二個引數是vector則自動忽略 首先把影象從rgb轉為灰度影象 轉為二值影象 通過發現輪廓...

《設計模式之禪》學習筆記(十五)

命令模式的定義 encapsulat a request as an object,thereby letting you parameterize clients with different requests,queue or log requests,and support undoable ...

Mysql學習筆記(持續更新中)

1.資料型別的選擇原則 1.不好的設計 1.正規化的優點 1.有時提公升效能最好的方法是同一張表中儲存衍生的冗餘資料,有時也需要建立一張完全獨立的彙總表或快取表 2.物化檢視,mysql並不原生支援,flexviews 3.如果應用在表中儲存計數器,則在更新計數器時可能踫到併發問題,建立一張獨立的表...