探秘InnoDB:搞懂它的内存、线程、磁盘与日志刷盘策略
New
InnoDB通过精心设计的内存缓冲、异步后台线程、多层日志和灵活刷盘策略
你是否想过:MySQL的InnoDB引擎为什么能扛住高并发?它用什么魔法把数据“缓存”在内存?万一数据库崩溃,它又怎么保证数据不丢?今天,我们用图文并茂的方式,把InnoDB的里里外外拆给你看。
一、先看全景:一张图认识InnoDB
InnoDB的架构可以 ...
mysqldump 参数拾遗:在遗忘与铭记之间
mysqldump工具在灾备恢复、DB间数据同步(含Server实例间同步)、主从搭建等场景下都拥有一席之地。可以说,它是DBA常用工具之一,所以就要求我们对其参数真正的了解掌握,特别是一些常用容易搞混、忽略的参数。因而,对mysqldump 那些被忽略的“摆渡”指令,要常常“淘”出来,Review 下。
一. 影响DB的参数
影响DB的参数, ...
逃离SQL丛林:实用主义的数据救赎
👋 Hi,数据分析圈的朋友们!
你是不是也经历过这样的场景:
老板问:"上周的复购率是多少?"
你查了A表,算出来是18%;
同事查了B表,说是23%;
运营同学从后台导出,又是20.5%……
三个人,三个数,谁都没错,但就是对不上。😅
别慌,这不是你一个人的问题。今天咱们聊聊一个很多数据团队都会踩的坑——"SQL丛林"。
1. ...
2、SEATA分布式事务——AT模式
SEATA的AT模式和XA模式一样,也是2阶段提交,但是AT模式没有利用数据库的XA协议,如下所示:
从上面的图可以看到,seata AT 模式分为以下5个步骤:
①、TM(事务管理器) 开启全局事务;
②、RM 向 TC(事务协调者) 注册分支事务;
③、RM(资源管理器,也就是要访问数据库的进程或线程)记录undo-log(数据快照);
...
MyBatis-Plus实战:从入门到精通的10个技巧
前言
MyBatis-Plus是MyBatis的增强工具,在MyBatis基础上只做增强不做改变,简化CRUD操作。本文总结10个实用技巧,帮你快速掌握MP的核心用法。
技巧1:快速入门
// 依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.5</version>
</depende ...
1、SEATA分布式事务——XA模式
一、传统分布式XA事务的2PC
2PC 即两阶段提交协议,是将整个事务流程分为两个阶段,准备阶段(Prepare phase)、提交阶段(commit phase),2 是指两个阶段,P 是指准备阶段,C 是指提交阶段。常见的关系型数据库如 Oracle、MySQL 都支持两阶段提交协议,如下图:
成功情况
失败情况
①、准备阶段(Prepare pha ...
mysql数据库事务的实现和XA事务
一、事务的实现
1.1、事务的执行流程
根据上图,事务的执行流程如下:
①查询操作先从Buffer Pool中查询数据,若存在则直接输出,不存在则读取磁盘中的数据并放入Buffer Pool;
②在操作任何数据之前,会先将数据的旧值写入undo log日志文件中,以便执行事务过程中出现异常后好回滚到事务执行之前的数据;
③然后再操作Buf ...
MySQL优化全攻略:索引、SQL与分库分表的最佳实践
SQL优化一般步骤
慢日志定位
通过慢查日志等定位那些执行效率较低的SQL语句
MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10S以上的语句。默认情况下,Mysql数 ...
Spring Boot 3.x 整合AI大模型实战:手把手带你接入DeepSeek API
前言
MySQL索引是数据库性能优化的核心,掌握索引原理和优化技巧是后端开发的必备技能。本文从原理到实战,带你全面掌握MySQL索引优化。
一、索引是什么?
索引类似书的目录,帮助MySQL快速定位数据,避免全表扫描。
索引类型:
主键索引:数据行的物理存储顺序
唯一索引:允许NULL,不允许重复值
普通索引:基本的索引类 ...
MySQL如何修改组复制通信栈(Communication Stack)
之前总结过一篇文章MySQL组复制的通信栈Communication Stack, 下面介绍如果修改MySQL MGR通信栈类型.
MGR通信栈修改为XCOM
查看当前MySQL MGR/InnoDB Cluster的通信栈类型/通信栈协议
mysql> SELECT MEMBER_HOST
-> ,MEMBER_PORT
-> ,MEMBER_COMMUNICATION_STACK
-> FROM performance_schema.repl ...
Redis数据库服务架构搭建
1.Redis数据库服务架构搭建
1)redis高可用架构搭建(哨兵模式架构)
架构功能作用:
-- 在主节点故障后,自动选择从节点变为新的主节点
-- 在主节点故障后,可以实现主从架构重新构建
架构部署规划
主库 10.0.0.51
从库 10.0.0.52
从库 10.0.0.53
哨兵节点01 10.0.0.54 对主库监控 将主库角色转移到从节 ...
数据库服务读写分离架构
数据库服务读写分离架构
准备工作
读写分离架构作用:主要可以实现将大量读请求,实现负载均衡,从而减少单点数据库并发访问压力
读写分离架构软件:ProxySQL 数据中间件(客户端 -- 中间件软件 -- 数据库服务端)
读写分离架构搭建:
架构环境规划
主库 10.0.0.51
从库 10.0.0.52
从库 10.0.0.53
MHA 10 ...
搭建数据库服务高可用架构
搭建数据库服务高可用架构
为了实现数据服务主库异常后,可以将从库自动切换为主库
1.搭建高可用主从架构
架构环境规划 -- centos 7.9
主库 10.0.0.51 8.0.36 MHA-node
从库 10.0.0.52 8.0.36 MHA-node
从库 10.0.0.53 8.0.36 MHA-node
mgr 10.0.0.54 8.0.36 MHA-node MHA-manager
MHA-ma ...
数据库主从同步架构
数据库主从同步架构
(1)常见主从同步异常情况
IO线程异常
-- IO线程状态显示为:connecting
异常问题原因01: 连接主库配置错误,主库网络或用户信息匹配从库配置信息
异常问题原因02: 主从之间网络通讯被阻止
异常问题原因03: 主从之间连接没有空闲连接数,可以实现主从建立连接了
-- IO线程状态显示为:no
异常问题原因 ...
MySQL组复制的通信栈Communication Stack
有人询问MySQL InnoDB Cluster中,group_replication_local_address参数设置的端口跟MySQL监听端口一致, 这样会冲突吗? 为什么他将节点加入InnoDB Cluster报错?
简单展示如下:
mysql> show variables like 'port';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port | 3306 ...
怎么样在MySQL上使用备份恢复
1.数据库服务备份恢复操作
物理备份数据方式
# 拷贝数据库数据目录信息,实现物理备份(冷备)
步骤一:停止数据库服务
/etc/init.d/mysqld stop
步骤二:将数据库目录进行拷贝/压缩
cp -a /data/3306/data /backup/data-2026-03-05
步骤三:模拟数据库损坏
drop database oldboy;
drop database school;
drop database ...
MySQL InnoDB Cluster节点重新加入集群踩坑案例
案例,一个MySQL InnoDB Cluster集群中两个节点处于MISSING状态. 接手后通过沟通发现出现这么一个状态的大概原因:InnoDB Cluster集群中三个节点被人同时重启,
后续反复重启折腾,而且出现问题后没有解决.而是将第一个节点作为引导节点,当前的具体状态如下所示集群节点信息做了混淆)
MySQL mysql01:3306 ssl JS > cluster.s ...
数据库服务日志管理
01-数据库服务日志管理
二进制日志管理
1.二进制日志格式设置
查看数据库二进制日志事务信息,对于DML语句相关事务操作内容无法查看?
若出现以上查看日志信息问题,需要对数据库二进制日志格式做修改
binlog_format -- 影响数据库二进制日志记录DML语句信息形式
statement(SBR) -- 采用语句格式进行记录DML语句日志信 ...
数据库事务机制
数据库事务机制功能介绍
1.事务功能作用
功能作用:事务功能主要是保证数据库中数据的安全性
事务机制:ACID
详细ACID参考链接:https://dev.mysql.com/doc/refman/8.4/en/mysql-acid.html
A: atomicity(原子性)
在一个事务中,做的所有语句操作,要么都成功,要么都失败,不能有部分成功部分失败的情况
银行转账 账户A ...
数据库服务存储引擎
①.数据库服务存储引擎介绍
存储引擎官方网站资料:https://dev.mysql.com/doc/refman/8.4/en/innodb-storage-engine.html
1.什么是存储引擎/存储引擎有什么作用
利用存储引擎可以有效管理磁盘和内存硬件,实现数据库服务数据调取和数据存储
1.客户端
包含连接工具信息(命令/工具/程序)
2.服务端
包含连接层:负责实现 ...