![](https://img-blog.csdnimg.cn/20190918140129601.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
MYSQL
文章平均质量分 83
MySQL技术学习交流
周杰伦的稻香
Life.Just smile
展开
-
“在线迁移InnoDB表空间:运用DISCARD与IMPORT实现高效数据传输“
在日益复杂和动态变化的数据库管理环境中,高效且安全地迁移大数据量的表空间成为了一个重要的议题。尤其是在处理高可用性需求和资源优化的场景下,如何在不影响业务连续性的前提下,快速完成数据库表空间的迁移,是每一位数据库管理员(DBA)面临的关键挑战。《在线迁移InnoDB表空间:运用DISCARD与IMPORT TABLESPACE实现高效数据传输》正是为了解决这一痛点而撰写。本书章节深入浅出地介绍了利用MySQL中InnoDB引擎提供的和命令,实现在生产环境中在线迁移表空间的全过程。原创 2024-07-23 17:51:31 · 342 阅读 · 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 · 315 阅读 · 0 评论 -
【MySQL锁】基础篇
MySQL中为了保证数据访问的一致性与有效性等功能,实现了锁机制,MySQL中的锁是在服务器层或者存储引擎层实现的。原创 2024-07-10 16:47:15 · 1019 阅读 · 0 评论 -
【MySQL备份】Percona XtraBackup总结篇
在历经了详尽的探索之旅,从【MySQL备份】Percona XtraBackup全量备份的基础构筑,到【MySQL备份】增量备份的灵活运用;从【MySQL备份】压缩备份的高效策略,再到【MySQL备份】加密备份的安全深潜,这一系列实战篇章不仅铺陈了Percona XtraBackup这一强大工具的全方位应用,更是在实践中逐步揭示了数据保护的艺术。如今,站在这一知识体系的交汇点,本文旨在整合与升华,回顾并总结前四篇精华,提炼关键洞察,解答疑惑,巩固您的MySQL备份与恢复技能。原创 2024-07-02 17:56:44 · 781 阅读 · 0 评论 -
【MySQL备份】Percona XtraBackup加密备份实战篇
继探索了【MySQL备份】Percona XtraBackup压缩备份实战篇后,本文将进一步深入,揭开Percona XtraBackup加密备份的神秘面纱,解锁数据安全的高级实践策略。在数据保护日益重要的今天,仅仅实现备份是不够的,确保备份数据的私密性和安全性成为新的挑战。Percona XtraBackup,这一MySQL备份领域的佼佼者,不仅以其快速、高效著称,还内置了强大的加密功能,为你的数据库备份穿上坚不可摧的防护盔甲。原创 2024-07-02 17:31:59 · 912 阅读 · 0 评论 -
【MySQL备份】Percona XtraBackup压缩备份实战篇
在延续上篇【MySQL备份】Percona XtraBackup增量备份实战篇的探讨之后,本文将深度挖掘Percona XtraBackup的另一重要维度——压缩备份的实战技巧。继成功导航增量备份的复杂水域后,我们现在转向优化存储空间的策略,探讨如何高效利用压缩技术,确保您的MySQL备份既紧凑又实用。通过本篇章节,我们将超越基础备份实践,引领您步入一个更为精细的操作层面,展示如何在不牺牲数据完整性的前提下,运用巧妙的压缩策略减少备份存储占用。原创 2024-07-02 14:11:50 · 1622 阅读 · 0 评论 -
【MySQL备份】Percona XtraBackup全量备份实战篇
本文将继续上篇【MySQL备份】Percona XtraBackup基础篇中对Percona XtraBackup的探索,深化讨论其全量备份技术及详尽的恢复策略。本章节旨在构建一套完备的备份恢复指南,进一步巩固您的数据库安全防线,确保数据资产的万无一失。在本篇内容中,我们将细致剖析Percona XtraBackup执行全量备份的高效实践,这一核心功能不仅能够实时捕捉数据库状态的完整映像,还依托其先进的日志处理机制,保证备份数据的绝对一致性和可靠性。原创 2024-07-01 18:25:55 · 1065 阅读 · 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 · 755 阅读 · 2 评论 -
【MySQL备份】lvm-snapshot实战篇
LVM快照(LVM Snapshot)是Logical Volume Manager(逻辑卷管理器)的一个重要特性,它允许用户在某一时间点创建一个卷的只读副本,这个副本反映了原始卷在创建快照时刻的数据状态。这一功能对于数据备份、系统升级前的即时状态保存、数据迁移等场景非常有用。原创 2024-06-27 17:37:51 · 875 阅读 · 0 评论 -
【MySQL备份】mysqldump基础篇
mysqldump是 MySQL 数据库管理系统的命令行实用程序,用于创建数据库的逻辑备份。它能够导出数据库的结构(如表结构、视图、触发器等)以及表中的数据为 SQL 格式的文本文件。原创 2024-06-27 17:20:43 · 947 阅读 · 0 评论 -
TIMESTAMP 和DATETIME 的区别
选择哪种类型取决于具体的应用需求,包括日期范围、时区处理需求以及是否需要自动更新特性。原创 2024-06-27 14:26:29 · 316 阅读 · 0 评论 -
MySQL小版本升级(8.0.36->8.0.37)
在升级前,MySQL会检查并处理现有的二进制日志和事务日志,确保在升级过程中及升级后能够正确地恢复未完成的事务或重放日志,维持数据一致性。:完成上述步骤后,启动MySQL服务,并进行一系列的测试来验证升级是否成功,包括检查数据库的运行状态、数据的完整性以及新功能的可用性。:在进行任何数据库升级之前,最重要的是做好全面的数据备份,包括二进制日志、数据文件等,以防升级过程中发生任何不可预料的问题。’就地升级‘就是升级底层的RPM包。:新版本MySQL可能引入新的配置选项,废弃旧的配置项,或者修改默认设置。原创 2024-06-21 14:37:36 · 1043 阅读 · 0 评论 -
MySQL 自旋锁(spin lock)
然而,如果锁被占用的时间较长,自旋锁就会导致等待的线程消耗CPU资源,进行无意义的循环操作,这被称为“忙等待”。为了避免这种情况,MySQL(特别是InnoDB)提供了参数(如`innodb_spin_wait_delay`)来控制自旋的次数或等待时间,之后如果锁仍未获得,线程会退化为传统的睡眠等待,以防止CPU资源的过度浪费。MySQL中的自旋锁,特别是在InnoDB存储引擎中,是一种特殊的锁机制,它用于解决并发控制问题,尤其是在短时间运行的事务中。原创 2024-06-17 13:37:29 · 239 阅读 · 0 评论 -
ON DUPLICATE KEY UPDATE 子句和 REPLACE INTO 语句
整个记录会被替换,不仅仅是冲突的字段,这意味着如果新记录没有指定某些字段的值,这些字段将使用默认值或NULL(如果没有默认值)。在尝试插入新记录时,如果发现主键或唯一索引冲突,它会先删除原有的冲突行,然后插入新的记录。:它允许你指定哪些列需要在冲突发生时进行更新,以及如何更新这些列的值。:适用于需要确保每个唯一键对应的记录完全替换的场景,例如,当需要确保数据的绝对新鲜性,不关心被替换记录的其他字段值时。可能会消耗更多的资源,因为它涉及到删除旧记录和插入新记录两个操作,特别是在处理大表时可能会影响性能。原创 2024-06-11 17:26:03 · 277 阅读 · 0 评论 -
ON DUPLICATE KEY UPDATE 子句
在上面这个例子中,如果尝试插入的用户名。原创 2024-06-11 17:04:41 · 623 阅读 · 0 评论 -
EXPLAIN执行计划详解
是 MySQL 中的一个非常实用的命令,主要用于分析 SQL 查询语句的执行计划(Query Execution Plan,QEP)。通过这个命令,用户可以获取到数据库引擎如何执行特定的 SQL 语句的详细信息,这对于优化查询性能、理解查询的工作方式以及识别潜在的性能瓶颈非常有帮助。原创 2024-05-24 15:06:17 · 397 阅读 · 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 · 280 阅读 · 0 评论 -
基于ProxySQL中间件实现MySQL的读写分离
是一个高性能的MySQL协议代理,它支持多种数据库后端,包括Amazon Aurora、RDS、ClickHouse、Galera、Group Replication、MariaDB Server、NDB、Percona Server等。它的设计目标是为了提高数据库访问的灵活性、性能和安全性。:能够智能地将读请求路由到从库(Slave),而写请求则发送到主库(Master),以此来优化负载均衡和提高读取性能。原创 2024-05-14 14:16:45 · 741 阅读 · 1 评论 -
MySQL中JOIN连接的实现算法
我们都知道SQL的join关联表的使用方式,但是这次聊的是实现join的算法,join有三种算法,分别是Nested Loop Join,Hash join,Sort Merge Join。原创 2024-05-07 14:52:49 · 1362 阅读 · 1 评论 -
MySQL 中的HASH详解
MySQL中的哈希索引(Hash Index)是一种特殊的数据库索引类型,它利用哈希表(Hash Table)的数据结构来存储索引项。哈希表通过哈希函数(Hash Function)将索引列的值转化为一个固定长度的哈希码(Hash Code),然后用这个哈希码作为索引项在表中定位数据记录的位置。这种方式使得对于等值查询(例如)能够非常快速,理想情况下接近O(1)的时间复杂度。原创 2024-05-07 11:17:25 · 881 阅读 · 1 评论 -
ERROR:Temporary file write failure.
看起来主要是在var下面,然后一步一步定位到/var/lib/mysql下面fulltmp文件。这样一看在结合经验来看应该是临时目录满了,好家伙不看不知道,一看原来是磁盘都满了。看报错是临时文件写入失败,在结合当时执行的sql来看确实是需要创建临时表。看一下磁盘满的原因,是有用户使用dd命令创建了一个文件导致磁盘打满。这个文件应该是没什么用直接删除就好,删除之后磁盘下降。背景:在执行DDL原句的时候失败报错。然后我们去找一下这个文件在哪里。原创 2024-04-26 15:58:00 · 230 阅读 · 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 · 810 阅读 · 0 评论 -
MySQL高可用搭建方案MHA
MHA是Master High Availability的缩写,它是目前MySQL高可用方面的一个相对成熟的解决方案,其核心是使用perl语言编写的一组脚本,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在0~ 30秒之内自动完数据库的故障切换操作,并且能在最大程度上保证数据的一致性,以达到真正意义上的高可用。基于MHA的架构不像MMM那样需要搭建主主复制,只需要搭建基本的主从复制架构即可。原创 2024-04-08 17:15:27 · 1005 阅读 · 0 评论 -
MySQL8.0.36 GTID主从同步失败排查
看起来因该是主库的的一个school库被手动删除,而从库中没有这个school导致binlog不一致出现报错,那么只要在从库中将这个事务手动的跳过即可。根据报错信息查看具体内容。解析binlog日志查看。启动线程检查复制关系。原创 2024-04-03 17:22:42 · 249 阅读 · 0 评论 -
YUM安装MySQL报错合集
但是有意思的是上面这个报错解决了,但是又出现了一个新的error,意思就是找不到。即可解决这个问题,改名的话就不介绍了,毕竟这么简单不会有人还不会吧!这个文件了,对于这个error我这里是将之前下载的。去官网下载最新的GPG-KEY即可 ,原创 2024-04-02 11:11:17 · 989 阅读 · 0 评论 -
MySQL RPM包安装
安装数据库需要的四个rpm包安装mysql之前清理mariadb的依赖若是启动和密码登录的时候失败就清理/var/lib/mysql/下的数据重新尝试若是想用其他的2种方法安装MySQL数据库可以参考MySQL安装保姆级教程。原创 2023-09-16 00:13:33 · 904 阅读 · 1 评论 -
使用mycli实现MySQL命令自动补全功能(Python-3.9.0)
当我们在CentOS中通过yum,rpm,编译安装MySQL后,一般在命令行中登陆MySQL后会发现没有tab补全功能,这个时候对我们来说不太友好,毕竟命令非常多不可能都记住,这个时候你可以考虑安装一些第三方工具或插件,如mycli或pgcli,它们提供了更强大的命令补全功能和易用的交互界面,可以帮助你更高效地管理数据库,下面介绍到的是mycli工具的安装。原创 2024-03-22 13:28:12 · 359 阅读 · 0 评论 -
关于在CentOS中卸载MySQL
想要卸载MySQL当然要知道自己的MySQL是用那种方法来安装的了,一般来说MySQL的安装方法在市面上有三种 编译安装、YUM安装、RPM安装,下面会介绍到后两种安装的卸载方法首先查看是否安装MySQL,一般可以看到版本信息就证明安装了mysql -V。原创 2024-03-21 18:14:01 · 368 阅读 · 0 评论 -
物化视图(Materialized view)详解
物化视图(Materialized View)是一种预先计算和存储的查询结果,类似于数据库中的表。与普通视图不同,物化视图在创建时会将查询的结果物理存储在内存或磁盘上,而不是在查询时动态计算。原创 2024-01-29 13:53:03 · 877 阅读 · 0 评论 -
REPLACE INTO
在数据库中,REPLACE INTO 是一种用于插入或更新数据的(DML) SQL 语句。它与 INSERT INTO 语句类似,但具有一些特殊的行为。原创 2024-01-16 10:43:27 · 598 阅读 · 0 评论 -
公用表达式 Common Table Expressions - CTE
MySQL 从 8.0 开始支持 WITH 语法,即:Common Table Expressions - CTE,公用表表达式。公用表达式CTE(Common Table Expression,公共表表达式)是一个命名的临时结果集,它存在于单个语句的作用域中,以后可以在该语句中多次被引用。如下查询语句的即为公共表表达式,它是一个命名的(名字叫cte)结果集,而且在该条语句中它可以被当做临时表来引用(最后的select语句引用了它)。初次接触CTE是不是感觉跟派生表子查询很像?没错!原创 2023-12-19 16:48:23 · 1348 阅读 · 0 评论 -
学SQL JOINS看这一篇文章就够了
在数据库中,连接(Join)是用于将两个或多个表中的数据关联起来的操作。连接操作有多种类型,其中包括内连接和外连接。内连接的话只有一种而外连接的话有六种,当然还有一种连接叫做交叉连接。原创 2023-12-04 16:04:51 · 687 阅读 · 0 评论 -
【MySQL】MySQL分库分表详解[通俗易懂]
在互联网还未崛起的时代,我们的传统应用都有这样一个特点:访问量、数据量都比较小,单库单表都完全可以支撑整个业务。随着互联网的发展和用户规模的迅速扩大,对系统的要求也越来越高。因此传统的MySQL单库单表架构的性能问题就暴露出来了。转载 2023-11-17 14:12:20 · 4810 阅读 · 0 评论 -
全文索引&前缀索引
全文索引是一种用于支持文本数据搜索的索引类型,它可以帮助数据库系统高效地执行全文搜索操作,包括模糊匹配、关键词搜索等。在MySQL中,全文索引通常用于对文本类型的字段进行高效的搜索。全文索引与传统的B-tree索引不同,它使用了全文搜索引擎的特定算法和数据结构来实现对文本内容的索引和搜索。全文索引不仅考虑单词的出现,还会考虑到词语的语义、词根等信息,并能够支持自然语言查询。前缀索引是数据库中一种特殊的索引类型,它不是对整个列值进行索引,而是只对列值的前缀部分进行索引。原创 2023-11-10 15:58:08 · 201 阅读 · 0 评论 -
SQL SYNTAX
下面的命令是建立在表已经创建好的基础上去添加索引,如果是表还没有创建好的时候创建索引这里就不做过多的介绍了。原创 2023-11-09 17:29:44 · 225 阅读 · 0 评论 -
你知道Online DDL吗?
在线DDL(Online Data Definition Language)是指在数据库运行状态下执行数据定义语言(DDL)操作,例如创建、修改或删除表结构、索引等操作,而不会造成数据库的长时间锁定或无法使用。传统的DDL操作通常需要对受影响的表进行排他锁定,这可能导致其他会话无法对该表进行读写操作,从而影响了数据库的正常使用。COPY—— 5.6之前默认适应这种方法,全程无法并行DMLINPLACE—— MySQL 5.6出现的,在开始和提交的短租时间里,不能并行DMLINSTANT。原创 2023-11-09 14:25:47 · 1516 阅读 · 0 评论 -
三分钟搞懂MySQL5.6优化&索引下推
索引下推(Index Condition Pushdown,简称ICP),是MySQL5.6版本的新特性,它能减少回表查询次数,提高查询效率。原创 2023-11-08 10:14:32 · 285 阅读 · 0 评论 -
MVCC中的可见性算法
(1).如果m_ids包含trx_id,则代表Read View生成时刻,这个事务还未提交,但是如果数据的trx_id等于creator_trx_id的话,表明数据是自己生成的,因此是。(2)如果m_ids包含trx_id,并且trx_id不等于creator_trx_id,则Read View生成时,事务未提交,并且不是自己生产的,所以当前事务也是。(3).如果m_ids不包含trx_id,则说明你这个事务在Read View生成之前就已经提交了,修改的结果,当前事务是能看见的。原创 2023-11-07 14:17:20 · 569 阅读 · 0 评论 -
MySQL中的刷脏机制详解
如果没有,根据LRU算法,溢出LRU列表尾端的页,如果这些页有脏页,需要进行checkpoint。使用LRU算法,将淘汰LRU链表尾部的页,如果这个被释放的页时脏页,就要强制执行checkpoint,将脏页刷新到磁盘。这时候,MySQL 会把内存的脏页都 flush 到磁盘上,这样下次 MySQL 启动的时候,就可以直接从磁盘上读数据,启动速度会很快。这种情况是保证重做日志的可用性,说白了就是,重做日志中可以循环覆盖的部分空间太少了,换种说法,就是极短时间内产生了大量的redo log。原创 2023-11-07 11:31:40 · 839 阅读 · 0 评论 -
洞悉MySQL底层架构:游走在缓冲与磁盘之间
数据完整性依靠:redo log事务隔离级别的实现依靠MVCC,MVCC依靠undo log实现IO性能提升方式:buffer pool加快查询效率和普通索引更新的效率,log buffer对日志写的性能提升查询性能提升依赖于索引,底层用页存储,字段越小页存储越多行记录,查询效率越快;自增字段作为聚集索引可以加快插入操作;故障恢复:双写缓冲区、redo log主从同步:binlog。转载 2023-11-02 18:10:14 · 92 阅读 · 0 评论