欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > mysql如何利用binlog進行數據恢復詳解

mysql如何利用binlog進行數據恢復詳解

熱門標簽:電銷機器人針對的 高德地圖標注模式 外呼系統防封號違法嗎 外呼系統服務 400電話辦理都選易號網 湘潭電銷機器人咨詢電話 如何在高德地圖標注新地址 高德地圖標注中心個人注冊 寶應電信400電話辦理費用

前言

最近線上誤操作了一個數據,由于是直接修改的數據庫,所有唯一的恢復方式就在mysql的binlog。binlog使用的是ROW模式,即受影響的每條記錄都會生成一個sql。同時利用了binlog2sql項目。

MySQL Binary Log也就是常說的bin-log, ,是mysql執行改動產生的二進制日志文件,其主要作用有兩個:

* 數據回復

* 主從數據庫。用于slave端執行增刪改,保持與master同步。

binlog基本配置和格式

binlog基本配置

binlog需要在mysql的配置文件的mysqld節點中進行配置:

# 日志中的Serverid
server-id = 1
# 日志路徑
log_bin  = /var/log/mysql/mysql-bin.log
# 保存幾天的日志
expire_logs_days = 10
# 每個binlog的大小
max_binlog_size = 1000M
#binlgo模式
binlog_format=ROW
# 默認是所有記錄,可以配置哪些需要記錄,哪些不記錄
#binlog_do_db = include_database_name
#binlog_ignore_db = include_database_name

查看binlog狀態

  • SHOW BINARY LOGS; 查看binlog文件
  • SHOW VARIABLES LIKE '%log_bin%' 查看日志狀態
  • SHOW MASTER STATUS 查看日志文件位置

binlog的三種格式

1.ROW

針對行記錄日志,每行修改產生一條記錄。

優點:上下文信息比較全,恢復某條誤操作時可以直接在日志中查找到原文信息,對于主從復制支持好。

缺點:輸出非常大,如果是Alter語句將產生大量的記錄

格式如下:

DELETE FROM `back`.`sys_user` WHERE `deptid`=27 AND `status`=1 AND `account`='admin' AND `name`='張三' AND `phone`='18200000000' AND `roleid`='1' AND `createtime`='2016-01-29 08:49:53' AND `sex`=2 AND `email`='sn93@qq.com' AND `birthday`='2017-05-05 00:00:00' AND `avatar`='girl.gif' AND `version`=25 AND `password`='ecfadcde9305f8891bcfe5a1e28c253e' AND `salt`='8pgby' AND `id`=1 LIMIT 1; #start 4 end 796 time 2018-10-12 17:03:19

2.STATEMENT

針對sql語句的,每條語句產生一條記錄

優點:產生的日志量比較小,主從版本可以不一致

缺點:主從有些語句不能支持,像自增主鍵和UUID這種類型的

格式如下:

delete from `sys_role`;

3.MIX

結合了兩種的優點,一般情況下都采用STATEMENT模式,對于不支持的語句采用ROW模式

轉換成sql

mysql自帶的mysqlbinlog

由于binlog是二進制的,所以需要先轉換成文本文件,一般可以采用Mysql自帶的mysqlbinlog轉換成文本。

mysqlbinlog --no-defaults --base64-output='decode-rows' -d room -v mysql-bin.011012 > /root/binlog_2018-10-10

參數說明

  • --no-defaults 為了防止報錯:mysqlbinlog: unknown variable 'default_character_set=utf8mb4'
  • --base64-output='decode-rows' 和-v一起使用, 進行base64解碼
    其他有很多用來限定范圍的參數,比如數據庫,起始時間,起始位置等等。這些參數在查找誤操作的時候非常有用。

binlog的基本塊如下:

# at 417750
#181007 1:50:38 server id 1630000 end_log_pos 417844 CRC32 0x9fc3e3cd Query thread_id=440109962 exec_time=0 error_code=0
SET TIMESTAMP=1538877038/*!*/;
BEGIN

1、# at 417750

指明的當前位置相對文件開始的偏移位置,這個在mysqlbinlog命令中可以作為--start-position的參數

2、#181007 1:50:38 server id 1630000 end_log_pos 417844 CRC32 0x9fc3e3cd Query thread_id=440109962 exec_time=0 error_code=0

181007 1:50:38指明時間為18年10月7號1:50:38,serverid也就是你在配置文件中的配置的,end_log_pos 417844,這個塊在417844結束。thread_id執行的線程id,exec_time執行時間,error_code錯誤碼

3、SET TIMESTAMP=1538877038/!/;

BEGIN

具體的執行語句

一行記錄產生的日志如下所示

# at 417750
#181010  9:50:38 server id 1630000  end_log_pos 417844 CRC32 0x9fc3e3cd     Query   thread_id=440109962 exec_time=0 error_code=0
SET TIMESTAMP=1539136238/*!*/;
BEGIN
/*!*/;
# at 417844
#181010  9:50:38 server id 1630000  end_log_pos 417930 CRC32 0xce36551b     Table_map: `goods`.`good_info` mapped to number 129411
# at 417930
#181010  9:50:38 server id 1630000  end_log_pos 418030 CRC32 0x5827674a     Update_rows: table id 129411 flags: STMT_END_F
### UPDATE `goods`.`good_info`
### WHERE
###   @1='2018:10:07' /* DATE meta=0 nullable=0 is_null=0 */
###   @2=9033404 /* INT meta=0 nullable=0 is_null=0 */
###   @3=1 /* INT meta=0 nullable=0 is_null=0 */
###   @4=8691108 /* INT meta=0 nullable=0 is_null=0 */
###   @5=9033404 /* INT meta=0 nullable=0 is_null=0 */
###   @6=20 /* LONGINT meta=0 nullable=0 is_null=0 */
###   @7=1538877024 /* TIMESTAMP(0) meta=0 nullable=0 is_null=0 */
### SET
###   @1='2018:10:07' /* DATE meta=0 nullable=0 is_null=0 */
###   @2=9033404 /* INT meta=0 nullable=0 is_null=0 */
###   @3=1 /* INT meta=0 nullable=0 is_null=0 */
###   @4=8691108 /* INT meta=0 nullable=0 is_null=0 */
###   @5=9033404 /* INT meta=0 nullable=0 is_null=0 */
###   @6=21 /* LONGINT meta=0 nullable=0 is_null=0 */
###   @7=1538877024 /* TIMESTAMP(0) meta=0 nullable=0 is_null=0 */
# at 418030
#181010  9:50:38 server id 1630000  end_log_pos 418061 CRC32 0x468fb30e     Xid = 212760460521
COMMIT/*!*/;
# at 418061

一行記錄產生的日志如上所示。以SET TIMESTAMP=1539136238/*!*/;開始,以COMMIT/*!*/;結尾。我們可以根據兩個at指明的位置來限定范圍。

注意一條記錄開始的SET TIMESTAMP之前的# at 417750和結尾的COMMIT之后的# at 418061

利用binlog2sql

binlog2sql官網介紹:從MySQL binlog解析出你要的SQL。根據不同選項,你可以得到原始SQL、回滾SQL、去除主鍵的INSERT SQL等。

基本使用如下:

python binlog2sql.py -hlocalhost -P3306 -udev -p'\*' -d room -t room_info --start-file='mysql-bin.011012' --start-position 129886892 --stop-position 130917280 > rollback.sql

具體的使用我就不講解了github上講解的十分清楚,主要看下很多用來篩選的條件,比如起止時間--start-datetime/--stop-datetime,表名限定-t,數據庫限定-d,語句限定--sql-type,主要說說我遇到的一些問題。

mysql的binlog模式

這里需要設置為ROW,因為ROW模式有原來的信息,如果可以直接利用binlog2sql反向生成回滾sql,如果是STATEMENT無法生成,需要利用的mysql定時備份的文件再去做回滾

恢復數據的具體操作

因為當時線上執行的是一條update語句,沒有唯一鍵索引的。導致有兩千多條記錄被更新。語句如下:

update room_info set status=1 where status=2;
  • 根據操作時間先定位對應的binlog文件
    我記得當時操作的時間大概的是上午9多左右,所以去找對應的binlog文件最后修改時間大于9點并且時間最接近的一個文件。使用linux的ll命令查看文件的修改時間。
  • 篩選具體的數據庫
    因為一個mysql實例的所有binlog文件是在一個文件中的,所以我們先要去除其他不想關的數據庫。利用-d參數來指明數據實例。然后在利用開始時間(--start-datetime)和結束時間(--stop-datetime)來進一步篩選
mysqlbinlog --no-defaults -v --base64-output='decode-rows' -d room --start-datetime='2018-10-10 9:00:00' --stop-datetime='2018-10-10 10:00:00' mysql-bin.011012>temp.sql
  • 壓縮取回文件分析
zip temp.zip temp.sql  sz temp.zip 

取回文件在本地用文本工具如vscode分析,里面有正則匹配,根據你改動過的特征,比如我有個房間號888888,這個不應該被修改,你就查看這個房間號的修改記錄,ROW模式的語句是Where在前,set在后。利用正則room_id=888888.*show_state=1.*AND show_state=2很快就能匹配到。我當時的語句影響了兩千多條記錄,你根據找到的語句去找開始的SET TIMESTAMP=1539136238的位置之前的at和結尾的COMMIT之后的at。

  • 利用binlog2sql生成回滾語句
python binlog2sql.py -hlocalhost -P3306 -udev -p'*' -d room -t room_info -B --start-file='mysql-bin.011012' --start-position 129886892 --stop-position 130917280 > rollback.sql

另外

因為我這邊是一條update影響多條的情況,如果是帶唯一鍵的情況下,影響的只有一條記錄,完全沒必要這么麻煩,直接利用binlog2sql帶上-d和-t參數限定數據庫和表,然后利用grep來查找,直接可以得出對應的sql。mysqlbinlog少了一個限定表和限定語句的功能。比如精確到一張表的Delete語句,能減少很多的數據,能快速定位。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

您可能感興趣的文章:
  • MySQL數據庫恢復(使用mysqlbinlog命令)
  • MySQL中的binlog相關命令和恢復技巧
  • Mysql的Binlog數據恢復:不小心刪除數據庫詳解
  • 教你自動恢復MySQL數據庫的日志文件(binlog)
  • Linux上通過binlog文件恢復mysql數據庫詳細步驟
  • 解說mysql之binlog日志以及利用binlog日志恢復數據的方法
  • MySQL使用mysqldump+binlog完整恢復被刪除的數據庫原理解析
  • MySQL使用binlog日志做數據恢復的實現
  • mysql5.7使用binlog 恢復數據的方法
  • 如何利用MySQL的binlog恢復誤刪數據庫詳解

標簽:蘭州 賀州 宿遷 馬鞍山 黃山 南充 黔南 佛山

巨人網絡通訊聲明:本文標題《mysql如何利用binlog進行數據恢復詳解》,本文關鍵詞  mysql,如何,利用,binlog,進行,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《mysql如何利用binlog進行數據恢復詳解》相關的同類信息!
  • 本頁收集關于mysql如何利用binlog進行數據恢復詳解的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    亚洲天堂最新地址| 中文久久乱码一区二区| 亚洲宅男天堂在线观看无病毒| 国产精品69久久久久水密桃| 国产精久久一区二区三区| 日韩一区二区三区电影在线观看 | 性色av浪潮av| 在线免费av一区| 亚洲精品国产高清久久伦理二区| 99久久99久久精品免费看蜜桃| 国产精品成人免费观看| 国产一区二区三区精品在线| 日韩精品一区二区三区在线播放| 三级欧美韩日大片在线看| 中文字幕第九页| 91麻豆精品国产91久久久久| 日日夜夜精品视频免费| 国产熟女高潮一区二区三区| 日韩欧美国产精品| 麻豆精品一区二区av白丝在线 | 亚洲一区在线视频| 影音先锋资源av| 91精品国产综合久久香蕉的特点| 日韩主播视频在线| 亚洲天堂久久新| 国产三区在线成人av| 丁香网亚洲国际| 欧美亚洲自拍偷拍| 无码av中文一区二区三区桃花岛| 日本免费福利视频| 久久精品人人做人人爽97 | 欧美精品一区二区在线观看| 国内精品国产成人国产三级粉色| 呻吟揉丰满对白91乃国产区| 中文字幕一区二区三区av| 91尤物视频在线观看| 4438成人网| 国产在线视频一区二区三区| 国产色无码精品视频国产| 亚洲三级小视频| 91精品人妻一区二区三区蜜桃2| 91精品国产综合久久精品图片| 麻豆国产精品一区二区三区 | 久久婷婷国产综合国色天香| 国产成人精品免费视频网站| 欧美私模裸体表演在线观看| 日本不卡123| 日日噜噜夜夜狠狠久久波多野| 亚洲精品日日夜夜| 黑人巨大精品欧美| 国产精品视频你懂的| 色哟哟网站在线观看| 久久只精品国产| 99综合影院在线| 日韩一区二区在线观看| 国产成人精品亚洲777人妖| 欧美亚一区二区| 九色综合狠狠综合久久| 欧洲猛交xxxx乱大交3| 天天做天天摸天天爽国产一区| 日韩福利在线视频| 一区二区三区国产| 懂色av蜜桃av| 亚洲亚洲人成综合网络| 手机看片福利视频| 亚洲免费观看在线观看| 香蕉视频黄色在线观看| 亚洲欧美综合色| 久久精品一区二区免费播放| 中文字幕一区二区三区乱码在线 | 一区二区在线观看免费视频播放 | 久久男人中文字幕资源站| 99久久99久久综合| 精品99999| 最近中文字幕一区二区三区| 黄色污在线观看| 亚洲天堂av老司机| www.中文字幕av| 亚洲免费高清视频在线| 亚洲第一视频区| 亚洲国产另类精品专区| 国产视频精品免费| 日日摸夜夜添夜夜添国产精品| 五月天激情丁香| 美女一区二区久久| 欧美性xxxxxx少妇| 国产91精品一区二区| 精品久久五月天| 国产精品熟妇一区二区三区四区 | 精品国产免费人成电影在线观看四季| av午夜精品一区二区三区| 亚洲精品在线观看视频| 久久久久久婷婷| 亚洲精品国产无套在线观| 尤物在线免费视频| 激情文学综合丁香| 日韩欧美国产电影| 人妻激情偷乱频一区二区三区| 亚洲欧美乱综合| 一区二区国产精品精华液| 国精产品一区一区三区mba桃花 | 日韩av在线发布| 欧美日韩国产片| 97se亚洲国产综合自在线| 亚洲国产高清在线观看视频| 成年人免费观看视频网站| 亚洲sss视频在线视频| 欧美亚洲综合色| av中文字幕不卡| 国产精品高清亚洲| a一级免费视频| 韩国在线一区二区| 欧美成人女星排名| 99re这里只有| 亚洲观看高清完整版在线观看| 91九色02白丝porn| 成人丝袜高跟foot| 中文字幕av免费专区久久| 国产极品视频在线观看| 国产在线视频精品一区| 久久午夜电影网| 天天舔天天操天天干| 久草精品在线观看| 久久免费电影网| 日韩黄色中文字幕| 国产一区啦啦啦在线观看| 久久久精品2019中文字幕之3| www.av天天| 国产精品自在在线| 国产偷国产偷精品高清尤物| 国产一级淫片久久久片a级| 国产一区二区看久久| 国产欧美精品日韩区二区麻豆天美| 日本在线观看网址| 成人性生交大片免费看中文| 国产一二三四视频| 国产精品亚洲视频| 国产精品久久网站| 一本一本大道香蕉久在线精品 | 一区二区三区在线播放| 欧美午夜电影一区| 性欧美18—19sex性高清| 日韩精品色哟哟| 精品国产一区二区三区久久影院| 亚洲理论片在线观看| 国产成人精品三级麻豆| 中文字幕在线观看一区| 在线免费观看日韩欧美| 性猛交╳xxx乱大交| 日本在线不卡一区| 久久久久久久久免费| 欧美特黄一级片| 99久久99久久精品国产片果冻| 一区二区理论电影在线观看| 制服丝袜av成人在线看| 亚洲精品成人无码| 高清不卡一二三区| 一区二区成人在线| 日韩一区二区视频在线观看| 久久久久久成人网| www.日韩精品| 婷婷激情综合网| 久久久久久亚洲综合影院红桃| 久久国产美女视频| 最新日本中文字幕| 黄色成人免费在线| 亚洲欧美经典视频| 日韩欧美国产综合在线一区二区三区 | 国产一区 二区| 亚洲精品乱码久久久久久久久 | 欧美日韩大陆在线| 精品国产av无码| 成人精品视频一区二区三区尤物| 亚洲在线中文字幕| 久久久99免费| 欧美三级三级三级| 少妇av片在线观看| 九色91porny| 久久er99精品| 亚洲精品成a人| 2020国产精品| 欧美在线三级电影| www.黄色在线| 欧美日韩一区二区区别是什么| 久久丁香综合五月国产三级网站| 亚洲视频小说图片| 欧美成人女星排行榜| 91国产成人在线| 亚洲精品国产精品国自| 911亚洲精选| 久久精品人人爽人人爽| 欧美视频中文一区二区三区在线观看| 扒开jk护士狂揉免费| 91视频精品在这里| 国产综合成人久久大片91| 亚洲激情网站免费观看| 国产日韩精品一区二区三区在线| 欧美日韩一区二区欧美激情 | 蜜桃精品视频在线| 亚洲综合视频在线观看|