MySQL 中常见的日志有哪些? MySQL日志主要包括查询日志、慢查询日志、事务日志、错误日志、二进制日志等。其中比较重要的是 bin log(二进制日志)和 redo log(重做日志)和 undo log(回滚日志)。 bin log bin log是MySQL数据库级别的文件,记录对MySQ ...
主键约束(Primary Key Constraint)、唯一性约束(Unique Constraint)、唯一性索引(Unique Index)是保证数据唯一性的三种机制,但它们的语义、作用、实现方式有一定区别。 ...
GreatSQL备份报错"PROCESS权限不足"分析与解决 报错案例 某项目在执行备份时,运行 mysqldump 时报错: $ /kingdee/greatdb/greatdb/bin/mysqldump -h inner-test.cndrealty.com -P 3307 -u portal ...
记一次在 Windows 环境下手动安装多个不同版本的 MySQL 的过程,并且设置手动启动服务,避免长时间占用后台资源。 1. 下载 MySQL 软件压缩包 下载网址:https://dev.mysql.com/downloads/mysql/ 找到需要的 MySQL 版本,选择 Windows ...
事务的四个特性ACID 原子性(Atomicity):语句要么全执行,要么全不执行,是事务最核心的特性,事务本身就是以原子性来定义的;实现主要基于undo log 持久性(Durability):保证事务提交后不会因为宕机等原因导致数据丢失;实现主要基于redo log 隔离性(Isolation) ...
上一篇文章介绍的场景中,对备库延迟的影响一般是分钟级的。但如果备库执行日志的速度持续低于主库生成日志的速度,那这个延迟就可能成了小时级别。这就涉及今天介绍的话题:备库并行复制能力。 主备流程图: 主备的并行复制能力主要是上图的两个黑色箭头,一个箭头代表客户端写入主库,另一个箭头代表备库上sql_th ...
正常情况下,只要主库执行更新生成的所有binlog,都可以被传到备库并被正确地执行,备库就能达到跟主库一致的状态,这就是最终一致性,而MySQL要提供的高可用能力,只有最终一致性是不够的。 主备延迟 主备切换可能是一个主动运维动作,比如软件升级、主库所在机器按计划下线等,也可能是被动操作,比如主库所 ...
本文通过一个线上慢SQL案例,介绍了Join的两种算法和Order by的工作原理,并通过Explain和Optimizer_trace工具完整推演了慢SQL的执行过程。基于对原理和执行过程的分析,本文给出一种“引导执行引擎选择效率更高的算法”的方案,从而使查询性能得到大幅提升。 ...
查询缓存的作用? 执行查询语句的时候,会先查询缓存。不过,MySQL 8.0 版本后移除,因为这个功能不太实用 开启查询缓存后在同样的查询条件以及数据情况下,会直接在缓存中返回结果。这里的查询条件包括查询本身、当前要查询的数据库、客户端协议版本号等一些可能影响结果的信息。 查询缓存不命中的情况: 任 ...
聚集索引(Clustered Index)和非聚集索引(Non-Clustered Index)是索引设计的核心概念,二者的本质区别体现在 与数据物理存储的关联方式 上,这种区别直接决定了它们的性能特性和适用场景。 ...
MySQL主备的基本原理 状态1中,客户端读写都是直接访问节点A,节点B只是将节点A的更新同步过来在本地执行。当需要主备切换时,就变成状态2。 状态1中没有直接访问节点B,但仍然建议把节点B设置成只读模式,原因如下: 有时一些运营类的查询语句会被放到备库上查看,设置为只读可以防止误操作; 防止切换逻 ...
只要redo log和binlog保证持久化到磁盘,就能确保MySQL异常重启后,数据可以恢复。本文讲讲MySQL写入binlog和redo log的流程。 binlog的写入机制 binlog的写入逻辑比较简单:事务在执行过程中,先把日志写到binlog cache,事务提交的时候,再把binlo ...
工具分享-通过开源工具 tuning-primer快速巡检MySQL5.7 简介 今天推荐一个开源的调优脚本tuning-primer.sh,这是一个非常实用的性能调优工具,能够快速检查 MySQL 的运行状态,生成详细的性能报告,并提供优化建议。通过这个脚本,可以更高效地完成调优工作,节省大量的时 ...
去年写的一个小工具,用于在线获取 MySQL binlog 的大小、开始时间、结束时间和持续时长。 什么场景下会用上这个工具呢? 云服务场景,无法登录 MySQL 服务器查看 binlog 的时间戳信息。 主从延迟时,可以使用这个工具来查看 binlog 的大小或者某个时间段 binlog 的写入量 ...
有时候,在业务高峰期,生产环境的MySQL压力太大,没法正常响应,需要短期内、临时性地提升一些性能。本文就来讲讲一些临时方法,并着重说它们可能存在的风险。 短连接风暴 正常的短连接模式是连接到数据库后,执行很少的SQL语句就断开,下次需要的时候再重连。如果使用的是短连接,在业务高峰期时,可能出现连接 ...
docker部署MySQL 1、创建数据存放目录 mkdir -p /data/docker/mysql/{data,conf} 2、配置MySQL配置文件 cat <<EOF> /data/docker/mysql/conf/my.cnf [client] default-character-se ...
CTE查询数据量过大导致MySQL 8.0发生CORE问题解析 一、问题发现 在客户现场的一次问题报告中发现某个带有CTE语句进行查询的时候,数据量少的时候没问题,但是数据量大的时候会导致core。注意:这个问题只在 MySQL 8.0.32 版本才会复现,最新的8.4.4版本没有问题。 看下面例子 ...
上篇文章中,介绍了间隙锁和临键锁,但并未说明加锁规则。本文首先介绍加锁规则,由于间隙锁在可重复读隔离级别下才有效,因此接下来的内容默认在可重复读隔离级别下。 加锁规则(限5.x系列<=5.7.24, 8.0系列<=8.0.13): 原则1:加锁的基本单位是临键锁,是一个前开后闭区间; 原则2:查找过 ...
查询语句执行流程 查询语句的执行流程如下:权限校验、查询缓存、分析器、优化器、权限校验、执行器、引擎。 举个例子,查询语句如下: select * from user where id > 1 and name = 'seven'; 首先,通过连接器,客户端与MySQL服务器建立连接,并完成身份认证 ...
在MySQL中,锁是用于解决并发访问冲突的核心机制。当多个事务同时操作数据库中的数据时(如读取、修改、删除),可能会出现数据不一致(如脏读、不可重复读、幻读)或操作冲突(如同时修改同一行),锁的作用就是通过合理限制不同事务的操作权限,保证数据的一致性和并发操作的正确性。本文只讨论InnoDB引擎下并 ...