
MYSQL
文章平均质量分 83
MySQL技术学习交流
周杰伦的稻香
Life.Just smile
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
MySQL中的隐式主键和隐藏列
MySQL 8.0.30+版本引入了sql_generate_invisible_primary_key参数,当设为ON时会为无主键的InnoDB表自动添加不可见主键列(my_row_id)。默认OFF状态下,InnoDB仍会创建隐藏的GEN_CLUST_INDEX聚集索引以满足存储引擎要求。阿里云AliSQL通过show_ipk_info参数控制隐式主键显示。需注意:开启该功能后不允许修改或删除自动生成的主键,也不允许多重主键定义。该特性仅适用于InnoDB引擎表,不影响其他存储引擎。原创 2025-06-11 00:01:09 · 475 阅读 · 0 评论 -
MySQL中event突然不执行问题分析
MySQL事件调度器状态检查方法 摘要:本文介绍了检查MySQL事件调度器状态的几种方法:1)查看事件调度器变量状态;2)检查具体事件是否启用;3)查看事件创建语法和执行频率;4)通过information_schema.events表查询事件详情。事件相当于定时任务,即使关联的存储过程不存在也会继续执行(但会报错),当事件突然停止执行时,通常与event_schema有关。关键参数包括EVENT_TYPE和ON_COMPLETION,但后者不会因错误自动禁用事件。原创 2025-06-10 17:45:12 · 169 阅读 · 0 评论 -
MySQL中的CONVERT_TZ() 函数
MySQL的CONVERT_TZ()函数用于跨时区时间转换,语法为CONVERT_TZ(时间值,源时区,目标时区)。使用时需确保时区表已加载(通过mysql_tzinfo_to_sql命令),并注意时区名称大小写敏感。函数支持UTC、Asia/Shanghai等时区名称或±HH:MM偏移量格式,无效输入返回NULL。该功能需要MySQL5.5+版本,适用于处理国际化应用中的时间转换需求。原创 2025-06-10 14:45:51 · 349 阅读 · 0 评论 -
深入解析 MySQL 中的 SHOW_ROUTINE 权限
MySQL中的SHOW_ROUTINE权限用于控制用户查看存储过程和函数定义的权限。该权限允许用户通过特定语句查看存储过程/函数定义及相关属性,并访问INFORMATION_SCHEMA.ROUTINES表。在MySQL8.0.20及以上版本中,该权限作为全局权限通过GRANT语句授予;在8.0.20以下版本则需授予全局SELECT权限才能实现相同功能。SHOW_ROUTINE权限提供了比全局SELECT更精细的权限管理,增强了数据库安全性和管理灵活性。原创 2025-05-24 02:06:59 · 503 阅读 · 0 评论 -
MySQL中TCP和套接字SSL加密连接行为分析
SSL认证通过在客户端和云数据库服务器之间建立加密通道,确保数据传输的安全性,防止信息被窃听、篡改或冒充。MySQL支持SSL加密,通过配置相关参数(如have_openssl、have_ssl、require_secure_transport等)来控制SSL的使用。默认情况下,MySQL会尝试使用加密连接,即使客户端未明确指定SSL参数。然而,套接字连接默认不加密,若账号设置为REQUIRESSL且未指定SSL参数,连接将失败。通过SSL加密,MySQL能够有效提升数据传输的安全性和完整性,尽管可能会增加原创 2025-05-19 22:15:49 · 1242 阅读 · 0 评论 -
深入 MySQL 查询优化器:Optimizer Trace 分析
MySQL的Optimizer Trace功能用于深入分析SQL查询的优化过程,帮助开发者理解查询执行计划的选择。该功能默认关闭,因为开启后可能导致约10%的性能下降。Optimizer Trace通过三个主要阶段(join_preparation、join_optimization、join_execution)详细记录SQL语句的准备、优化和执行过程。在优化阶段,系统会评估不同索引和扫描方式的成本,选择最优执行计划。通过调整相关参数(如optimizer_trace_enabled、optimizer_原创 2025-05-13 17:21:53 · 1114 阅读 · 0 评论 -
选主算法、多版本兼容性及滚动升级|深入浅出MGR
本文介绍MGR的选主算法,以及当MGR集群中有多个不同版本混搭时,如何才能正常运行,有什么注意事项。转载 2025-04-02 17:04:28 · 45 阅读 · 0 评论 -
MGR高可用脚本
在之前的讨论中,我们探讨了基于容器节点的 MySQL Group Replication 配置。在后续的测试过程中,我们发现如果某个容器节点意外挂掉,该节点会自动从组内退出。这可能会导致组复制的可用性和稳定性受到影响。为了确保组复制的高可用性,本文将介绍如何实现对容器节点可用性的实时检测,以及在节点意外挂掉后如何自动拉起并重新加入组复制。原创 2025-04-02 16:47:20 · 306 阅读 · 0 评论 -
MySQL8.0.37组复制MGR配置详解
环境介绍masterslave1slave2IP172.17.0.5172.17.0.6172.17.0.7VERSION8.0.378.0.378.0.37。原创 2025-03-31 16:01:43 · 984 阅读 · 0 评论 -
【MySQL内置数据库】 mysql
表中的非 NULL 值的优先级高于编译好的默认值,如果表中的值为 NULL,则优化器会使用默认的成本估算值。默认角色的概念是在 MySQL 8.0 中引入的,它允许管理员为用户设置一组默认激活的角色,这样在用户登录时,这些角色的权限就会自动应用到用户会话中。在 MySQL 8.0 中,角色是一种新的权限管理方式,可以看作是权限的集合,可以授予用户,以简化权限的管理。这个关系可以是有向的,表示一种继承关系,例如,如果角色 B 被定义为角色 A 的成员,那么拥有角色 A 的用户同时也会拥有角色 B 的权限。原创 2024-09-25 17:39:48 · 1409 阅读 · 0 评论 -
【MySQL内置数据库】information_schema
数据库中的一个表,它提供有关 InnoDB 存储引擎的压缩表和索引的操作状态信息。在 Linux 上,除非设置了。这个表主要用于存储 InnoDB 引擎的压缩字典的比较信息,包括压缩前后的页数量和大小的统计,有助于评估和监控 InnoDB 表和索引使用压缩功能的效果。数据库中的一个表,它提供了简洁的表空间元数据信息,包括空间 ID、名称、路径、标志和空间类型。通过查看该表,可以了解 InnoDB 的内部运行状况,比如插入、更新、删除等 DML 操作的次数,以及其他如锁等待、索引查找等操作的统计信息。原创 2024-09-24 17:33:28 · 1652 阅读 · 0 评论 -
MySQL8.0.13-函数索引
本篇主要介绍 MySQL 的函数索引(也叫表达式索引)。通常来讲,索引都是基于字段本身或者字段前缀,而函数索引是基于字段本身加上函数、操作符、表达式等计算而来。如果将表达式或者操作符也看做函数的话,简单来说,这样的索引就可以统称函数索引。MySQL 的函数索引内部是基于虚拟列(generated columns)实现,不同于直接定义虚拟列,函数索引自动创建的虚拟列本身实时计算结果,并不存储数据,只把函数索引本身存在磁盘上。原创 2024-09-14 17:21:40 · 1155 阅读 · 0 评论 -
MySQL5.7-虚拟列
MySQL虚拟列是一种特殊的列,是mysql-5.7版本引入的一个新特性,它并不存储数据,而是在查询时动态生成数据。这种列的值通常是由其他列的值通过某种表达式计算得出的。虚拟列的主要作用是提高查询效率和数据处理的便利性。它可以使我们在不增加实际存储开销的情况下,对数据进行更高效的查询和管理。原创 2024-09-14 16:50:53 · 1292 阅读 · 0 评论 -
MySQL8.0新特性解读
在实际情景中,负载并不是平稳的,负载可能在特定的时间内爆发(80/20法则)。MySQL 8.0.17版本引入了一个anti join的优化,这个优化能够将where条件中的not in(subquery), not exists(subquery),in(subquery) is not true,exists(subquery) is not true,在内部转化成一个anti join,以便移除里面的子查询subquery,这个优化在某些场景下,能够将性能提升20%左右。只需要设置这2个参数即可。转载 2024-09-13 16:58:48 · 873 阅读 · 0 评论 -
“深入解析:MySQL半同步复制的配置指南与实践技巧“
新打开个master窗口进行分析,可以看到master上的sql正在等待来自副本的半同步ACK,并且半同步复制已经退化为异步复制。最后等master上面的sql执行完成,可以看到这条sql执行60s。最后在新打开的master窗口上可以看到异步复制已经恢复为半同步复制。此时在master上执行一条inster语句。并且在MySQL的错误日志中也会记录这些信息。首先在slave上停止MySQL的复制关系。在MySQL的配置文件中添加配置。在MySQL的配置文件中添加配置。这时去slave上面启动复制关系。原创 2024-09-10 17:11:05 · 652 阅读 · 0 评论 -
“MySQL中的空间索引技术深度解析:利用Spatial Key优化地理空间数据查询“
MySQL中的空间索引是一种针对空间数据类型的特殊索引,主要用于优化地理空间数据的查询性能。这类索引主要应用于存储几何对象如点、线、面、多边形等数据类型的列上,比如POINTLINESTRINGPOLYGON, 和GEOMETRY等。空间索引利用R-Tree或其变种等数据结构来组织空间数据,使得数据库能高效地执行包含空间运算的SQL语句,如查找某个区域内的所有点、计算两个几何对象之间的距离、判断一个对象是否包含在另一个对象中等空间查询操作。原创 2024-08-06 16:44:27 · 1358 阅读 · 0 评论 -
“在线迁移InnoDB表空间:运用DISCARD与IMPORT实现高效数据传输“
在日益复杂和动态变化的数据库管理环境中,高效且安全地迁移大数据量的表空间成为了一个重要的议题。尤其是在处理高可用性需求和资源优化的场景下,如何在不影响业务连续性的前提下,快速完成数据库表空间的迁移,是每一位数据库管理员(DBA)面临的关键挑战。《在线迁移InnoDB表空间:运用DISCARD与IMPORT TABLESPACE实现高效数据传输》正是为了解决这一痛点而撰写。本书章节深入浅出地介绍了利用MySQL中InnoDB引擎提供的和命令,实现在生产环境中在线迁移表空间的全过程。原创 2024-07-23 17:51:31 · 558 阅读 · 0 评论 -
error: libmysqlclient.so.18()(64bit) is needed by php-mysql-5.4.16-48.el7.x86_64
这个其实是检查到没有安装mysql-community-libs-compat包,我们直接去阿里云的镜像官网下载就好了,这里我们要找的是X86的包,这里不管是哪一个版本都可以,然后复制链接直接wget就好了,最后在rpm一下,如果安装这个mysql-community-libs-compat包的时候报错,缺少对应的包,直接按照前面的方法去下面的镜像网站下载就行,但是所有包的版本一定要一致。安装好后就可以直接安装 php-mysql-5.4.16-48.el7.x86_64.rpm。原创 2024-03-25 14:42:41 · 859 阅读 · 0 评论 -
【MySQL锁】基础篇
MySQL中为了保证数据访问的一致性与有效性等功能,实现了锁机制,MySQL中的锁是在服务器层或者存储引擎层实现的。原创 2024-07-10 16:47:15 · 1223 阅读 · 0 评论 -
【MySQL备份】Percona XtraBackup总结篇
在历经了详尽的探索之旅,从【MySQL备份】Percona XtraBackup全量备份的基础构筑,到【MySQL备份】增量备份的灵活运用;从【MySQL备份】压缩备份的高效策略,再到【MySQL备份】加密备份的安全深潜,这一系列实战篇章不仅铺陈了Percona XtraBackup这一强大工具的全方位应用,更是在实践中逐步揭示了数据保护的艺术。如今,站在这一知识体系的交汇点,本文旨在整合与升华,回顾并总结前四篇精华,提炼关键洞察,解答疑惑,巩固您的MySQL备份与恢复技能。原创 2024-07-02 17:56:44 · 939 阅读 · 0 评论 -
【MySQL备份】Percona XtraBackup加密备份实战篇
继探索了【MySQL备份】Percona XtraBackup压缩备份实战篇后,本文将进一步深入,揭开Percona XtraBackup加密备份的神秘面纱,解锁数据安全的高级实践策略。在数据保护日益重要的今天,仅仅实现备份是不够的,确保备份数据的私密性和安全性成为新的挑战。Percona XtraBackup,这一MySQL备份领域的佼佼者,不仅以其快速、高效著称,还内置了强大的加密功能,为你的数据库备份穿上坚不可摧的防护盔甲。原创 2024-07-02 17:31:59 · 1334 阅读 · 0 评论 -
【MySQL备份】Percona XtraBackup压缩备份实战篇
在延续上篇【MySQL备份】Percona XtraBackup增量备份实战篇的探讨之后,本文将深度挖掘Percona XtraBackup的另一重要维度——压缩备份的实战技巧。继成功导航增量备份的复杂水域后,我们现在转向优化存储空间的策略,探讨如何高效利用压缩技术,确保您的MySQL备份既紧凑又实用。通过本篇章节,我们将超越基础备份实践,引领您步入一个更为精细的操作层面,展示如何在不牺牲数据完整性的前提下,运用巧妙的压缩策略减少备份存储占用。原创 2024-07-02 14:11:50 · 2344 阅读 · 0 评论 -
【MySQL备份】Percona XtraBackup全量备份实战篇
本文将继续上篇【MySQL备份】Percona XtraBackup基础篇中对Percona XtraBackup的探索,深化讨论其全量备份技术及详尽的恢复策略。本章节旨在构建一套完备的备份恢复指南,进一步巩固您的数据库安全防线,确保数据资产的万无一失。在本篇内容中,我们将细致剖析Percona XtraBackup执行全量备份的高效实践,这一核心功能不仅能够实时捕捉数据库状态的完整映像,还依托其先进的日志处理机制,保证备份数据的绝对一致性和可靠性。原创 2024-07-01 18:25:55 · 1423 阅读 · 0 评论 -
【MySQL备份】Percona XtraBackup基础篇
Percona XtraBackup是世界上唯一的开源、免费的MySQL热备份 为InnoDB和XtraDB执行非阻塞备份的软件 数据库。使用Percona XtraBackup导出的表可以导入Percona Server 5.1、5.5或5.6+或MySQL 5.6+。Percona XtraBackup的安装方法有三中YUM仓库安装,RPM包安装,源码编译安装,下面介绍到的是YUM仓库安装。Percona XtraBackup甚至可以从完整备份中导出单个表,无论InnoDB版本如何。原创 2024-07-01 16:57:02 · 3731 阅读 · 2 评论 -
【MySQL备份】lvm-snapshot实战篇
LVM快照(LVM Snapshot)是Logical Volume Manager(逻辑卷管理器)的一个重要特性,它允许用户在某一时间点创建一个卷的只读副本,这个副本反映了原始卷在创建快照时刻的数据状态。这一功能对于数据备份、系统升级前的即时状态保存、数据迁移等场景非常有用。原创 2024-06-27 17:37:51 · 1304 阅读 · 0 评论 -
【MySQL备份】mysqldump基础篇
mysqldump是 MySQL 数据库管理系统的命令行实用程序,用于创建数据库的逻辑备份。它能够导出数据库的结构(如表结构、视图、触发器等)以及表中的数据为 SQL 格式的文本文件。原创 2024-06-27 17:20:43 · 6278 阅读 · 0 评论 -
TIMESTAMP 和DATETIME 的区别
选择哪种类型取决于具体的应用需求,包括日期范围、时区处理需求以及是否需要自动更新特性。原创 2024-06-27 14:26:29 · 466 阅读 · 0 评论 -
MySQL小版本升级(8.0.36->8.0.37)
在升级前,MySQL会检查并处理现有的二进制日志和事务日志,确保在升级过程中及升级后能够正确地恢复未完成的事务或重放日志,维持数据一致性。:完成上述步骤后,启动MySQL服务,并进行一系列的测试来验证升级是否成功,包括检查数据库的运行状态、数据的完整性以及新功能的可用性。:在进行任何数据库升级之前,最重要的是做好全面的数据备份,包括二进制日志、数据文件等,以防升级过程中发生任何不可预料的问题。’就地升级‘就是升级底层的RPM包。:新版本MySQL可能引入新的配置选项,废弃旧的配置项,或者修改默认设置。原创 2024-06-21 14:37:36 · 2845 阅读 · 0 评论 -
MySQL 自旋锁(spin lock)
然而,如果锁被占用的时间较长,自旋锁就会导致等待的线程消耗CPU资源,进行无意义的循环操作,这被称为“忙等待”。为了避免这种情况,MySQL(特别是InnoDB)提供了参数(如`innodb_spin_wait_delay`)来控制自旋的次数或等待时间,之后如果锁仍未获得,线程会退化为传统的睡眠等待,以防止CPU资源的过度浪费。MySQL中的自旋锁,特别是在InnoDB存储引擎中,是一种特殊的锁机制,它用于解决并发控制问题,尤其是在短时间运行的事务中。原创 2024-06-17 13:37:29 · 513 阅读 · 0 评论 -
ON DUPLICATE KEY UPDATE 子句和 REPLACE INTO 语句
整个记录会被替换,不仅仅是冲突的字段,这意味着如果新记录没有指定某些字段的值,这些字段将使用默认值或NULL(如果没有默认值)。在尝试插入新记录时,如果发现主键或唯一索引冲突,它会先删除原有的冲突行,然后插入新的记录。:它允许你指定哪些列需要在冲突发生时进行更新,以及如何更新这些列的值。:适用于需要确保每个唯一键对应的记录完全替换的场景,例如,当需要确保数据的绝对新鲜性,不关心被替换记录的其他字段值时。可能会消耗更多的资源,因为它涉及到删除旧记录和插入新记录两个操作,特别是在处理大表时可能会影响性能。原创 2024-06-11 17:26:03 · 452 阅读 · 0 评论 -
ON DUPLICATE KEY UPDATE 子句
在上面这个例子中,如果尝试插入的用户名。原创 2024-06-11 17:04:41 · 785 阅读 · 0 评论 -
EXPLAIN执行计划详解
是 MySQL 中的一个非常实用的命令,主要用于分析 SQL 查询语句的执行计划(Query Execution Plan,QEP)。通过这个命令,用户可以获取到数据库引擎如何执行特定的 SQL 语句的详细信息,这对于优化查询性能、理解查询的工作方式以及识别潜在的性能瓶颈非常有帮助。原创 2024-05-24 15:06:17 · 517 阅读 · 0 评论 -
ProxySQL路由策略实现读写分离
在mysql_query_rules表中配置, 将reader,writer用户的select(读)请求路由到20(读组),也就是后端的slave节点,将writer用户的DDL,DML请求路由到10(写组),也就是后端的master节点。目的:配置proxysql路由策略后将不同用户的不同请求路由到不同的节点。用writer登陆,执行一个DQL,发现请求被路由到了slave节点。还是用writer用户登陆创建一个表,发现请求被路由到了master。原创 2024-05-22 14:00:08 · 340 阅读 · 0 评论 -
基于ProxySQL中间件实现MySQL的读写分离
是一个高性能的MySQL协议代理,它支持多种数据库后端,包括Amazon Aurora、RDS、ClickHouse、Galera、Group Replication、MariaDB Server、NDB、Percona Server等。它的设计目标是为了提高数据库访问的灵活性、性能和安全性。:能够智能地将读请求路由到从库(Slave),而写请求则发送到主库(Master),以此来优化负载均衡和提高读取性能。原创 2024-05-14 14:16:45 · 1015 阅读 · 1 评论 -
MySQL中JOIN连接的实现算法
我们都知道SQL的join关联表的使用方式,但是这次聊的是实现join的算法,join有三种算法,分别是Nested Loop Join,Hash join,Sort Merge Join。原创 2024-05-07 14:52:49 · 2160 阅读 · 1 评论 -
MySQL 中的HASH详解
MySQL中的哈希索引(Hash Index)是一种特殊的数据库索引类型,它利用哈希表(Hash Table)的数据结构来存储索引项。哈希表通过哈希函数(Hash Function)将索引列的值转化为一个固定长度的哈希码(Hash Code),然后用这个哈希码作为索引项在表中定位数据记录的位置。这种方式使得对于等值查询(例如)能够非常快速,理想情况下接近O(1)的时间复杂度。原创 2024-05-07 11:17:25 · 2517 阅读 · 1 评论 -
ERROR:Temporary file write failure.
看起来主要是在var下面,然后一步一步定位到/var/lib/mysql下面fulltmp文件。这样一看在结合经验来看应该是临时目录满了,好家伙不看不知道,一看原来是磁盘都满了。看报错是临时文件写入失败,在结合当时执行的sql来看确实是需要创建临时表。看一下磁盘满的原因,是有用户使用dd命令创建了一个文件导致磁盘打满。这个文件应该是没什么用直接删除就好,删除之后磁盘下降。背景:在执行DDL原句的时候失败报错。然后我们去找一下这个文件在哪里。原创 2024-04-26 15:58:00 · 522 阅读 · 0 评论 -
ERROR 3546 (HY000) at line 26: @@GLOBAL.GTID_PURGED cannot .....overlap with @@GLOBAL.GTID_EXECUTED
参数进行备份,然后将备份数据导入到另一个同样启用GTID的数据库服务器,可能会引发GTID冲突。这是因为备份文件中包含了原服务器的GTID历史信息,导入时会尝试在目标服务器上应用这些GTID,如果目标服务器已经存在相同的GTID(例如,因为两台服务器原本就共享过一部分复制历史),则可能导致事务重复或跳过的问题。这样做有助于避免在将备份数据导入到另一个GTID环境中时可能出现的GTID冲突,特别适用于仅迁移部分数据或独立数据库的场景。如果在启用了GTID复制的环境中,不使用。参数在使用 mysqldump。原创 2024-04-24 17:27:36 · 1687 阅读 · 0 评论 -
MySQL高可用搭建方案MHA
MHA是Master High Availability的缩写,它是目前MySQL高可用方面的一个相对成熟的解决方案,其核心是使用perl语言编写的一组脚本,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在0~ 30秒之内自动完数据库的故障切换操作,并且能在最大程度上保证数据的一致性,以达到真正意义上的高可用。基于MHA的架构不像MMM那样需要搭建主主复制,只需要搭建基本的主从复制架构即可。原创 2024-04-08 17:15:27 · 1098 阅读 · 0 评论 -
MySQL8.0.36 GTID主从同步失败排查
看起来因该是主库的的一个school库被手动删除,而从库中没有这个school导致binlog不一致出现报错,那么只要在从库中将这个事务手动的跳过即可。根据报错信息查看具体内容。解析binlog日志查看。启动线程检查复制关系。原创 2024-04-03 17:22:42 · 460 阅读 · 0 评论