刷新
MySQL 28 读写分离有哪些坑?

博主头像 读写分离的基本结构: 上图的结构是客户端主动做负载均衡,这种模式下一般会把数据库连接信息放在客户端的连接层,由客户端选择后端数据库进行查询。 还有一种架构是在MySQL和客户端间加入中间代理层proxy,客户端只连接proxy,由proxy根据请求类型和上下文决定请求的分发路线: 比较这两种架构: ...

MySQL 27 主库出问题了,从库怎么办?

博主头像 基本的一主多从结构: 图中,A和A'互为主备,从库BCD指向主库A。一主多次的设置,一般用于读写分离,主库负责所有的写入和一部分读,从库负责其他的读请求。 当主库发生故障,主备切换: 一主多从结构在切换完成后,A'会成为新主库,从库需要改接到A',而这个过程会增加主备切换的复杂度。接下来,就看看切换 ...

MySQL - 事务原理

博主头像 一、概述 1.1 什么是事务? 事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作:要么同时成功,要么同时失败 1.2 事务的特性:ACID 原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败 ...

MySQL 密码防暴力破解插件:Connection Control

博主头像 Connection Control 是 MySQL 8.0 引入的一个安全功能插件,后移植到 MySQL 5.7.17 和 5.6.35 版本。 其核心功能是:当客户端因账号或密码错误连续多次登录失败时,服务端会对该客户端的后续请求进行延迟处理,且失败次数越多,延迟时间越长。这一机制能显著增加密码 ...

了解Mysql优化吗?如何优化索引?

博主头像 对索引使用左或者左右模糊匹配 在MySQL中,LIKE 模糊查询可能会导致性能问题,特别是当使用通配符 % 开头时,因为这通常会导致全表扫描,也就是 like %xx 或者 like %xx% 这两种方式 (左或者左右模糊匹配的时候) 都会造成索引失效。 前缀匹配:一般使用LIKE 'prefix% ...

图表接口按日期的统计查询开发

博主头像 需求 在图表统计时,经常会有要按日期去统计数据的情况,如统计每日的点击量,使用量,查看量等数据,通过查看一段时间内的连续数据来感知指标的趋势变化。 这图表的数据需要每天的数据,即使当天没有数据也要能汇总结果0. SQL语句 以下示例基于示例的用户表: CREATE TABLE `user` ( `i ...

Windows 同时安装多个 MySQL

博主头像 记一次在 Windows 环境下手动安装多个不同版本的 MySQL 的过程,并且设置手动启动服务,避免长时间占用后台资源。 1. 下载 MySQL 软件压缩包 下载网址:https://dev.mysql.com/downloads/mysql/ 找到需要的 MySQL 版本,选择 Windows ...

MySQL事务原理:从ACID到隔离级别的全解析

博主头像 事务的四个特性ACID 原子性(Atomicity):语句要么全执行,要么全不执行,是事务最核心的特性,事务本身就是以原子性来定义的;实现主要基于undo log 持久性(Durability):保证事务提交后不会因为宕机等原因导致数据丢失;实现主要基于redo log 隔离性(Isolation) ...

MySQL 26 备库为什么会延迟好几个小时

博主头像 上一篇文章介绍的场景中,对备库延迟的影响一般是分钟级的。但如果备库执行日志的速度持续低于主库生成日志的速度,那这个延迟就可能成了小时级别。这就涉及今天介绍的话题:备库并行复制能力。 主备流程图: 主备的并行复制能力主要是上图的两个黑色箭头,一个箭头代表客户端写入主库,另一个箭头代表备库上sql_th ...

MySQL 25 MySQL是怎么保证高可用的?

博主头像 正常情况下,只要主库执行更新生成的所有binlog,都可以被传到备库并被正确地执行,备库就能达到跟主库一致的状态,这就是最终一致性,而MySQL要提供的高可用能力,只有最终一致性是不够的。 主备延迟 主备切换可能是一个主动运维动作,比如软件升级、主库所在机器按计划下线等,也可能是被动操作,比如主库所 ...

为什么要有 Buffer Pool?Mysql缓存能否替代Redis?

博主头像 查询缓存的作用? 执行查询语句的时候,会先查询缓存。不过,MySQL 8.0 版本后移除,因为这个功能不太实用 开启查询缓存后在同样的查询条件以及数据情况下,会直接在缓存中返回结果。这里的查询条件包括查询本身、当前要查询的数据库、客户端协议版本号等一些可能影响结果的信息。 查询缓存不命中的情况: 任 ...

聚集索引与非聚集索引的区别

博主头像 聚集索引(Clustered Index)和非聚集索引(Non-Clustered Index)是索引设计的核心概念,二者的本质区别体现在 与数据物理存储的关联方式 上,这种区别直接决定了它们的性能特性和适用场景。 ...

MySQL 24 MySQL是怎么保证主备一致的?

博主头像 MySQL主备的基本原理 状态1中,客户端读写都是直接访问节点A,节点B只是将节点A的更新同步过来在本地执行。当需要主备切换时,就变成状态2。 状态1中没有直接访问节点B,但仍然建议把节点B设置成只读模式,原因如下: 有时一些运营类的查询语句会被放到备库上查看,设置为只读可以防止误操作; 防止切换逻 ...

MySQL 23 MySQL是怎么保证数据不丢的?

博主头像 只要redo log和binlog保证持久化到磁盘,就能确保MySQL异常重启后,数据可以恢复。本文讲讲MySQL写入binlog和redo log的流程。 binlog的写入机制 binlog的写入逻辑比较简单:事务在执行过程中,先把日志写到binlog cache,事务提交的时候,再把binlo ...

工具分享-通过开源工具 tuning-primer快速巡检MySQL5.7

博主头像 工具分享-通过开源工具 tuning-primer快速巡检MySQL5.7 简介 今天推荐一个开源的调优脚本tuning-primer.sh,这是一个非常实用的性能调优工具,能够快速检查 MySQL 的运行状态,生成详细的性能报告,并提供优化建议。通过这个脚本,可以更高效地完成调优工作,节省大量的时 ...

分享一个 MySQL binlog 分析小工具

博主头像 去年写的一个小工具,用于在线获取 MySQL binlog 的大小、开始时间、结束时间和持续时长。 什么场景下会用上这个工具呢? 云服务场景,无法登录 MySQL 服务器查看 binlog 的时间戳信息。 主从延迟时,可以使用这个工具来查看 binlog 的大小或者某个时间段 binlog 的写入量 ...

<123···14>