自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

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

2025-03-31 09:32:20 985

原创 深入解析 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 947

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

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

2025-02-24 07:37:25 947

原创 基于源码分析 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 641

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

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

2024-12-23 08:53:58 576

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

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

2024-10-28 11:06:45 967

原创 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 1308

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

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

2024-07-23 11:14:33 1160

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

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

2024-07-22 07:49:08 998

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

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

2024-07-01 14:37:29 1149

原创 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 526 1

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

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

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

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

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

2024-01-08 12:52:05 1226

原创 什么是 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 701 1

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

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

2023-12-12 15:10:52 1305

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

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

2022-11-07 10:04:22 670

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

一文搞懂 MGR 的流控机制!

2022-10-17 07:52:06 673

原创 从源码分析 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 618 1

原创 Binlog分析利器-binlog_summary.py

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

2021-08-08 14:14:36 1950 1

linux挂载windows格式文件

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

2013-10-07

空空如也

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

TA关注的人

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