跳至主要內容
Mysql生产死锁问题定位

生产上一个消费mq消息的服务出现了死锁问题,通过命令获取到的mysql日志如下:


DHB大约 2 分钟MysqlMysqldeadlock
数据库误操作数据恢复

前提

mysql必须有以下配置

binlog_format = row
binlog_row_image = full # 默认是full

实战

假设有一张用户表,结构如下

create table tb_user
(
    id       bigint primary key not null auto_increment,
    username varchar(100)       not null,
    pwd      varchar(100)       not null,
    sex      varchar(10)        not null
);

DHB大约 2 分钟MysqlMysqlFlashback
Mysql中的Null值

在大对数编程语言中,逻辑表达式的值只有两种:True,False。但是在关系型数据库中的逻辑表达式并非两种,而是三值逻辑的表达式(True、False、Unknown)。

select null = 1;

执行结果:

+----------+
| null = 1 |
+----------+
|     NULL |
+----------+
1 row in set (0.01 sec)

DHB小于 1 分钟MysqlMysql
Mysql避免全表update

在测试的时候忘记写where条件导致全表更新的话,可以收拾包袱走人了

下面这条语句可以开启检查,当没有加where时拦截下来

set sql_safe_updates=1;

关闭:

set sql_safe_updates=0;

DHB小于 1 分钟MysqlMysql