自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (1)
  • 收藏
  • 关注

原创 Redis 调优:必须关注的几个参数

在一台未经过任何调优的 Linux 服务器上部署 Redis,在 Redis 启动过程中,可能会碰到以下警告信息。这些警告信息实际上是在提醒我们,操作系统的某些参数设置得不合理,需要调整,否则会影响 Redis 的性能和稳定性。:设置 TCP 服务器中listen()的 backlog 参数。:在进程级别关闭透明大页(THP)。:在连接级别设置 TCP Keepalive 参数。:可将 Redis 进程或后台 I/O 线程绑定到指定 CPU。:调整进程的 oom_score。

2026-01-19 10:06:59 618

原创 Redis 7.0 新特性之maxmemory-clients:限制客户端内存总使用量

之前分享个 case([Redis 内存突增时,如何定量分析其内存使用情况 ](https://mp.weixin.qq.com/s/28Cgo4o97AUc2L5qKpTSIw),一个 Redis 实例的内存突增,最大时达到了 78.9G,而该实例的maxmemory配置却只有 16G,最终导致实例中的数据被大量驱逐。导致这个问题的一个常见原因是客户端占用的内存过多。Redis 中,客户端内存主要包括三部分:输入缓冲区(暂存客户端命令)、输出缓冲区(缓存发送给客户端的数据),以及客户端对象本身的开销。

2025-12-31 07:26:23 496

原创 MySQL 在哪些场景下不会写 binlog

虽然上面列举的场景较多,但实际上并不需要大家刻意去记。简单来说,凡是 MySQL 内部自动执行的操作(即非用户手动执行的操作),通常不会写入 binlog。典型场景包括:实例初始化与升级、表的写入、数据字典的维护、表数据的更新等。对 mysql 库下的表进行 DML 操作,只要不属于上面提到的特殊类别的表,基本都会写入 binlog。但若执行的是 DDL 操作(如 truncate),基本都会写入 binlog。

2025-12-22 15:55:46 1079

原创 MySQL 8.4:未使用 mysql_native_password 却报插件未加载(Plugin ‘mysql_native_password‘ is not loaded)?

MySQL 8.4 登录问题分析:没有用户使用 mysql_native_password,为什么登录时会报 “Plugin 'mysql_native_password' is not loaded”。

2025-11-24 09:06:45 762

原创 案例分析:MySQL 并行复制竟然比单线程慢?

同一个 binlog,没想到多线程重放竟比单线程慢了四倍多!

2025-10-20 12:31:29 1062

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

Connection Control 是 MySQL 8.0 引入的一个安全功能插件,后移植到 MySQL 5.7.17 和 5.6.35 版本。其核心功能是:当客户端因账号或密码错误连续多次登录失败时,服务端会对该客户端的后续请求进行延迟处理,且失败次数越多,延迟时间越长。这一机制能显著增加密码被暴力破解的耗时,从而有效遏制此类攻击。

2025-08-18 09:36:38 449

原创 介绍一个 MySQL binlog 分析小工具

介绍一款简单实用的 MySQL binlog 分析工具,帮你轻松查看 binlog 文件大小、开始时间、结束时间和持续时长。

2025-07-28 08:28:56 392

原创 Java应用出现 Public Key Retrieval is not allowed 报错的常见原因和解决方法

Java 应用在运行过程中突然报错误。开发童鞋表示不理解,毕竟应用没做任何变更,为什么会突然出现这个错误?

2025-05-12 10:14:33 1281

原创 基于源码分析 HikariCP 常见参数的具体含义

本文从源码角度对 HikariCP 中的一些常见参数进行分析,希望能帮助大家更加清晰地理解这些参数的具体含义。

2025-04-14 11:29:32 1156

原创 如何定位 Druid & HikariCP 连接池的连接泄漏问题?

在数据库连接池的使用中,连接泄漏是一个常见且严重的问题。本文通过分析一个实际的案例,探讨了连接泄漏的危害、产生原因以及如何在 Druid 和 HikariCP 这两种常见的连接池中定位和解决连接泄漏问题。

2025-03-31 09:32:20 1388

原创 深入解析 Druid 连接池:连接有效性检测与 Keep-Alive 机制

应用出现“Communications link failure The last packet successfully received from the server was xxx milliseconds ago.”错误,你的 Druid 连接池配置对了吗?

2025-03-17 11:17:15 1506

原创 Redis 大 Key 分析利器:支持 TOP N、批量分析与从节点优先

推荐一个比 redis-cli 更强大的 Redis 大 Key 分析工具

2025-02-24 07:37:25 1219

原创 基于源码分析 SHOW GLOBAL STATUS 的实现原理

Server 层面的状态变量:这些状态变量主要在(mysqld.cc)中定义。在 MySQL 8.4 中,共有 321 个状态变量。其中包括了 com_status_vars 中定义的 167 个 Com 相关的变量。插件中的状态变量:InnoDB:在(ha_innodb.cc)中定义 ,共 76 个。半同步复制:在(semisync_source_plugin.cc)中定义,共 14 个,从库只有 1 个。组复制:在(plugin.cc)中定义,共 22 个。

2025-01-06 08:14:57 737

原创 MySQL 优化利器 SHOW PROFILE 的实现原理

通过可传输表空间的方式导入一个 4GB 大小的表,为什么大部分耗时是在System lock阶段?

2024-12-23 08:53:58 663

原创 基于案例分析 MySQL 权限认证中的具体优先原则

哈哈,双十一来了,顺便安利下我的书-《MySQL实战》!目前收到的反馈都还不错,值得 DBA 拥有~

2024-10-28 11:06:45 1113

原创 Redis 内存突增时,如何定量分析其内存使用情况

在这些内存开销中,used_memory_startup 基本不变,mem_replication_backlog 受 repl-backlog-size 的限制,used_memory_scripts 开销一般不大,而字典的内存开销则与数据量的大小成正比。需要注意的是,used_memory_dataset 并不是根据 Key 的数量及 Key 使用的内存计算出来的,而是通过 used_memory 减去 used_memory_overhead 得到的。接下来,我们看看如何系统地分析这类问题。

2024-09-23 09:17:10 1567

原创 MySQL 主从延迟的常见原因及解决方法

综合上面的分析,主从延迟的常见原因及解决方法如下图所示。

2024-07-23 11:14:33 1338

原创 如何让 MGR 不从 Primary 节点克隆数据?

MGR 选择 Donor 是随机的。MGR 在执行克隆操作之前,会将 clone_valid_donor_list 设置为 Donor 的 endpoint,所以,在启动组复制之前,在 mysql 客户端中显式设置 clone_valid_donor_list 是没有效果的。MGR 执行克隆操作,实际上调用的就是命令。

2024-07-22 07:49:08 1086

原创 升级到 MySQL 8.4,MySQL 启动报错:io_setup() failed with EAGAIN

最近碰到一个 case,一台主机上,部署了多个实例。之前使用的是 MySQL 8.0,启动时没有任何问题。但升级到 MySQL 8.4 后,部分实例在启动时出现了以下错误。下面我们来分析下这个报错的具体原因及解决方法。

2024-07-01 14:37:29 1432

原创 SHOW PROCESSLIST 最多能显示多长的 SQL?

在 MySQL 中,如果我们想查看实例当前正在执行的 SQL,常用的命令是。但如果 SQL 过长的话,就会被截断。这时,我们一般会用来查看完整的 SQL。最近碰到一个 case,发现无论是使用,还是 performance_schema.processlist 都无法获取完整的 SQL,反倒 information_schema.processlist 可以。最后发现,无法查看完整的 SQL 竟然与 performance_schema_show_processlist 参数有关。

2024-06-17 11:18:46 698 1

原创 没想到,JDBC 驱动会偷偷修改 sql_mode 的会话值

同一个SQL,在 mysql 客户端中执行提示 warning,但在 java 程序中执行却又报错。

2024-03-04 09:23:16 1578 1

原创 从源码分析 MySQL 身份验证插件的实现细节

mysql.user 中的 authentication_string 字段存储的是。服务端对客户端进行身份验证的流程图如下:服务端在对客户端进行身份验证时,会首先发送一个 20 字节的盐值,客户端接受到这个盐值后,会返回一个通过以下公式计算的加密密码。

2024-01-08 12:52:05 1362

原创 什么是 MySQL JDBC 连接池中最高效的连接检测语句?

isValid 方法是在 JDBC4 中引入的。JDBC 是 Java 用于与关系型数据库通信的标准API。JDBC4 指的是 Java Database Connectivity (JDBC) 的第 4 版本,该版本是在 Java 6(也被称为Java 1.6)中引入的。所以只要程序使用的是 Java 1.6 及以上的版本,都支持 isValid 方法。下面,我们看看这个方法的实现原理。@Override。

2023-12-26 12:31:49 904 1

原创 如何将 performance_schema 中的 TIMER 字段转换为日期时间

最近有好几个朋友问,如何将 performance_schema.events_statements_xxx 中的 TIMER 字段(主要是TIMER_START和TIMER_END)转换为日期时间。因为 TIMER 字段的单位是皮秒(picosecond),所以很多童鞋会尝试直接转换,但转换后的结果并不对,看下面这个示例。下面会从源码角度分析 TIMER 字段的生成逻辑。对源码分析不感兴趣的童鞋,可直接跳到后面的案例部分看结论。

2023-12-12 15:10:52 1574

原创 基于案例分析 MySQL Group Replication 的故障检测流程

故障检测(Failure Detection)是 Group Replication 的一个核心功能模块,通过它可以及时识别集群中的故障节点,并将故障节点从集群中剔除掉。如果不将故障节点及时剔除的话,一方面会影响集群的性能,另一方面还会阻止集群拓扑的变更。下面结合一个具体的案例,分析 Group Replication 的故障检测流程。

2022-11-07 10:04:22 846

原创 从源码分析 MySQL Group Replication 的流控机制

一文搞懂 MGR 的流控机制!

2022-10-17 07:52:06 839

原创 从源码分析 MySQL Group Replication 的新主选举算法

结合代码和上面四个案例的分析,最后我们总结下 MGR 的新主选举算法:如果集群中存在 MySQL 5.7 的节点,则会将 MySQL 5.7 的节点作为候选节点。如果最小版本小于 MySQL 8.0.17,则所有的节点都可作为候选节点。如果最小版本大于等于 MySQL 8.0.17,则只有最小版本的节点会作为候选节点。在候选节点的基础上,会进一步根据候选节点的权重和 server_uuid 选择 Primary 节点。具体来说,

2022-10-14 10:48:56 713 1

原创 Binlog分析利器-binlog_summary.py

Binlog中,除了具体的SQL,其实,还包含了很多有价值的信息,如,事务的开始时间。事务的结束时间。事务的开始位置点。事务的结束位置点。操作的开始时间(一个事务通常会包含多个操作)。表的操作信息,如哪些表执行了哪些操作。拿到上面这些信息,我们可以做哪些事情呢?基于事务的开始位置点和结束位置点,我们可以得到事务的大小。知道了事务的大小,可用来判断它是否为大事务,是否是导致主从延迟的原因。基于事务的开始时间和结束时间,我们可以得到事务的持续时间。通过分析表的操作信息,可间接定位出线上

2021-08-08 14:14:36 2073 2

linux挂载windows格式文件

linux ntfs-3g,用于挂载ntfs格式的文件

2013-10-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除