一杯咖啡的时间,聊聊技术与成长
读写分离与高可用选型:路由方案、MHA 与 MGR
主从搭好了,流量怎么分、主库挂了谁接管?应用层路由与代理层的取舍,强制走主库的三个场景,以及 MHA、Orchestrator、MGR 的高可用选型对比。
复制延迟治理:并行复制、半同步与监控兜底
改了头像为什么从库还是旧的?延迟的根源是单线程回放:logical clock 并行复制提吞吐,半同步防丢数据,pt-heartbeat 补 Seconds_Behind_Source 的盲区。
主从搭建实操:从零配出一主两从
光讲原理不过瘾?手把手搭一主两从:my.cnf 六个参数、复制账号、GTID、CHANGE REPLICATION SOURCE TO、SHOW REPLICA STATUS 验收,附翻车排查清单。
binlog 与两阶段提交:crash-safe 的秘密
redo 和 binlog 各管一摊,为什么中间必须插一个「prepare」?拆解两阶段提交的完整时序与崩溃恢复判定,再给出「双 1」配置的安全与性能权衡。
锁:行锁、间隙锁与一场死锁事故复盘
两个无害的 SELECT 引发死锁?讲清全局锁、表锁、行锁三层体系与 next-key lock 的加锁规则,用一场真实死锁事故演示 show engine innodb status 怎么读。
隔离级别与 MVCC:快照读到底读的是什么
报表里读到不存在的行?对账脚本反复执行结果不一致?从脏读、不可重复读、幻读三个问题讲起,拆解 ReadView 与版本链,讲清 RR 为什么是默认级别。
事务与崩溃恢复:ACID 背后的 redo 和 undo
扣款成功订单却没生成?ACID 不是背出来的口号:原子性靠 undo log、持久性靠 redo log,搞懂 WAL、循环写与崩溃恢复的完整流程。
优化器的选择:统计信息、成本估算与 force index
同样的 SQL 有时走索引有时全表扫?看懂优化器的成本账本:统计信息怎么采样、IO 与 CPU 成本怎么算、什么时候该 ANALYZE TABLE,什么时候才动 force index。
索引失效:这些写法让索引悄悄下岗
索引明明建了,查询还是全表扫?盘点六大失效写法:函数运算、隐式类型转换、左模糊、or 混搭、not in 与隐式字符集,每一条都附补救写法。