久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

mysql中delete誤刪除如何利用binlog回滾

165次閱讀
沒有評論

共計 2947 個字符,預計需要花費 8 分鐘才能閱讀完成。

這篇文章主要介紹 mysql 中 delete 誤刪除如何利用 binlog 回滾,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

mysql select * from tet3;
+—-+————-+
| id | dd  |
+—-+————-+
|  1 | XX  |
|  2 | YY  |
|  3 | aaa  |
|  4 | 5002301999X |
|  5 | 0000000X  |
|  6 | oi80  |
|  7 | 887  |
|  8 | 887  |
| 10 | jju  |
+—-+————-+
9 rows in set (0.03 sec)

mysql delete from tet3 where id
Query OK, 6 rows affected (0.03 sec)

mysql select * from tet3;
+—-+——+
| id | dd  |
+—-+——+
|  1 | XX  |
|  2 | YY  |
|  3 | aaa  |
+—-+——+
3 rows in set (0.00 sec)

[root@localhost data]# mysqlbinlog –no-defaults –base64-output=decode-rows -v -v db-bin.000016| sed -n /### DELETE FROM `test`.`tet3`/,/COMMIT/p /root/delete.txt
[root@localhost data]# more /root/delete.txt
### DELETE FROM `test`.`tet3`
### WHERE
###  @1=4 /* INT meta=0 nullable=0 is_null=0 */
###  @2= 5002301999X /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
### DELETE FROM `test`.`tet3`
### WHERE
###  @1=5 /* INT meta=0 nullable=0 is_null=0 */
###  @2= 0000000X /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
### DELETE FROM `test`.`tet3`
### WHERE
###  @1=6 /* INT meta=0 nullable=0 is_null=0 */
###  @2= oi80 /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
### DELETE FROM `test`.`tet3`
### WHERE
###  @1=7 /* INT meta=0 nullable=0 is_null=0 */
###  @2= 887 /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
### DELETE FROM `test`.`tet3`
### WHERE
###  @1=8 /* INT meta=0 nullable=0 is_null=0 */
###  @2= 887 /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
### DELETE FROM `test`.`tet3`
### WHERE
###  @1=10 /* INT meta=0 nullable=0 is_null=0 */
###  @2= jju /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
# at 3640
#150426 23:17:36 server id 199  end_log_pos 3671 CRC32 0xb946f7f5  Xid = 164
COMMIT/*!*/;

[root@localhost ~]# cat delete.txt | sed -n /###/p | sed s/### //g;s/\/\*.*/,/g;s/DELETE FROM/INSERT INTO/g;s/WHERE/SELECT/g; |sed -r s/(@2.*),/\1;/g | sed s/@[1-9]=//g insert.sql
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# more insert.sql
INSERT INTO `test`.`tet3`
SELECT
  4 ,
  5002301999X
INSERT INTO `test`.`tet3`
SELECT
  5 ,
  0000000X
INSERT INTO `test`.`tet3`
SELECT
  6 ,
  oi80
INSERT INTO `test`.`tet3`
SELECT
  7 ,
  887
INSERT INTO `test`.`tet3`
SELECT
  8 ,
  887
INSERT INTO `test`.`tet3`
SELECT
  10 ,
  jju
以上就是我們需要的回滾 sql 了 … 執行就行了..

命令解釋:
mysqlbinlog –no-defaults –base64-output=decode-rows -v -v db-bin.000016| sed -n /### DELETE FROM `test`.`tet3`/,/COMMIT/p /root/delete.txt
mysqlbinlog –no-defaults –base64-output=decode-rows -v -v db-bin.000016 
這屬于 mysqlbinlog 命令參數 …
–no-defaults  阻止 mysqlbinlog 工具從任何配置文件讀取參數 (保證密碼安全)
–base64-output=decode-rows  顯示出 row 模式帶來的 sql 變更
-v -v  采用二進制日志文件方式查看
sed -n /### DELETE FROM `test`.`tet3`/,/COMMIT/p
打印從 ### DELETE FROm `test`.`tet3` 開始到 COMMIT 結束的內容 …

cat delete.txt | sed -n /###/p | sed s/### //g;s/\/\*.*/,/g;s/DELETE FROM/INSERT INTO/g;s/WHERE/SELECT/g; |sed -r s/(@2.*),/\1;/g | sed s/@[1-9]=//g insert.sql

sed -n /###/p
打印 ### 開頭的行
sed s/### //g;s/\/\*.*/,/g;s/DELETE FROM/INSERT INTO/g;s/WHERE/SELECT/g;
分開解讀: s/### //g;s/\/\*.*/,/g;  這部分是把 ### 和 /*..*/ 去除掉;
  s/DELETE FROM/INSERT INTO/g;  這部分是吧 delete from 換成 insert into;
  s/WHERE/SELECT/g;  這部分是吧 where 換成 select;
|sed -r s/(@2.*),/\1;/g
- r 是正則表達式, 意思是在 @2 開頭的一行末尾加一個分號.
sed s/@[1-9]=//g
這個就簡單了.. 就是將 @1-@9 的去除. 當然本例中只有 @1 和 @2.

以上是“mysql 中 delete 誤刪除如何利用 binlog 回滾”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注丸趣 TV 行業資訊頻道!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-27發表,共計2947字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 来凤县| 敖汉旗| 定陶县| 蕉岭县| 寿光市| 常德市| 准格尔旗| 阿鲁科尔沁旗| 伊宁市| 会泽县| 丰镇市| 岚皋县| 进贤县| 金阳县| 尉犁县| 潍坊市| 彰武县| 花莲市| 旌德县| 驻马店市| 岑溪市| 太原市| 交口县| 惠州市| 西峡县| 巫溪县| 五峰| 周宁县| 新蔡县| 安多县| 定边县| 汉阴县| 盐源县| 资中县| 耒阳市| 佛山市| 黄山市| 昌黎县| 红河县| 太湖县| 沁水县|