mysql的binlog進行資料恢復

2021-07-26 12:40:18 字數 3253 閱讀 4526

如何開啟binlog?

首先我們可以進入mysql輸入命令

show variables 

like

'%bin%'

我們可以通過這個命令來查詢關於binlog相關的設定,其中有乙個log_bin選項,如果為off,那麼證明我們的binlog沒有開啟,如果為on證明我們的binlog已經開啟,開啟binlog的方法很簡單,只需要開啟mysql的配置檔案my.ini(也可能是my.cnf),找到log-bin,去掉前面的#號,如果沒有該選項,則可以手動新增。

log-bin=mysql-bin

其中mysql-bin就是日誌檔案的名稱了,日誌檔案的名稱和路徑都可以自定義,如果不配置路徑和名稱,那麼該檔案會出現在mysql/data目錄下,名稱為mysql-bin.******。

新增完成後重啟mysql,我們就會在mysql/data目錄下找到binlog日誌檔案了,首次使用binlog的時候會出現兩個檔案,乙個是mysql-bin.000001,乙個是mysql-bin.index,其中,000001結尾的檔案就是我們需要的日誌檔案,它包含了我們資料庫的所有增,改,刪操作(查詢操作不做記錄),以index結尾的檔案是索引檔案,包含了所有的以000***結尾的日誌檔案。

開啟binlog後mysql會自動為了記錄以後增,改,刪操作,關於備份操作無需我們手動操作,我們只要在需要恢復資料的時候查詢對應的資料即可,由於binlog儲存的格式為二進位制,因此我們無法直接使用,需要借助mysql提供的工具mysqlbinlog(mysqlbinlog在mysql安裝目錄下的bin目錄下)。初次接觸乙個命令不知道如何使用的時候,我們可以通過幫助命令檢視它如何使用

如何使用mysqlbinlog查詢操作記錄?

1.讀取所有資料庫的操作

[sql]view plain

copy

mysqlbinlog /alidata/server/mysql-5.5.40/data/mysql-bin.000001  

通過該命令,我們可以看到該日誌檔案中記錄的所有資料庫的增,該,刪操作。

2.查詢指定資料庫的操作

[sql]view plain

copy

mysqlbinlog 

--database=test /alidata/server/mysql-5.5.40/data/mysql-bin.000001

通過該命令,我們可以查詢資料庫名稱為test的增,該,刪操作

3.查詢指定位置的操作

binlog每次進行記錄的時候都會為其標註乙個position,用於標識該操作所在的位置,與之相關的引數為--start-position(開始位置)和--stop-position(結束位置),我們可以通過position進行指定操作的查詢。只需要在mysql中使用show binlog events in 'logname'即可,每一行都記錄了一條操作,其中pos就是該操作的start-position,end_log_pos就是stop-position。我們如果需要查詢上述中的操作,可以使用以下語句:

mysqlbinlog 

--start-position=4 --stop-position=98 --database=test 

/alidata/server/mysql-5.5.40/data/mysql-bin.000001

4.查詢指定時間的操作

除了有位置標識外,binlog還有時間標識,引數為--start-datetime(開始時間)和--stop-datetime(結束時間),如果想要查詢某個時間段的操作,可以使用該引數。

[sql]view plain

copy

mysqlbinlog 

--start-datetime="2015-08-08 10:00:00" --stop-datetime="2015-08-08 12:00:00" /alidata/server/mysql-5.5.40/data/mysql-bin.000001

常用的查詢操作也就這麼多了,查詢操作不是我們的目的,恢復記錄才是我們的目的,一切的查詢都是為了恢復。

恢復資料

使用mysqlbinlog進行查詢帶恢復

mysqlbinlog 

--start-position=4 --stop-position=98 /alidata/server/mysql-5.5.40/data/mysql-bin.000001 | mysql -u root -p

匯出到sql裡恢復

mysqlbinlog --database=test /alidata/server/mysql-5.5.40/data/mysql-bin.000001 > /alidata/server/mysql-5.5.40/data/1.sql

注意事項

1.每當重啟mysql的時候,都會自動生成乙個新的binlog檔案,恢復資料的時候首先確定需要恢復的資料在哪個日誌檔案中,然後查詢對應binlog檔案進行資料恢復。

2.binlog分別記錄了乙個操作的起始位置pos和結束位置end_log_pos,當起始位置和終止位置都選擇正確的時候,恢復的資料才會正確,尤其是當進行連續的多行記錄進行恢復的時候,對於stop-position的選擇一定要注意,最後一行的end_log_pos才是我們需要的。

3.使用show binlog events的時候預設指定的是第乙個二進位制檔案,如果想要檢視其它的二進位制檔案,可以使用show binlog events in 'logname',其中logname是個字串,不要忘記帶上引號,否則會出錯。

windoews下檢視mysql二進位制日誌

d:\phpstudy\mysql\bin\mysqlbinlog.exe d:\phpstudy\mysql\data\mysql-bin.000003 > c:\users\hp\desktop\3.sql

d:\phpstudy\mysql\bin\mysqlbinlog.exe --database=test d:\phpstudy\mysql\data\mysql-bin.000002 > c:\users\hp\desktop\4.sql

d:\phpstudy\mysql\bin\mysqlbinlog.exe --start-position=107 --stop-position=273 d:\phpstudy\mysql\data\mysql-bin.000002 | d:\phpstudy\mysql\bin\mysql.exe -u root -p

Mysql利用bin log進行資料恢復

mysql利用bin log進行資料恢復 線上的資料都很重要,但也會難免有時候有誤刪除的操作,這時候要在第一時間進行資料恢復。首先,要確保mysql開啟了binlog日誌功能,在 etc my.cnf檔案裡的 mysqld 區塊新增 log bin mysql bin。然後重啟mysql服務。將備份...

使用mysql進行資料降維

樣例判斷匹配 select t.name,case t.when 1 then 男 when 0 then 女 else 未知 end 性別 from t customer t 指定檢視某個庫的某個表的所有字段 select distinct column name from information...

mysql之用萬用字元進行資料過濾

最常使用的萬用字元是百分號 在搜尋串中,表示任何字元出現 任意次數。如 select img from h info where img like assets 萬用字元可在搜尋模式中任意位置使用,並且可以使用多個萬用字元。下面的例子使用兩個萬用字元,它們位於模式的兩端 如 select img f...