標籤:文本 alt 開始 cto from 狀態 out base64 pre
基於時間點與位置恢複
利用二進位日誌可以實現基於時間與位置的恢複,例如由於誤操作刪除了一張表,這時候完全恢複是沒用的,因為日誌裡面還是存在錯誤語句,我們需要的是恢複到誤操作之前的狀態,然後跳過誤操作資料,再恢複後面動作陳述式
假定需要往裡資料庫中插入兩條資料,但由於誤操作,兩條插入語句中間刪除了條資料,而這條資料不應該刪除的。
create database cai; //建立新資料了 建立表 ,並且寫入兩行化開啟二進位日誌完全備份一次mysqladmin -u root -p flush-log //組建記錄檔檔案,此內容為添加的zhangsan,lisi的資訊mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000002 > /opt/info.txt //將二進位檔案解密後產生生一個新的文字檔.txt
當覺得操作有風險的時候可以考錄是用基於時間點恢複日誌 當然還是要開啟二進位日誌
解密後產生的文本
mysqlbinlog --no-defaults --bases64-output=decode-rows -v mysql-bin.000002 >/opt/info.txt //把解密後二進位檔案重建一個文字文件vim /opt/infon.txt //查看裡面需要的參數/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;........./////省略 時間點 操作了對info表進行了添加# at 341 //標記號 也可以居位置標記號恢複 也可也基於時間點恢複180707 12:05:31 server id 1 end_log_pos 391 CRC32 0x7a99109e Write_rows: table id 108 flags: STMT_END_F### INSERT INTO `cai`.`info`### SET### @1=‘xiaokeai01‘### @2=88.00# at 391#180707 12:05:31 server id 1 end_log_pos 422 CRC32 0x8be308f6 Xid = 35錯誤標記號 時間點# at 609#180707 12:06:12 server id 1 end_log_pos 657 CRC32 0xe5821dc6 Delete_rows: table id 108 flags: STMT_END_F### DELETE FROM `cai`.`info`### WHERE### @1=‘zhangsan‘### @2=88.00# at 657正確操作 標記號 時間點# at 875#180707 12:06:16 server id 1 end_log_pos 925 CRC32 0x60ef5b40 Write_rows: table id 108 flags: STMT_END_F### INSERT INTO `cai`.`info`### SET### @1=‘xiaokeai02‘### @2=88.00# at 925
基於時間點進行恢複
mysqlbinlog --no-defaults --stop-datetime=‘2018-07-07 12:06:12‘ /usr/local/mysql/data/mysql-bin.000002 | mysql -u root -p //基於時間恢複 從開頭到指定的時間停止 之前的都會執行操作mysqlbinlog --no-defaults --start-datetime=‘2018-07-07 12:06:16‘ /usr/local/mysql/data/mysql-bin.000002 | mysql -u root -p //基於正確的時間恢複 從指定的時間點到結尾都會執行操作
基於行號恢複
mysqlbinlog --no-defaults --stop-position=‘558‘ /usr/local/mysql/data/mysql-bin.000002 | mysql -u root -p //錯誤操作 從開頭的內容一直碰到 指定的錯誤行號便會停下 之前的都會執行mysqlbinlog --no-defaults --stop-position=‘558‘ /usr/local/mysql/data/mysql-bin.000002 | mysql -u root -p //正確操作 從指定的正確的行號到結尾都會執行# at 558 //標記號 stop--position=‘558‘ #180707 12:06:12 server id 1 end_log_pos 609 CRC32 0xcf4ae275 Table_map: `cai`.`info` mapped to number 108# at 609 ///誤刪標記行開始#180707 12:06:12 server id 1 end_log_pos 657 CRC32 0xe5821dc6 Delete_rows: table id 108 flags: STMT_END_F### DELETE FROM `cai`.`info`### WHERE### @1=‘zhangsan‘### @2=88.00# at 657 //正確行開始 start
MySQL 基於時間點與位置恢複