mysql 誤刪除表內資料,透過binlog日誌恢復
#新增資料
insert into testdb1.student(id,name,class,score) value(a,'a',1,45),(2,'b',1,46),(3,'c',2,89),(4,'d',2,90),(5,'e',3,67),(6,'f',3,87),(7,'g',4,77),(8,'h',4,91);
mysql> select * from testdb1.student;
+------+------+-------+-------+
| id | name | class | score |
+------+------+-------+-------+
| 1 | a | 1 | 45 |
| 2 | b | 1 | 46 |
| 3 | c | 2 | 89 |
| 4 | d | 2 | 90 |
| 5 | e | 3 | 67 |
| 6 | f | 3 | 87 |
| 7 | g | 4 | 77 |
| 8 | h | 4 | 91 |
+------+------+-------+-------+
8 rows in set (0.00 sec)
#刪除資料
mysql> delete from testdb1.student;
Query OK, 8 rows affected (0.00 sec)
mysql> commit;
Query OK, 0 rows affected (0.00 sec)
mysql> show master status\G
*************************** 1. row ***************************
File: ray-bin.000004
Position: 5444
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set:
1 row in set (0.00 sec)
[root@localhost ~]# mysqlbinlog /data/3306/logs/ray-bin.000004 -v -v -S /data/3306/soket/mysql.sock --base64-output=decode-rows | sed -n '/### DELETE FROM `testdb1`.`student`/,/COMMIT/P' | sed -n 's\### \\p' | sed "s/\/\*.*\*\///g" | sed 's/`//g' > /tmp/1.txt
[root@localhost ~]# sed 's/DELETE FROM/insert into/g' /tmp/1.txt | sed 's/WHERE/select/g' | sed 's/@4.*/\0;/g' | sed 's/@[1-3].*/\0,/g' | sed 's/[^@]\(.*\)=//g' > execSQL.sql
要點:
sed 's/@4.*/\0;/g' 把@4後面匹配所有字元所有長度,替換,在匹配的後面新增。\0代表整行;
sed 's/@[1-3].*/\0,/g' 把@後面從1到3匹配,在匹配後面所有字元所有長度,在匹配項後面新增逗號。\0代表整行。
sed 's/[^@]\(.*\)=//g' 把已@開頭的到=以內的內容替換
mysql> source /root/execSQL.sql
Query OK, 1 row affected (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 0
Query OK, 1 row affected (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 0
Query OK, 1 row affected (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 0
Query OK, 1 row affected (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 0
Query OK, 1 row affected (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 0
Query OK, 1 row affected (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 0
Query OK, 1 row affected (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 0
Query OK, 1 row affected (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> commit;
Query OK, 0 rows affected (0.01 sec)
mysql> select * from testdb1.student;
+------+------+-------+-------+
| id | name | class | score |
+------+------+-------+-------+
| 1 | a | 1 | 45 |
| 2 | b | 1 | 46 |
| 3 | c | 2 | 89 |
| 4 | d | 2 | 90 |
| 5 | e | 3 | 67 |
| 6 | f | 3 | 87 |
| 7 | g | 4 | 77 |
| 8 | h | 4 | 91 |
+------+------+-------+-------+
8 rows in set (0.00 sec)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29734436/viewspace-2152512/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL 透過 binlog 恢復資料MySql
- 利用binlog日誌恢復mysql資料MySql
- 【Mysql】如何透過binlog恢復資料MySql
- MySQL資料庫表誤刪除恢復(一)MySql資料庫
- 【北亞資料恢復】誤刪除oracle表和誤刪除oracle表資料的資料恢復方法資料恢復Oracle
- MySQL 正確刪除 binlog 日誌MySql
- MySQL 通過 binlog 恢復資料MySql
- mysql誤刪資料恢復MySql資料恢復
- mysql誤修改全表記錄,使用binlog日誌找回資料MySql
- 教你自動恢復MySQL資料庫的日誌檔案(binlog)MySql資料庫
- MySQL使用mysqldump+binlog完整恢復被刪除的資料庫(轉)MySql資料庫
- Mysql 誤刪資料進行恢復MySql
- Sybase ASE資料庫恢復,Sybase資料恢復,資料誤刪除恢復工具READSYBDEVICE資料庫資料恢復dev
- Linux上透過binlog檔案恢復mysql資料庫詳細步驟LinuxMySql資料庫
- MySQL使用binlog2sql閃回誤刪除資料MySql
- 【NetApp資料恢復案例】針對NetApp誤刪除資料的恢復APP資料恢復
- [轉] MySQL binlog 日誌自動清理及手動刪除MySql
- 誤刪除儲存SqlServer資料庫資料恢復SQLServer資料庫資料恢復
- hbase 恢復 誤刪除
- Sybase SQL Anywhere(ASA)資料庫恢復,ASA資料恢復,資料誤刪除恢復工具ReadASADBSQL資料庫資料恢復
- 【儲存資料恢復】NetApp儲存誤刪除的資料恢復案例資料恢復APP
- 【儲存資料恢復案例】Netapp誤操作刪除lun的資料恢復資料恢復APP
- MySQL重做日誌恢復資料的流程MySql
- 誤刪除資料了怎麼辦?小編交易誤刪除資料的恢復方法
- 【伺服器資料恢復】LINUX誤刪除、誤格式化怎麼恢復資料?伺服器資料恢復Linux
- 寶塔資料庫恢復 mysql資料庫丟失恢復 mysql資料庫刪除庫恢復 寶塔mysql資料庫恢復資料庫MySql
- 【伺服器資料恢復】NetApp儲存中lun被誤刪除的資料恢復過程伺服器資料恢復APP
- 05、MySQL Case-MySQL binlog誤清除恢復MySql
- 資料誤操作,刪庫跑路?教你使用ApexSQLLog工具從 SQLServer日誌恢復資料!SQLServer
- SQL Server資料庫恢復,SQL Server資料恢復,SQL Server資料誤刪除恢復工具SQLRescueSQLServer資料庫資料恢復
- Mysql效能壓測、Binlog恢復資料MySql
- 恢復Oracle資料庫誤刪除資料的語句Oracle資料庫
- 誤刪除ESXi虛擬機器資料恢復虛擬機資料恢復
- 14、MySQL Case-線上表誤刪除恢復MySql
- 【oracle資料庫資料恢復】誤操作導致的資料庫誤刪除的資料恢復案例Oracle資料庫資料恢復
- 【伺服器資料恢復】伺服器誤刪除lun如何恢復資料?伺服器資料恢復
- 【伺服器資料恢復】NetApp儲存誤刪除的資料恢復案例伺服器資料恢復APP
- 【伺服器資料恢復】LINUX誤刪除、格式化的資料恢復伺服器資料恢復Linux