正文
`
name
`)
VALUES
(
2
,
'小钱'
);
回滚:
DELETE
FROM
`
test
`.`
user
`
WHERE
`
id
`
=
2
AND
`
name
`
=
'小钱'
;
对于update操作,回滚sql应该交换SET和WHERE的值。
原始:
UPDATE
`
test
`.`
user
`
SET
`
id
`
=
3
,
`
name
`
=
'小李'
WHERE
`
id
`
=
3
AND
`
name
`
=
'小孙'
;
回滚:
UPDATE
`
test
`.`
user
`
SET
`
id
`
=
3
,
`
name
`
=
'小孙'
WHERE
`
id
`
=
3
AND
`
name
`
=
'小李'
;
闪回实战
真实的闪回场景中,最关键的是能快速筛选出真正需要回滚的SQL。
我们使用开源工具binlog2sql来进行实战演练。binlog2sql由美团点评DBA团队(上海)出品,多次在线上环境做快速回滚。
首先我们安装binlog2sql:
shell
>
git
clone
https
:
//github.com/danfengcao/binlog2sql.git && cd binlog2sql
shell
>
pip
install
-
r
requirements
.
txt
背景:小明在11:44时误删了test库user表大批的数据,需要紧急回滚。
test
库
user
表原有数据
mysql
>
select *
from
user
;
+----+--------+---------------------+
|
id
|
name
|
addtime
|
+----+--------+---------------------+
|
1
|
小赵
|
2013
-
11
-
11
00
:
04
:
33
|
|
2
|
小钱
|
2014
-
11
-
11
00
:
04
:
48
|
|
3
|
小孙
|
2016
-
11
-