🗄️ 第七章 用于保护数据库的基础知识-故障恢复与安全措施
📄 一句话概括

错误日志=数据库的病历本:什么时候、错了什么、错在哪——出故障时它是第一条线索,不出故障时它是体检报告。

📝 本节和前面几节的关系

6-5 把日志归在「监控三仪表」里,本节单独立传深挖:错误日志是 7-3「先恢复后复盘」中复盘的第一手材料,也是 7-5(错误分类)和 7-6(慢查询)的入口——先有记录,才谈得上分析。

一、错误日志里有什么

二、读日志的正确姿势

  1. 由新到旧:故障刚发生,最新的最先看
  2. 由高到低:先致命/错误,再警告——大量警告有时是更大故障的前兆
  3. 找重复模式:同一条错误每分钟出现一次=某个定时任务在反复失败
  4. 交叉对照:错误时间点+操作历史 → 定位是谁、哪条语句引发

三、动手 Demo:亲手攒一份错误病历

-- 沿用 6-5 的 audit_log 思路,这次记「错误」
CREATE TABLE error_log (
  id INTEGER PRIMARY KEY,
  level TEXT,        -- 致命/错误/警告
  msg TEXT,
  at TEXT
);

-- 场景:一次查询报了「表不存在」
INSERT INTO error_log (level, msg, at)
VALUES ('错误', 'no such table: book_review2.books', datetime('now'));

-- 复盘:查最近一天的所有「错误」级别记录
SELECT * FROM error_log
WHERE level IN ('致命', '错误') AND at >= datetime('now', '-1 day')
ORDER BY at DESC;

【准备块】在线 SQLite 运行器即可重放。

四、30 秒实验

打开你电脑的「事件查看器」(Windows)/ 控制台报错——操作系统也有自己的「病历本」。体会一件事:报错信息不是废话,第一行通常就写着病名。养成「报错先读原文」的习惯,学 SQL 也一样。

五、常见误区

自测三问 1. 读错误日志的四个姿势?(由新到旧、由高到低、找重复模式、交叉对照操作历史) 2. 错误日志与 6-5 审计日志的分工?(审计记「谁做了什么」;错误日志记「系统哪里坏了」) 3. 同一条错误周期性出现说明什么?(某个定时/循环任务在反复失败——找重复模式的意义)

相关笔记