22 MySQL有哪些“饮鸩止渴”提高性能的方法? 22 MySQL有哪些“饮鸩止渴”提高性能的方法?不知道你在实际运维过程中有没有碰到这样的情景:业务高峰期,生产环境的 MySQL 压力太大,没法正常响应,需要短期内、临时性地提升一些性能。 我以前做业务护航的时候,就偶尔会碰上这种场景。用户的开发负责人说,不管你用什么方案,让业务先跑起来再说。 但,如果是无损方案的话,肯定不需要等到这个时候才上场。今天我们就来聊聊这些临时方 2022-08-23 专栏 > MySQL实战45讲
23 MySQL是怎么保证数据不丢的? 23 MySQL是怎么保证数据不丢的?今天这篇文章,我会继续和你介绍在业务高峰期临时提升性能的方法。从文章标题“MySQL是怎么保证数据不丢的?”,你就可以看出来,今天我和你介绍的方法,跟数据的可靠性有关。 在专栏前面文章和答疑篇中,我都着重介绍了 WAL 机制,得到的结论是:只要 redo log 和 binlog 保证持久化到磁盘,就能确保 MySQL异常重启后,数据可以 2022-08-23 专栏 > MySQL实战45讲
24 MySQL是怎么保证主备一致的? 24 MySQL是怎么保证主备一致的?在前面的文章中,我不止一次地和你提到了 binlog,大家知道 binlog 可以用来归档,也可以用来做主备同步,但它的内容是什么样的呢?为什么备库执行了binlog 就可以跟主库保持一致了呢?今天我就正式地和你介绍一下它。 毫不夸张地说,MySQL 能够成为现下最流行的开源数据库,binlog 功不可没。 在最开始,MySQL 是以容易 2022-08-23 专栏 > MySQL实战45讲
25 MySQL是怎么保证高可用的? 25 MySQL是怎么保证高可用的?在上一篇文章中,我和你介绍了 binlog 的基本内容,在一个主备关系中,每个备库接收主库的 binlog 并执行。 正常情况下,只要主库执行更新生成的所有 binlog,都可以传到备库并被正确地执行,备库就能达到跟主库一致的状态,这就是最终一致性。 但是,MySQL 要提供高可用能力,只有最终一致性是不够的。为什么这么说呢?今天我就着重和 2022-08-23 专栏 > MySQL实战45讲
26 备库为什么会延迟好几个小时? 26 备库为什么会延迟好几个小时?在上一篇文章中,我和你介绍了几种可能导致备库延迟的原因。你会发现,这些场景里,不论是偶发性的查询压力,还是备份,对备库延迟的影响一般是分钟级的,而且在备库恢复正常以后都能够追上来。 但是,如果备库执行日志的速度持续低于主库生成日志的速度,那这个延迟就有可能成了小时级别。而且对于一个压力持续比较高的主库来说,备库很可能永远都追不上主库的节奏。 2022-08-23 专栏 > MySQL实战45讲
27 主库出问题了,从库怎么办? 27 主库出问题了,从库怎么办?在前面的第[24]、[25]和[26]篇文章中,我和你介绍了 MySQL 主备复制的基础结构,但这些都是一主一备的结构。 大多数的互联网应用场景都是读多写少,因此你负责的业务,在发展过程中很可能先会遇到读性能的问题。而在数据库层解决读性能问题,就要涉及到接下来两篇文章要讨论的架构:一主多从。 今天这篇文章,我们就先聊聊一主多从的切换正确性。然后 2022-08-23 专栏 > MySQL实战45讲
28 读写分离有哪些坑? 28 读写分离有哪些坑?在上一篇文章中,我和你介绍了一主多从的结构以及切换流程。今天我们就继续聊聊一主多从架构的应用场景:读写分离,以及怎么处理主备延迟导致的读写分离问题。 我们在上一篇文章中提到的一主多从的结构,其实就是读写分离的基本结构了。这里,我再把这张图贴过来,方便你理解。 图 1 读写分离基本结构 读写分离的主要目标就是分摊主库的压力。图 1中的结构是客户端(cl 2022-08-23 专栏 > MySQL实战45讲
29 如何判断一个数据库是不是出问题了? 29 如何判断一个数据库是不是出问题了?我在第[25]和[27]篇文章中,和你介绍了主备切换流程。通过这些内容的讲解,你应该已经很清楚了:在一主一备的双 M架构里,主备切换只需要把客户端流量切到备库;而在一主多从架构里,主备切换除了要把客户端流量切到备库外,还需要把从库接到新主库上。 主备切换有两种场景,一种是主动切换,一种是被动切换。而其中被动切换,往往是因为主库出问题了, 2022-08-23 专栏 > MySQL实战45讲
30 答疑文章(二):用动态的观点看加锁 30 答疑文章(二):用动态的观点看加锁在第[20]和[21]篇文章中,我和你介绍了 InnoDB 的间隙锁、next-keylock,以及加锁规则。在这两篇文章的评论区,出现了很多高质量的留言。我觉得通过分析这些问题,可以帮助你加深对加锁规则的理解。 所以,我就从中挑选了几个有代表性的问题,构成了今天这篇答疑文章的主题,即:用动态的观点看加锁。 为了方便你理解,我们再一起复 2022-08-23 专栏 > MySQL实战45讲
31 误删数据后除了跑路,还能怎么办? 31 误删数据后除了跑路,还能怎么办?今天我要和你讨论的是一个沉重的话题:误删数据。 在前面几篇文章中,我们介绍了 MySQL 的高可用架构。当然,传统的高可用架构是不能预防误删数据的,因为主库的一个 drop table 命令,会通过binlog 传给所有从库和级联从库,进而导致整个集群的实例都会执行这个命令。 虽然我们之前遇到的大多数的数据被删,都是运维同学或者 DBA 2022-08-23 专栏 > MySQL实战45讲