
数据库
文章平均质量分 93
爱可生开源社区
成立于 2017 年,以开源高质量的运维工具、日常分享技术干货内容、持续的全国性的社区活动为社区己任;目前开源的产品有:SQL审核工具 SQLE,分布式中间件 DBLE、数据传输组件DTLE。
展开
-
第 53 期:MySQL 创建了用户却无法登陆
针对该问题,ChatDBA 上述的排查步骤虽然解决了问题,但是并没有解释问题出现的根本原因。| user |针对这个情况我们也问了一下 ChatDBA。使用sky1@%用户通过 socket 登录,host 被识别为localhost。在mysql.user表中,有两个匿名用户(和根据 MySQL 5.6 的匹配规则,虽然有一个sky1@%的用户存在,但由于存在一个的匿名用户,MySQL 优先匹配这个匿名用户。由于匿名用户没有密码,当你输入sky1@%原创 2024-06-03 16:08:28 · 1062 阅读 · 0 评论 -
MySQL 核心模块揭秘 | 17 期 | InnoDB 有哪几种行锁?
InnoDB 有哪几种行锁,其中比较特殊的插入意向锁为什么而存在?原创 2024-05-22 15:42:16 · 332 阅读 · 0 评论 -
MySQL 隐式转换必知必会
在生产环境中经常会有一些隐式类型转换导致SQL索引失效,性能极差,进而影响影响集群负载和业务的情况。本文总结了隐式转换常见的场景,在生产中要尽量避免 SQL 隐式转换的出现。原创 2024-05-21 17:13:23 · 598 阅读 · 0 评论 -
《一问一实验:AI 版》520 献给 DBA 们的 AI
🥳 社区王牌专栏《一问一实验:AI 版》全新归来,在 520 这个充满爱的特殊日子里,献上一份属于 DBA 们的爱(AI)。原创 2024-05-20 17:42:11 · 740 阅读 · 0 评论 -
MySQL 核心模块揭秘 | 16 期 | InnoDB 表锁
server 层。存储引擎。基于以上两层结构,MySQL 的锁也可以分为两大类。server 层的锁,就是让我们头痛不已的元数据锁(MDL)。存储引擎的锁,取决于各存储引擎的实现。InnoDB 支持表锁、行锁、谓词锁(用于空间索引,我们不会介绍)。表锁分为共享锁(S)、排他锁(X)、意向共享锁(IS)、意向排他锁(IX)、AUTO-INC 锁。行锁分共享锁(S)、排他锁(X),以及有点特殊的插入意向锁(普通记录锁(LOCK_REC_NOT_GAP)。间隙锁(LOCK_GAP)。原创 2024-05-17 11:22:54 · 933 阅读 · 0 评论 -
MySQL 核心模块揭秘 | 15 期 | 事务模块小结
👆 事务执行过程中产生的 binlog 日志,写入 binlog 日志文件之前,需要有个临时存放的地方。👆 事务有不同的身份,比如读事务、只读事务、读写事务。这篇文章介绍了读事务、只读事务的身份什么时候会发生变化,以及会发生什么样的变化。👆 这篇文章介绍了开启一个事务的各种 SQL 语句,并且以 BEGIN 为代表,介绍了开始一个事务的过程。👆 事务池和管理器是事务模块的基石,把它们的初始化过程作为专栏的第一篇文章,再合适不过了。👆 回滚整个事务,属于我们经常用到的功能,这篇文章介绍了回滚整个事务的过程。原创 2024-04-24 14:15:43 · 500 阅读 · 0 评论 -
MySQL 核心模块揭秘 | 13 期 | 回滚到 savepoint
回滚整个事务,主要分为三大步骤。第 1 步,执行 binlog 回滚操作,其实什么也没干。第 2 步,执行 InnoDB 回滚操作,会把事务执行过程中改变(插入、更新、删除)的记录恢复原样(至少从逻辑上来看是这样的)。最后,还会提交 InnoDB 事务,让回滚操作对数据页的修改生效。第 3 步,清除事务执行过程中产生的、临时存放于 trx cache 中的 binlog 日志。本期问题:关于本期内容,如有问题,欢迎留言交流。原创 2024-04-18 15:50:41 · 1100 阅读 · 0 评论 -
MySQL 核心模块揭秘 | 11 期 | InnoDB 提交事务,提交了什么?
InnoDB 提交事务,就像我们填完一个表格之后,最后盖上的那个戳,总体上来说,要干 3 件事。第 1 件,修改分配给事务的各 undo 段的状态。如果数据库发生崩溃,重新启动后,undo 段的状态是影响事务提交还是回滚的因素之一。第 2 件,修改事务对象的状态。如果数据据库一直运行,不发生崩溃,就靠事务对象的状态来标识事务是否已提交。第 3 件,把各 undo 段中的 undo 日志组加入链表。其它事务都不再需要使用这些 undo 日志时,后台 purge 线程会清理这些 undo 日志组中的日志。原创 2024-03-28 09:55:29 · 462 阅读 · 0 评论 -
MySQL 核心模块揭秘 | 10 期 | binlog 怎么写入日志文件?
binlog 日志文件包含两部分:内存 buffer、磁盘文件。内存 buffer 的大小固定为 8K。二阶段提交的 flush 子阶段,会从 trx_cache 中读取 binlog 日志,写入 binlog 日志文件。本期问题:如果事务执行过程中产生的 binlog 日志直接写入 binlog 日志文件,会有什么问题吗?欢迎留言交流。下期预告:MySQL 核心模块揭秘 | 11 期 | InnoDB 提交事务,提交了什么?原创 2024-03-21 09:58:54 · 497 阅读 · 0 评论 -
MySQL 核心模块揭秘 | 08 期 | 二阶段提交 (2) commit 阶段
二阶段提交的 commit 阶段分为三个子阶段:flush 子阶段、sync 子阶段、commit 子阶段。flush 子阶段会把 prepare 阶段及之前产生的 redo 日志都刷盘,把事务执行过程中产生的 binlog 日志写入 binlog 日志文件。sync 子阶段会根据系统变量 sync_binlog 的值决定是否把 binlog 日志刷盘。为了避免每个事务各自提交,触发操作系统对同一个页频繁的重复刷盘,InnoDB 引入了组提交。原创 2024-03-06 13:18:39 · 1285 阅读 · 0 评论 -
第42问:MySQL 8.0 的临时表会让一片磁盘空间“消失“
问在 MySQL 8.0 中, 使用临时表时, 会发现有1G的磁盘空间"消失"了实验我们先宽油做一个 MySQL 8.0.25 的实例. 此处我们忽略创建的步骤, 大家可参考以前的实验.还是用我们熟悉的翻倍法, 造一张表:不停执行最后一句 SQL , 让表中含有足够多的记录:这里我们设置两个临时表的配置参数, 稍后再解释其作用:我们还需要设置好 performance_schema , 用来观察整个过程:还需要记录一下目前的磁盘容量:现在我们下一个使用临时表的 SQL , 参考.原创 2021-07-09 14:26:49 · 395 阅读 · 0 评论 -
技术分享 | MySQL 字段长度限制的计算方法
作者:kay擅长 Oracle、MySQL、PostgresSQL 等多种数据库领域擅长 Oracle、MySQL 性能优化、数据库架构设计、数据库故障修复、数据迁移以及恢复热衷于研究 MySQL 数据库内核源码、分享技术文章,并拥有 Oracle OCP 认证就职于江苏国泰新点软件有限公司,DBA 技术团队成员一、MySQL 限制回顾之前在《MySQL Text 字段的限制》一文...原创 2020-02-27 17:28:52 · 983 阅读 · 0 评论 -
技术分享 | MySQL TEXT 字段的限制
作者:kay擅长 Oracle、MySQL、PostgresSQL 等多种数据库领域擅长 Oracle、MySQL 性能优化、数据库架构设计、数据库故障修复、数据迁移以及恢复热衷于研究 MySQL 数据库内核源码、分享技术文章,并拥有 Oracle OCP 认证就职于江苏国泰新点软件有限公司,中央研究院-DBA 技术团队成员一、背景说明项目中有一个数据交换的场景,由于使用了很多个 ...原创 2020-02-26 17:01:52 · 2821 阅读 · 0 评论 -
新特性解读 | MySQL 8.0 新特性-副本集(replicaset)
作者:杨涛涛引言之前,我介绍过一篇《MySQL Innodb Cluster 扫盲篇》。MySQL Innodb Cluster = MySQL Shell + MySQL Router + MySQL Group Replication(MGR)全程由 MySQL Shell 来管理操作 MGR 的聚合套件。MySQL 8.0.19 发布后,这种组合延伸到 MySQL Replica...原创 2020-02-24 17:38:18 · 1063 阅读 · 0 评论 -
故障分析 | binlog flush 失败导致的 Crash
作者:xuty开个坑,记录自己平时由于解决问题需要或是兴趣研究进行的 MySQL 源码跟踪学习过程。一、问题现象某项目上出现 MySQL Crash,相关 errorlog 日志如下,从日志可以看出是 binlog error 导致的问题,但是无法确认具体原因,网上大部分资料都说是由于空间已满导致,后来在系统日志(/var/log/message)中确实找到了 / 分区空间已满的信息,所...原创 2020-02-21 20:44:37 · 1546 阅读 · 1 评论 -
技术分享 | 从库 MTS 多线程并行回放(二)
作者:高鹏本节包含一个笔记如下:https://www.jianshu.com/p/e920a6d33005这一节会先描述 MTS 的工作线程执行 Event 的大概流程。然后重点描述一下 MTS 中检查点的概念。在后面的第 25 节我们可以看到,MTS 的异常恢复很多情况下需要依赖这个检查点,从检查点位置开始扫描 relay log 做恢复操作,但是在 GTID AUTO_POSITI...原创 2020-02-20 17:56:23 · 401 阅读 · 0 评论 -
技术分享 | 从库 MTS 多线程并行回放(一)
作者:高鹏(八怪)本节包含分发调用流程请参考链接:https://www.jianshu.com/p/8706d7422d89一、综述与单 SQL 线程的回放不同,MTS 包含多个工作线程,原有的 SQL 线程蜕变为协调线程。SQL 协调线程同时还承担了检查点的工作。我们知道并行回放的方式有两种,包含 LOGICAL_CLOCK 和 DATABASE,体现在判定哪些事物能够并行回放的规...原创 2020-02-19 18:27:19 · 721 阅读 · 0 评论 -
技术译文 | 使用 TCP Wrappers 保护 MySQL 如何导致服务中断
作者:Ananias Tsalouchidis翻译:孟维克原文:https://www.percona.com/blog/2020/01/07/how-securing-mysql-with-tcp-wrappers-can-cause-an-outage/案例保护 MySQL 总是一个挑战。有一些通用的最佳实践可用于安装加固,但是您的设置越复杂,就越有可能遇到一些难以排查的故障的问...翻译 2020-02-18 17:20:53 · 307 阅读 · 0 评论 -
技术分享 | 快速掌握 MySQL 8.0 认证插件的使用
作者:郭斌斌引言MySQL 8.0.15 版本主从复制时,io 线程一直处于 connecting 状态, 由于复制用户使用的认证插件是 caching_sha2_password,而想要通过 caching_sha2_password 认证的用户访问数据库,只有两个途径:使用加密连接使用支持 RSA 密钥对,进行密码交换的非加密连接之前 change master to 时,未进...原创 2020-02-17 17:03:37 · 397 阅读 · 0 评论 -
图解MySQL | [原理解析] Adaptive Hash Index 是如何建立的
转载自公众号:图解MySQLAdaptive Hash Index(以下简称 AHI)估计是 MySQL 的各大特性中,大家都知道名字但最说不清原理的一个特性。本期图解我们为大家解析一下 AHI 是如何构建的。首先我们思考一下 AHI 是为了解决什么问题:随着 MySQL 单表数据量增大,(尽管 B+ 树算法极好地控制了树的层数)索引 B+ 树的层数会逐渐增多;随着索引树层数增多,检...转载 2020-02-14 18:23:10 · 251 阅读 · 0 评论 -
技术分享 | Jump Consistent Hash 原理解析(上篇)
作者:傅文辉之前爱可生开源社区公众号发表了dble 沿用 jumpstringhash,移除 Mycat 一致性 hash 原因解析, 阐述了跳跃法相对环割法的性能优势。很多读者表示对其中"跳跃法的原理"不是很理解,本文就来详细阐述一下。一致性哈希首先,我们的需求是,将数据(key-value pair)分布在多个节点上。这点可以简单的用取模实现,节点key11 ...原创 2020-02-13 17:32:25 · 836 阅读 · 0 评论 -
新特性解读 | MySQL 8.0.19 支持 DNS SRV
转载自公众号:玩转MySQL作者:洪斌MySQL Router 是 InnoDB Cluster 架构的访问入口,在架构部署上,官方给出的建议是 router 与应用端绑定部署,避免 router 单点问题。之前还有客户咨询,能否 router 不与应用端绑定部署,不便于部署,在此之前都需要在 router 前面加 VIP 或者一层负载均衡。我还在想这事儿就应该由 MySQL Conn...转载 2020-02-12 17:09:48 · 516 阅读 · 0 评论 -
技术分享 | 快速处理 MySQL 重复数据小妙招
作者:杨涛涛正好最近在帮客户从达梦数据库迁移到 MySQL。我也来简单说说重复数据的处理。存放在数据库中的数据分为三种:一种是经过严格意义过滤出来的数据。比如程序端过滤数据源、数据库端在表字段上设置 check 标记过滤数据源、设置触发器过滤、调用存储过程过滤等等;另一种是原始的没有经过任何处理的数据。比如程序端代码异常导致产生非正常的想要的数据、数据库端没有设置任何过滤规则的数据保...原创 2020-02-10 14:20:25 · 396 阅读 · 0 评论 -
技术译文 | MySQL 8.0.19 GA!
作者:Geir Hoydalsvik翻译:管长龙原文:https://mysqlserverteam.com/the-mysql-8-0-19-maintenance-release-is-generally-available/MySQL 开发团队非常高兴地宣布,MySQL 8.0.19 现在可从 dev.mysql.com 下载。除了 bug 修复,此版本中还添加了一些新功能。以下...原创 2020-01-17 17:55:21 · 613 阅读 · 0 评论 -
技术分享 | 一些 MySQL DBA 实用 SQL 语句
作者:杜开生本文目录:一、连接相关二、长事务三、元数据锁四、锁等待五、全局读锁六、内存使用监控七、分区表八、数据库信息概览九、长时间未更新的表十、主键、索引十一、存储引擎十二、实时负载阅读提示:1)本篇文章涉及到大量 SQL 语句,在** PC 端阅读效果更佳。2)SQL 基于 Oracle MySQL 5.7 版本,其它版本因数据源不同不完全适用。3...原创 2020-01-15 15:17:25 · 331 阅读 · 0 评论 -
技术分享 | MySQL:count(*)、count(字段) 实现上区别
作者:高鹏文章末尾有他著作的《深入理解 MySQL 主从原理 32 讲》,深入透彻理解 MySQL 主从,GTID 相关技术知识。继上一篇文章:MySQL:查询字段数量多少对查询效率的影响我们继续来讨论一下 count(*) count(字段)实现上的区别。注意我们这里都使用 Innodb 做为存储引擎,不讨论其他引擎。因为了有了前面的讨论,更容易看出它们的区别,这里我们有如下注意点:...原创 2019-12-31 16:36:23 · 277 阅读 · 0 评论 -
技术分享 | 灭霸与普罗米修斯之无限存储的高可用方案
作者:王继顺宝尊电商 DBA,主要负责数据库监控告警以及自动化平台的设计开发工作,擅长数据库性能调优、故障诊断。背景随着公司各个环境的服务器数量增加,部署有多套 Prometheus(包括生产、测试、Tidb、Kubernetes 等)集群,在一定集群规模下,普通 Prometheus 集群的承载能力会出现短板(查询速度慢、OOM、以及存储空间不够等问题)。加上公司需要保存双十一、双十二...原创 2019-12-25 16:05:22 · 1876 阅读 · 1 评论 -
技术分享 | UUID 很火但性能不佳?今天我们细聊一聊
作者:Yves Trudeau翻译:管长龙Yves 是 Percona 的首席架构师,专门研究分布式技术,例如 MySQL Cluster,Pacemaker 和 XtraDB cluster。 他以前是 MySQL 和 Sun 的高级顾问。拥有实验物理学博士学位。原文链接:https://www.percona.com/blog/2019/11/22/uuids-are-popular-...翻译 2019-12-19 16:01:27 · 1514 阅读 · 0 评论 -
技术分享 | MySQL 的嵌套事务、自治事务与链式事务
作者:杨涛涛这篇文章有感于最近支持某客户从 Oracle 迁移到 MySQL 过程中的启示。接下来我们详细说明 MySQL 中的事务种类。分类1.普通事务以 begin / start transaction 开始, commit / rollback 结束的事务。或者是带有保存点 savepoint 的事务。2.链式事务一个事务在提交的时候自动将上下文传给下一个事务,也就是说一个...原创 2019-12-18 16:29:20 · 360 阅读 · 0 评论 -
技术分享 | 巧用 binlog Event 发现问题
作者:高鹏(八怪)文章末尾有他著作的《深入理解 MySQL 主从原理 32 讲》,深入透彻理解 MySQL 主从,GTID 相关技术知识。有了前面对 Event 的了解,我们就可以利用这些 Event 来完成一些工作了。我曾经在学习了这些常用的 Event 后,使用 C 语言写过一个解析 Event 的工具,我叫它‘infobin’,意思就是从 binary log 提取信息的意思。据我所...转载 2019-12-12 14:19:32 · 263 阅读 · 0 评论 -
微课程 | 第六课《复杂查询》
https://v.youku.com/v_show/id_XNDQ2MDAzOTE2MA==.html上一期我们通过基本拆分算法,展示基本配置是什么样的。现在来介绍下 dble 其他的一些功能。dble 查询流程图首先基本的 DML 我们已经介绍过了,在这里介绍下复杂查询。如图所示,所谓复杂查询大概是这样的一个定义。包括一些跨库分布的的数据查询、聚合函数、JOIN、UNION、子查询、复...原创 2019-12-06 16:42:35 · 597 阅读 · 0 评论 -
技术分享 | InnoDB 的表空间管理
作者:Mayank Prasad翻译:管长龙原文:https://mysqlserverteam.com/innodb-tablespace-space-management/在 InnoDB 中,用户定义的表及其对应的索引数据存储在扩展名为 .ibd 的文件中。 表空间有两种类型,常规(或共享)表空间和每表独立表空间。 对于共享表空间,来自许多不同表及其对应索引的数据可以驻留在单个 ....翻译 2019-11-18 16:49:03 · 203 阅读 · 1 评论