2021年2月8日 星期一

mysql 誤刪資料舊回

mysql 誤刪資料舊回


mysql 版本 :8.0.23


這邊使用 binlog 一筆一筆查看然後把資料找出, 刪除大量的資料時就不太適合了


工具是 mysql 內建的 mysqlbinlog


mysqlbinlog --no-defaults --base64-output=decode-rows -v -v /mysql/binlog.000027 | grep -A 200 'account_table' > record_sql.txt


輸入關鍵字找回


cat  record_sql.txt


### DELETE FROM `ab`.`account_table`

### WHERE

###   @1='73057daa246f46f388205c3ce86baab5' /* VARSTRING(200) meta=200 nullable=0 is_null=0 */

###   @2='87fda75a85b24900b2224a4e8948818a' /* VARSTRING(200) meta=200 nullable=1 is_null=0 */

###   @3='af374573bcc041559d68362d5cf399a9' /* VARSTRING(200) meta=200 nullable=1 is_null=0 */

###   @4='bb4d95daa4224e14a9e80c2fb14cd829' /* VARSTRING(200) meta=200 nullable=1 is_null=0 */

###   @5=1 /* INT meta=0 nullable=1 is_null=0 */

###   @6=1 /* INT meta=0 nullable=1 is_null=0 */

###   @7=1 /* TINYINT meta=0 nullable=1 is_null=0 */

###   @8='2020-12-23 17:08:34' /* DATETIME(0) meta=0 nullable=1 is_null=0 */

###   @9='81412b09582643daa8b357f6c94cd698' /* VARSTRING(200) meta=200 nullable=1 is_null=0 */

###   @10=NULL /* DATETIME(0) meta=0 nullable=1 is_null=1 */

###   @11=NULL /* VARSTRING(200) meta=200 nullable=1 is_null=1 */

###   @12=0 /* TINYINT meta=0 nullable=1 is_null=0 */



透過這種方式 找回被誤刪的資料