一、背景 生产环境遇到一个 MySQL 写入报错的问题,业务写入数据时报主键冲突。经过调查,这套 MySQL 集群版本为 Percona 5.7.19,在报主键冲突前,做过主从切换,报主键冲突的SQL语句为 replace into,表的主键是自增列,调查该表的 auto_increment,发现
MySQL 做的时间长了,就有可能多次遇到相同的 Bug,这里记录一下,以便下次再遇到,能够参考。 1. 背景 业务执行 SQL 导致 MySQL 进程 Crash,做故障切换后,新的主库又 Crash 了。查看 MySQL 错误日志,发现多次 Crash 时的堆栈相同,如下: Thread
MySQL Crash 的原因有很多,比如硬件问题,磁盘坏块导致页损坏,内存问题导致内存访问错误,等等,软件问题,MySQL 自身的 Bug。通常 MySQL Crash 问题需要根据错误日志、Core 文件、业务 SQL,表结构等多种信息结合起来排查问题,即使有诸多信息,有些 Crash 问题仍然
1. 问题描述 如果时间来到了 2038 年,或者手动将操作系统的本地时间调整为 2038 年,比如 2038-12-12,你会发现正在运行的 MySQL 会自动关闭,重启后同样会自动关闭,无法使用,查看错误日志,会有下面的一段错误信息,MySQL 不支持 2038 年之后的日期。 This M
1. 问题描述 业务执行一个非常简单的 SQL,结果导致 MySQL crash,并且每次都能复现。 MySQL 版本: Percona Server for MySQL 5.7.20 SQL 语句: select * from a where a.name in (select dist
生产环境 MySQL 机器使用备份恢复后,无法启动,报错信息为系统表 mysql.user 损坏,经过排查,发现是 MySQL 5.7 版本的一个 Bug。当 MySQL 启动时,如果 read_only 参数设置为 ON,此时如果系统表,比如 mysql.user 表发生损坏,则会导致 MySQL
MySQL通过Binlog进行主从数据的复制,Binlog是一种二进制格式的文件,理解Binlog二进制格式能够帮助我们进一步理解MySQL的主从复制原理。本文将对Binlog文件格式进行分析。 本文涉及的源码版本和相关参数如下: MySQL Server 5.7.19 binlog_
Copyright © 2020-2023 www.mytecdb.com All Rights Reserved.
Copyright © 2020-2023 www.mytecdb.com All Rights Reserved.
Copyright © 2020-2023 www.mytecdb.com All Rights Reserved.
MySQL 通过 Binlog 进行主从数据的复制,Binlog 由多种不同类型的 event 组成,本文简单介绍 event 类型为 HEARTBEAT_LOG_EVENT 的结构。 本文涉及的源码版本 MySQL Server 5.7.19 1. HEARTBEAT_LOG_EVENT 有什
1. XID_EVENT 是什么? MySQL Binlog 文件由 event 组成,event 有不同的类型,本文介绍的 XID_EVENT 表示一个事务的提交操作。 举个例子,执行一条事务,然后查看这个事务生成的 Binlog event,如下: 事务 SQL: begin; ins
MySQL 关键字和保留字通常在SQL语句中有特殊的意义,比如SELECT,DELETE,BIGINT等等,如果要使用这些关键字或者保留字作为表名、字段名,需要使用引号来标识,否则将会报错。 mysql> CREATE TABLE interval (begin INT, end INT);
一、窗口函数简介 窗口函数(window functions)是数据库的标准功能之一,主流的数据库比如Oracle,PostgreSQL都支持窗口函数功能,MySQL 直到 8.0 版本才开始支持窗口函数。 窗口函数,简单来说就是对于一个查询SQL,将其结果集按指定的规则进行分区,每个分区可以看
一、克隆(clone)插件简介 MySQL 8.0 新增了一个clone插件,能够实现本地或者远程MySQL实例快速克隆。克隆的数据是InnoDB引擎的快照数据,包括数据库(schema),表(tables),表空间(tablespaces),数据字典元数据(data dictionary met
MySQL 8.0.18 版本引入了 hash join 功能,来优化没有走索引的等值 join 连接,hash join 通常比 BNL(Block Nested-Loop) 算法效率更高。比如一个常见的等值 join 查询语句,如下: SELECT * FROM t1 JO
本文整理汇总了 MySQL 8.0 版本的新特性,新功能,如下: 一、功能增强 1.1 系统表更换为InnoDB引擎 系统表全部换成事务型的innodb表,默认的MySQL实例将不包含任何MyISAM表,除非手动创建MyISAM表。 1.2 DDL原子化 InnoDB表的DDL支持事务完整
MySQL 8.0 版本支持不可见索引(Invisible Indexes),也就是索引对优化器不可见,无法使用不可见索引对查询进行优化,不可见索引不适用于主键。 一、不可见索引的使用场景 在一张大表上创建和删除索引是有高额成本的,有时候需要测试一个索引是否有效,可以临时删除索引,对比索引存在与
MySQL 8.0 版本开始支持降序索引(Descending Indexes),在 8.0 之前的版本,使用关键字 DESC 定义降序索引时,实际上 DESC 是被忽略的,从 8.0 版本开始,DESC 定义的索引,真的就是降序的索引。 在 8.0 之前,能够以相反的顺序对索引进行扫描,但是会降
MySQL 8.0.13 版本开始支持函数索引(Functional indexes),在此之前,只能使用表的字段或者字段前缀来创建索引,从 8.0.13 版本开始,可以使用函数或者表达式的值来创建索引,这些函数或者表达式的值并不直接存储在表中。 函数索引示例: CREATE TABLE t1