記錄一次mysql binlog 恢復資料的操作

2021-10-06 10:24:07 字數 1388 閱讀 1777

由於公司人員的一次大意操作,把乙個只有表結構的空表,覆蓋了線上的資料庫。直接把生產系統上的資料庫給覆蓋了,生產資料全部沒了。而碰巧的是這個新的資料庫還沒有進行每天的備份,直接炸鍋.

幸好有binlog,在這裡記錄一下恢復過程.

1 先把生產線上的binlog 複製到了測試機器和本地上面。防止意外情況發生binlog破壞或者丟失.

2 在測試機器建立和破壞掉的資料庫一樣的表結構.

3 利用mysqlbinlog 命令進行對資料庫的還原

3.1 binlog檔案在的目錄一般是在/var/lib/mysql/ 這個資料夾下面

3.2 執行mysqlbinlog 命令本機器是在/usr/bin/ 目錄下面

3.3 執行命令

mysqlbinlog  --no-defaults --database=【資料庫名稱】【binlog檔案路徑】 | mysql -u【mysql使用者名稱】 -p【mysql使用者密碼】 -v 【資料庫名】

例子:

/usr/bin/mysqlbinlog --no-defaults  --set-charset=utf8 --database=db_mjm_015 /var/lib/mysql/mysql-binlog.|mysql -uroot -p123456 -v db_mjm_015
4 如果binlog 檔案都在,即把每個binlog 檔案都按照如上面進行執行.

binlog 只是對執行過的sql做記錄操作,中間可能因為滾動或者覆蓋而丟失一部分資料.

以上就是恢復的過程.

mysql 最好要開啟binlog 不然真的有那一天mysql 沒有進行備份,那麼恰巧mysql又出現了意外操作,那是真的頭大.

mysql 開啟binlog 步驟

搜尋my.cnf 檔案  命令 locate my.cnf

在my.cnf 檔案裡面配置

log_bin=on  

log_bin_index=/var/lib/mysql/mysql-bin.index  (此檔案就是乙個記錄,記錄了所有的binlog的檔案)

配置好後進行資料庫的重啟

service mysql stop  

service mysql start

下面一些是binlog的操作命令

在mysql裡面執行

show master logs (可以檢視binlogs)

/usr/bin/mysqlbinlog --no-defaults --base64-output=decode-rows -v --start-position='4' --stop-position='1000' /mysql_bin_log/mysql-bin.000046 >/mysql_bin_log/00046.out
可以把對應的開始位置和結束位置的binlog二進位制檔案輸出到文字裡面進行檢視操作

記錄一次面試

怎麼觀察系統中 記憶體 行為 a.通過 proc zoneinfo 檔案,可以看到 free high low min pages 關係 free high 時候 一般不開啟 kswapd 執行緒 high free low 時,開啟 kswapd 執行緒 low free min時,alloc p...

記錄一次oracle使用記錄

使用oracle資料庫的專案到我這邊,需要修改,咱雖然 學過 oracle,但那畢竟已經過去了。哈哈。使用database configuration assistant 建立資料庫,建立快完的時候,說我沒有監聽啥的,然後 通過 net manager 建立了,qizhong1 其中選中的那個就是建...

記錄一次ko編譯

最近接觸乙個專案,需要編譯ko檔案,從來沒有接觸過,先問自己四個問題 什麼是ko檔案 ko檔案是kernel object檔案 核心模組 該檔案的意義就是把核心的一些功能移動到核心外邊,需要的時候插入核心,不需要時解除安裝。如何製作ko檔案 環境配置 1.export path path media...