图解 MySQL 日志体系

一、为什么MySQL需要日志系统?

让我们从一个最基础的数据库操作说起:

// 用户消费100元
UPDATE account SET balance = balance - 100 WHERE id = 1;

    这条简单的SQL语句,实际上给数据库带来了三大挑战:

    • 可靠性问题:如果数据库突然宕机,这笔交易记录会不会丢失?
    • 一致性问题:如果用户要求退款,如何安全地回滚这笔交易?
    • 同步问题:如何确保其他数据库节点也正确记录了这笔交易?

    为解决这些问题,MySQL设计了三种核心日志:

    数据库操作 ──────────────────┐
                                ↓
    ┌─── Redo Log(临时记事本)
    │     记录:"账户1减少100元"
    │     作用:确保交易记录不丢失
    │
    ├─── Undo Log(原始凭证)
    │     记录:"账户1原有500元"
    │     作用:随时可以撤销交易
    │
    └─── Binlog(总账本)
          记录:"完整交易记录"
          作用:用于数据同步和备份

      评论
      添加红包

      请填写红包祝福语或标题

      红包个数最小为10个

      红包金额最低5元

      当前余额3.43前往充值 >
      需支付:10.00
      成就一亿技术人!
      领取后你会自动成为博主和红包主的粉丝 规则
      hope_wisdom
      发出的红包

      打赏作者

      奔向理想的星辰大海

      你的鼓励将是我创作的最大动力

      ¥1 ¥2 ¥4 ¥6 ¥10 ¥20
      扫码支付:¥1
      获取中
      扫码支付

      您的余额不足,请更换扫码支付或充值

      打赏作者

      实付
      使用余额支付
      点击重新获取
      扫码支付
      钱包余额 0

      抵扣说明:

      1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
      2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

      余额充值