成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

利用binlog2sql快速閃回誤刪除數據 - 別拿豆包不當干糧

數據庫 MySQL
今兒抽出時間,給大家分享一篇利用binlog2sql閃回工具,來恢復誤刪除的數據。我們都知道binlog的作用是備份恢復和完成MySQL的主從復制功能。利用mysqlbinlog工具可以進行基于時間點或者位置偏移量的數據恢復工作,在生產環境中遇到誤刪除,改錯數據的情況,那是常有的事兒。

 

利用binlog2sql快速閃回誤刪除數據 - 別拿豆包不當干糧

今兒抽出時間,給大家分享一篇利用binlog2sql閃回工具,來恢復誤刪除的數據。我們都知道binlog的作用是備份恢復和完成MySQL的主從復制功能。利用mysqlbinlog工具可以進行基于時間點或者位置偏移量的數據恢復工作,在生產環境中遇到誤刪除,改錯數據的情況,那是常有的事兒。我們都知道Oracle數據庫有閃回功能,而MySQL本身沒有自帶閃回,但我們可以使用binlog2sql來完成這項工作。

我們都知道binlog是以event作為單位,來記錄數據庫變更的數據信息,閃回就是可以幫助我們重現這些變化數據信息之前的操作。也就是說對于insert操作,會生成delete語句,反之delete操作,會生成insert語句。對于update操作,也會生成相反的update語句。這款工具只能使用在binlog格式為row模式下。

下面進行實戰演練:

binlog2sql工具的下載地址: https://github.com/danfengcao/binlog2sql

***步:環境準備安裝各種依賴的工具包列表

 

  1. python-pip , 
  2.  
  3. PyMySQL , 
  4.  
  5. python-mysql-replication, 
  6.  
  7. wheel argparse 

第二步:解壓binlog2sql軟件,命令如下

 

  1. unzip  binlog2sql-master.zip 
  2.  
  3. cd binlog2sql-master 
  4.  
  5. pip install –r requirements.txt 

第三步:通過python binlog2sql.py --help命令,來查看重要參數的使用;

-B, --flashback 生成回滾語句

--start-file 需要解析的binlog文件

--start-position 解析binlog的起始位置

--stop-position解析binlog的結束位置

--start-datetime 從哪個時間點的binlog開始解析,格式必須為datetime

--stop-datetime 到哪個時間點的binlog停止解析,格式必須為datetime

-d, --databases 只輸出目標db的sql

-t, --tables 只輸出目標tables的sql

第四步:開始模擬數據刪除

首先刪除掉zs庫下,t表中的數據

 

  1. root@db 14:26:  [zs]> select * from t; 
  2.  
  3. +----+------+---------+ 
  4.  
  5. | id | name | address | 
  6.  
  7. +----+------+---------+ 
  8.  
  9. |  1 | aaa  | bj      | 
  10.  
  11. |  2 | bbb  | sh      | 
  12.  
  13. |  3 | ccc  | gz      | 
  14.  
  15. |  4 | ddd  | sy      | 
  16.  
  17. |  5 | eee  | fj      | 
  18.  
  19. +----+------+---------+ 
  20.  
  21. rows in set (0.00 sec)  
  22.  
  23.  
  24. root@db 14:26:  [zs]> delete from t; 
  25.  
  26. Query OK, 5 rows affected (0.04 sec)  
  27.  
  28.  
  29. root@db 14:27:  [zs]> select * from t; 
  30.  
  31. Empty set (0.00 sec) 

第五步:需要創建一個閃回用戶

 

  1. create user 'zs_test'@'%' identified by '123456'
  2.  
  3. grant select,replication slave,replication client on *.* to 'zs_test'@'%' ; 
  4.  
  5. flush privileges

第六步:確定當前binlog文件和position位置

 

  1. root@db 14:41:  [zs]> show master status; 
  2.  
  3. +---------------------+----------+--------------+------------------+------------------------------------------+ 
  4.  
  5. | File                | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set                        | 
  6.  
  7. +---------------------+----------+--------------+------------------+------------------------------------------+ 
  8.  
  9. | mysql-binlog.000002 |     2091 |              |                  | e10f0ead-d595-11e7-82cb-080027cd683a:1-8 | 
  10.  
  11. +---------------------+----------+--------------+------------------+------------------------------------------+ 

可以看到當前binlog是:mysql-binlog.000002

位置偏移量:2091

第七步:需要預估下時間,誤操作的時間范圍應該在下午2點20分到2點30分之間。命令如下:

 

  1. python binlog2sql.py -h192.168.56.102 -P3306 -uzs_test -p123456 -dzs -tt --start-file='mysql-binlog.000002' --start-datetime='2017-11-30 14:20:00' --stop-datetime='2017-11-30 14:30:00' 

輸出結果:

 

  1. DELETE FROM zs.t WHERE address='bj' AND id=1 AND name='aaa' LIMIT 1; #start 1214 end 1427 time 2017-11-30 14:27:46 
  2.  
  3. DELETE FROM zs.t WHERE address='sh' AND id=2 AND name='bbb' LIMIT 1; #start 1214 end 1427 time 2017-11-30 14:27:46 
  4.  
  5. DELETE FROM zs.t WHERE address='gz' AND id=3 AND name='ccc' LIMIT 1; #start 1214 end 1427 time 2017-11-30 14:27:46 
  6.  
  7. DELETE FROM zs.t WHERE address='sy' AND id=4 AND name='ddd' LIMIT 1; #start 1214 end 1427 time 2017-11-30 14:27:46 
  8.  
  9. DELETE FROM zs.t WHERE address='fj' AND id=5 AND name='eee' LIMIT 1; #start 1214 end 1427 time 2017-11-30 14:27:46 

從解析結果中我們了解到,誤操作sql的位置是在1214~1427之間;這樣就可以進一步過濾,使用flashback模式生成回滾sql;

命令如下:

 

  1. python binlog2sql.py -h192.168.56.102 -P3306 -uzs_test -p123456 -dzs -tt --start-file='mysql-binlog.000002' --start-position=1214 --stop-position=1427 -B >t_rollback.sql 

查看閃回導出文件:

 

  1. [root@node3 binlog2sql]# cat t_rollback.sql  
  2.  
  3. INSERT INTO `zs`.`t`(`address`, `id`, `name`) VALUES ('fj', 5, 'eee'); #start 1214 end 1427 time 2017-11-30 14:27:46 
  4.  
  5. INSERT INTO `zs`.`t`(`address`, `id`, `name`) VALUES ('sy', 4, 'ddd'); #start 1214 end 1427 time 2017-11-30 14:27:46 
  6.  
  7. INSERT INTO `zs`.`t`(`address`, `id`, `name`) VALUES ('gz', 3, 'ccc'); #start 1214 end 1427 time 2017-11-30 14:27:46 
  8.  
  9. INSERT INTO `zs`.`t`(`address`, `id`, `name`) VALUES ('sh', 2, 'bbb'); #start 1214 end 1427 time 2017-11-30 14:27:46 
  10.  
  11. INSERT INTO `zs`.`t`(`address`, `id`, `name`) VALUES ('bj', 1, 'aaa'); #start 1214 end 1427 time 2017-11-30 14:27:46 

第八步:應用回滾文件,恢復數據。命令如下:

  1. /usr/local/mysql/bin/mysql -uroot -proot123 zs < t_rollback.sql 

第九步:檢驗恢復數據是否成功

 

  1. root@db 15:09:  [zs]> select * from t; 
  2.  
  3. +----+------+---------+ 
  4.  
  5. | id | name | address | 
  6.  
  7. +----+------+---------+ 
  8.  
  9. |  1 | aaa  | bj      | 
  10.  
  11. |  2 | bbb  | sh      | 
  12.  
  13. |  3 | ccc  | gz      | 
  14.  
  15. |  4 | ddd  | sy      | 
  16.  
  17. |  5 | eee  | fj      | 
  18.  
  19. +----+------+---------+ 
  20.  
  21. rows in set (0.00 sec) 

驗證恢復數據成功!

工具雖小,但功能很強大,我們要善于發現周圍的資源,利用這些武器,來幫助我們學習MySQL數據庫!今后老張會繼續分享新的干貨,供大家學習參考! 

責任編輯:龐桂玉 來源: 51CTO博客
相關推薦

2019-10-11 09:55:53

數據工具架構

2017-04-01 18:30:47

MySQL誤刪除數據庫

2014-07-02 15:37:49

PLSQL

2017-02-06 10:53:33

2017-11-20 11:23:12

MySQLMyFlash閃回工具

2018-03-26 14:05:56

MySQLbinlog2sql誤操作

2011-08-01 14:50:10

日志挖掘數據庫

2017-04-01 09:00:00

數據庫誤刪除案例及建議

2011-07-04 09:59:01

AD誤刪除

2023-03-14 16:05:36

2018-04-28 15:28:44

數據庫MySQL誤刪除

2022-11-08 08:11:52

PG數據庫防誤

2024-08-09 10:06:09

2010-03-10 15:33:31

Linux誤刪除

2013-01-18 09:59:35

SQL Server

2010-08-17 11:03:01

DB2恢復誤刪除表

2010-08-12 14:03:24

DB2恢復誤刪除表

2017-10-26 15:32:23

數據庫Oracle閃回查詢

2018-12-11 11:13:25

Linux系統恢復

2009-12-21 16:17:01

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美激情视频一区二区三区免费 | av一级久久 | 精品国产综合 | 91精品观看| 荷兰欧美一级毛片 | 日韩高清av| 亚洲成人一区二区在线 | 国产在线精品一区二区三区 | 亚洲不卡| 久久久久久久一区二区三区 | 成人精品一区二区三区 | 天天搞天天操 | 综合成人在线 | 欧美日韩毛片 | 日日摸日日碰夜夜爽亚洲精品蜜乳 | 伊人欧美视频 | 日本不卡一二三 | 91久久精品日日躁夜夜躁欧美 | 国产美女一区二区 | 日韩一区二区三区在线观看 | 91精品国产高清一区二区三区 | 亚洲国产成人久久久 | 精品久久九九 | 国产精品久久久久久久毛片 | 亚洲欧洲精品在线 | 国产午夜精品一区二区三区嫩草 | 久久精品国产一区二区三区 | 免费一级做a爰片久久毛片潮喷 | 日日av | 久久久久久国产精品免费免费男同 | 欧美大片黄 | 欧美高清hd | 欧美99| 色婷婷精品国产一区二区三区 | 黄色片网站在线观看 | 欧美日韩综合视频 | 五十女人一级毛片 | 久久久蜜臀国产一区二区 | 一级片网址 | 国产乱码精品1区2区3区 | 日韩中文字幕免费 |