日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

有時候我們可能因為手抖或者粗心,執行了一條delete語句,導致正常的業務數據被刪除了。

別慌,也先別跑路。

有很多種方式可以恢復回來,這一篇文章就來聊聊使用my2sql工具解析出delete語句的回滾操作(也就是insert),來恢復delete誤刪除的數據。

my2sql工具Github地址:https://github.com/liuhr/my2sql

不過要想使用my2sql恢復數據,需要注意這些:

  • binlog格式必須為row,且binlog_row_image=full(表示記錄的二進制日志將包含所有列的值,包括舊值和新值)
  • 只能回滾DML, 不能回滾DDL
  • 8.0 用戶密碼認證必須是MySQL_native_password才能解析

我們通過一個實驗來模擬誤操作,并進行恢復。

一、新建測試表和測試用戶

創建測試表并寫入數據:

create database d_recover;

use d_recover;

CREATE TABLE del_t1 (

id int NOT NULL AUTO_INCREMENT,

a int NOT NULL,

PRIMARY KEY (id)

) ENGINE=InnoDB CHARSET=utf8mb4;

insert into del_t1 values (1,1),(2,2);

創建恢復用戶:

CREATE USER `u_rollback`@`127.0.0.1` IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY 'IgdI8G_aUU';

GRANT SELECT, REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO `u_rollback`@`127.0.0.1`;

二、安裝Binlog解析工具my2sql

下載my2sql:

mkdir /data/backup/rollback -p

cd /data/backup/rollback

wget https://github.com/liuhr/my2sql/blob/master/releases/centos_release_7.x/my2sql

三、模擬誤操作

delete from d_recover.del_t1;

四、把誤操作事務所在的Binlog復制到新目錄

mkdir /data/backup/rollback

cp /data/mysql/binlog/mysql-bin.000012 /data/backup/rollback

五、查看誤操作事務開始和結束的位點

解析誤操作期間的Binlog,預估誤操作大概的起止時間,范圍可以稍微大一點。

cd /data/backup/rollback

mysqlbinlog mysql-bin.000012 --start-datetime='2023-06-21 01:20:00' --stop-datetime='2023-06-21 01:40:00' ---output=decode-rows -v > operation.sql

找到誤操作的Binlog,并確定開始和結束的位點:

比如上面解析出的Binlog,誤操作開始的位點可以認為是3556,結束的位點是3719

六、生成回滾SQL

/data/backup/rollback

./my2sql -user u_rollback -password 'IgdI8G_aUU' -host 127.0.0.1 -databases d_recover -tables del_t1 -work-type rollback -start-file mysql-bin.000012 -start-pos 3556 -stop-pos 3719 -output-dir recover_01

查看并確認回滾SQL:

cat recover_01/rollback.12.sql

七、導入回滾的SQL

如果確定回滾的SQL沒問題,把回滾SQL導入到誤操作的庫里:

mysql -uroot -p <recover_01/rollback.12.sql

再進行數據確認:

select * from d_recover.del_t1;

如果一切順利,那誤刪除的數據(1,1),(2,2)就已經恢復回來了。

當然,數據恢復還有其他的一些方式,比如:全備+Binlog、延遲從庫(主庫有誤操作,從庫同步到誤操作前一個事務)、新建從庫同步到誤操作前一個事務等等,后面會找時間分享這些恢復方式。

作者丨馬聽

來源丨公眾號:MySQL數據庫聯盟(ID:gh_fbfc36d26181)

分享到:
標簽:MySQL
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定