MySQL
文章平均质量分 94
-无-为-
做过开发,创过业,踩过坑。从Java后台开发,PL/SQL开发,Pro*C开发,到shell脚本,再到兼职开发的MySQL DBA。
为人友善诚恳,工作踏实,吃苦耐劳,富有朝气,激情,以及团队合作意识。
https://github.com/zhouxx1055
https://zhouxx.blog.csdn.net/
展开
-
科普文:软件架构数据库系列之【MySQL 8.4 LTS版本20个 InnoDB系统变量默认值修改说明】
前面的文章中有提到mysql8.4对 20 个 InnoDB 变量的默认值做了修改,在这里我们详细看看这20个系统参数。原创 2024-09-21 05:24:41 · 819 阅读 · 0 评论 -
科普文:软件架构数据库系列之【MySQL8.0新特性-并行DDl-innodb_ddl_threads】
前面我们讲到MySQL8.0.14版本增加了其第一个并行查询特性,可以支持在聚集索引上做SELECT COUNT()和check table操作。innodb_ddl_threads: 用于索引创建的最大并行线程数。MySQL 8.0.27 中添加。DDL 一向是业务的痛点,尤其是对大型表的 DDL 操作,具有操作时间久,对性能影响大,可能影响业务正常使用等问题。本文详细解释 MySQL DDL 的原理,以及尽可能减少 DDL 对业务的影响的办法。原创 2024-09-19 23:41:13 · 889 阅读 · 0 评论 -
科普文:软件架构数据库系列之【MySQL8.0新特性-并行查询innodb_parallel_read_threads】
世界上最好的关系数据库是Oracle,没有之一。和Oracle比起来,MySQL的并行还有很大的提升空间,就看Oracle会不会在未来的版本中全面引入oracle中的并行(并行DML、并行DDL、并行DQL),毕竟现在只是在MySQL8.0.14版本增加了其第一个并行查询特性,可以支持在聚集索引上做SELECT COUNT()和check table操作。innodb_parallel_read_threads从MySQL 8.014开始,MySQL开始针对之前大家吐槽的查询的效率的问题,进行变动,这个参原创 2024-09-19 23:10:38 · 1400 阅读 · 0 评论 -
科普文:软件架构数据库系列之【MySQL控制查询优化器Hints】
MySQL Hints提供了一种灵活的方式,让开发者能够手动控制查询优化器的行为,从而实现特定的性能优化目标。在使用Hints时,需要充分理解其语法和作用范围,并结合实际需求进行合理配置。同时,Hints应作为优化手段的补充,而不是唯一手段,建议优先通过索引优化、查询重写等方式提升性能。通过合理使用Hints,我们可以更好地控制查询优化器的选择,提升MySQL查询的整体性能。原创 2024-09-14 13:31:30 · 1498 阅读 · 0 评论 -
科普文:软件架构数据库系列之【MySQL执行计划Extra梳理】
关于数据库慢、SQL执行过程、以及MySQL的执行计划可以参考上面文章。关于MySQL的查询优化器,以及常见的Index merge索引合并、ICP索引查询条件下推、MRR多范围读、Hash join 哈希连接、BNL块嵌套循环连接等可以参考上面的文章。其他优化器、以及数据库级别的优化,可参考官网。MySQL5.6之后,有着严格的sql检查机制,可参考上面的sql_mode。通常情况下当Extra中出现了Using filesort、Using temporary或Using where,则说明SQL需要优原创 2024-09-14 10:05:46 · 1291 阅读 · 0 评论 -
科普文:软件架构数据库系列之【MySQL查询优化器中的优化策略optimizer_switch--Hash Join和BNL(Block Nested Loop)优化器】
为了减少访问被驱动表的次数,我们可以首先将驱动表的数据批量加载到 Join Buffer(连接缓冲),然后当加载被驱动表的记录到内存时,就可以一次性和多条驱动表中的记录做匹配,这样可大大减少被驱动表的扫描次数,这就是 BNL 算法的思想。在嵌套循环中,内表被外表驱动,外表返回的每一行都要在内表中检索找到与它匹配的行,因此整个查询返回的结果集不能太大(大于1 万不适合),要把返回子集较小表的作为外表(CBO 默认外表是驱动表),而且在内表的连接字段上一定要有索引。实际上,MySQL 并不会使用此算法。原创 2024-09-13 21:29:09 · 805 阅读 · 0 评论 -
科普文:软件架构数据库系列之【MySQL解析器和优化器】
目前对于MySQL来说 执行计划还是比较准确的,但也会在碰到执行计划不准确情况。这个取决于优化器的成本模型的设计是否完善、是否科学 直接决定着优化器计算构建出执行计划是否准确,是否达到了最优的选择。随着版本越来越迭代更新,逐步在完善,智能化中,如:MySQL8.0 Autopilot功能(自动预配和自动查询执行计划改善)。原创 2024-09-12 23:45:43 · 1207 阅读 · 0 评论 -
科普文:软件架构数据库系列之【图解MySQL】
举个例子,比如执行器可能会先调用存储引擎的一个接口,去获取“users”表中的第一行数据,然后判断一下这个数据的"id"字段的值是否等于我们期望的一个值,如果不是的话,那就继续调用存储引擎的接口,去获取“users”表的下一行数据。其实我们现在还漏了一个执行器的概念,这个执行器会根据优化器选择的执行方案,去调用存储引擎的接口按照一定的顺序和步骤,就把SQL语句的逻辑给执行了。那么看完存储引擎之后,我们回过头来思考一个问题,存储引擎可以帮助我们去访问内存以及磁盘上的数据,那么是谁来调用储存引擎的接口呢?原创 2024-09-12 23:08:54 · 958 阅读 · 0 评论 -
科普文:软件架构数据库系列之【MySQL查询优化器中的优化策略optimizer_switch-- Index Merge 索引合并 优化器】
索引合并是通过对一个表同时使用多个索引进行条件扫描,并将满足条件的多个主键集合取交集或并集后再进行回表,可以提升查询效率。:将基于多个索引扫描的结果集取交集后返回给用户;union:将基于多个索引扫描的结果集取并集后返回给用户;sort-union:与union类似,不同的是sort-union会对结果集进行排序,随后再返回给用户;原创 2024-09-13 01:00:00 · 1065 阅读 · 0 评论 -
科普文:软件架构数据库系列之【MySQL查询优化器中的优化策略optimizer_switch--MRR 优化器】
参数read_rnd_buffer_size用来控制键值的缓冲区大小,会先读区一页的数据,或者需要的数据在buffer中进行排序,然后,根据顺序进行读取,防止磁盘随机读取。read_rnd_buffer_size ,是用来设置用于给 rowid 排序的内存的大小,显然, MRR 在本质上是一种用空间换时间的算法 ,MySQL 不可能给你无限的内存来进行排序,如果 read_rnd_buffer 满了,就会先把满了的 rowid 排好序去磁盘读取,接着清空,然后再往里面继续放 rowid,直到 read_r原创 2024-09-13 00:45:00 · 975 阅读 · 0 评论 -
科普文:软件架构数据库系列之【MySQL的sql_mode参数】
sql_mode是MySQL的一个系统变量,用于设置服务器对SQL语句的解析和执行规则。它可以影响MySQL的行为,包括语法规范、数据校验、数据类型转换和错误处理等。sql_mode是个很容易忽视的变量,默认值是空值,在这种设置下是可以允许一些非法操作的,比如允许一些非法数据的插入。在生产环境必须将这个值设置为严格模式,所以开发、测试环境的数据库也必须要设置,这样在开发测试阶段就可以发现问题。本文介绍sql_mode的参数取值规则和取值解释,您可以根据实际业务进行调整。原创 2024-09-13 00:15:00 · 1075 阅读 · 0 评论 -
科普文:软件架构数据库系列之【MySQL查询优化器中的优化策略optimizer_switch--ICP索引下推】
索引下推 (Index Condition Pushdown,索引条件下推,简称 ICP),是 MySQL5.6 版本的新特性,它可以在对联合索引遍历过程中,对索引中包含的所有字段先做判断,过滤掉不符合条件的记录之后再回表,能有效的减少回表次数(目前我们使用的 mysql 版本较高,一般大家可能感觉这是正常的,但是 mysql5.6 之前都不是这样实现的,下面会细细道来)。Index Condition Pushdown (ICP)是MySQL使用索引从表中检索行的一种优化。原创 2024-09-13 00:00:00 · 1725 阅读 · 0 评论 -
科普文:软件架构数据库系列之【MySQL查询优化器中的优化策略optimizer_switch】
注意:修改 optimizer_switch 的设置可能会对数据库性能产生显著影响,因此建议在修改之前先备份当前的设置,并在非生产环境中进行测试。通过调整这些标志,数据库管理员可以精细地控制查询优化器的行为,以达到最佳的性能表现。它的值是一组标志,每个标志都有一个on或off值,用于指示相应的优化器行为是启用还是禁用。在某些情况下,数据库管理员可能希望将索引标记为不可见以进行测试或维护,而不影响现有查询的性能。通过调整这个选项,用户可以尝试不同的连接顺序,以找到性能最优的执行计划。原创 2024-09-12 19:13:24 · 824 阅读 · 1 评论 -
科普文:软件架构数据库系列之【MySQL5.7和MySQL 8.0的差异】
MySQL作为最常用的开源关系型数据库管理系统之一,一直在不断发展和改进。随着时间的推移,MySQL也经历了多个版本的演进,每个版本都带来了一系列重要的更新和改进。其中,MySQL 5.7和MySQL 8是两个备受关注的版本,它们之间存在一些关键的差异。本文将深入探讨这两个版本之间的主要差异,以帮助开发人员和数据库管理员决定是否升级到MySQL 8,并了解升级后可能遇到的挑战。总的来说,MySQL 8为那些希望获得更好性能、安全性和功能的用户提供了一个强大的选择。原创 2024-09-12 12:24:48 · 1409 阅读 · 0 评论 -
科普文:软件架构数据库系列之【MySQL8.0窗口函数实践小结】
在MySQL 5.7中字段名为rank是可以的,但是在8.0中因为有了窗口函数,字段名为rank就报错,顺着这个思路,其实我们一窥窗口函数。MySQL8.0之前,做数据排名统计等相当痛苦,因为没有像Oracle、SQL SERVER 、PostgreSQL等其他数据库那样的窗口函数。但随着MySQL8.0中新增了窗口函数之后,针对这类统计就再也不是事了,本文就以常用的排序实例介绍MySQL的窗口函数。原创 2024-09-12 12:16:47 · 1022 阅读 · 0 评论 -
科普文:软件架构数据库系列之【MySQL5.7的系统表梳理】
通过查询这些系统表,可以获得关于数据库结构、性能、安全等方面的关键信息,从而帮助数据库管理员更好地管理和维护数据库系统。系统库:information_schema mysql元数据库包含了61个表,提供了访问数据库元数据的方式。这些元数据包括数据库名、表名、列的数据类型、访问权限等。原创 2024-09-12 11:47:46 · 1508 阅读 · 0 评论 -
科普文:软件架构数据库系列之【MySQL源码之innodb事务和Mini-Transaction】
(1)通过undo log可以看到数据较早版本,实现MVCC,或回滚事务等功能。(2)通过redo log用来保证事务持久性。重做日志的实现是往磁盘页顺序写物理逻辑日志,如果数据库异常宕机,启动后扫描重做日志并进行恢复可保证数据不丢失,但是我们忽略了一点就是数据一致性问题,如何保证单页数据的一致性其实就是我们本文关注的内容。原创 2024-09-11 06:26:45 · 1073 阅读 · 0 评论 -
科普文:软件架构数据库系列之【MySQL源码Buf0rea.c--InnoDB缓冲池之数据加载buf_read_ahead_linear线性预读】
线性预读是由这个函数实现的:buf_read_ahead_linear,和随机预读一样,首先是要确定区域边界,这个边界内被访问过的page如果达到一个阈值(BUF_READ_AHEAD_LINEAR_THRESHOLD),就会触发预读操作。这个地方是这样的,首先利用fil_page_get_prev和fil_page_get_next函数读取offset->frame之后或者之前的4个bytes,如果结果满足顺序条件,可以继续进行线性预读。没有把线性预读写完,接着写。至此便完成了线性预读。原创 2024-09-11 06:04:26 · 805 阅读 · 0 评论 -
科普文:软件架构数据库系列之【MySQL源码Buf0rea.c--InnoDB缓冲池之数据加载buf_read_page】
继续阅读了Buf0rea.c文件,因为这里写的就是如何将block读取到内存中的函数。这个文件里很显眼的有这样一个函数:buf_read_page,这是一个高层的函数,它的作用就是:reads a page asynchronously from a file to the buffer buf_pool if it is not already there。采用异步的方式将文件中的页读入buf_pool。原创 2024-09-11 05:59:20 · 890 阅读 · 0 评论 -
科普文:软件架构数据库系列之【MySQL源码Buf0rea.c--InnoDB缓冲池之LRU算法】
在5.1.73的代码里它被设置成80。在LRU长度大于等于BUF_LRU_OLD_MIN_LEN之后,InnoDB会将LRU中所有的页置为old(buf_LRU_old_init),然后调用buf_LRU_old_adjust_len函数去调整位置,直到链表呈现上面的状态。至于LRU链表的插入操作,其实很简单,就是每次将新插入的页放置到buf_pool->LRU_old的next位置,以后再次访问该数据页的时候,调用buf_LRU_make_block_young函数将其移动到链表的头部。原创 2024-09-11 05:55:50 · 817 阅读 · 0 评论 -
科普文:软件架构数据库系列之【MySQL优化管理PageCache】作者|子堪
系统对page cache的管理,在一些情况下可能有所欠缺,我们可以通过内核提供的予以干预。在几乎不损失性能的前提下,可以通过主动释放Mysql日志文件的page cache的方法,达到减缓内存压力的目的。对于极端内存需求的场景,这一优化能够很好的预防性能抖动的发生。原创 2024-09-11 05:48:07 · 765 阅读 · 0 评论 -
科普文:软件架构数据库系列之【 InnoDB 之 Buffer Pool】作者|王康(瀚之)
本文聚焦于InnoDB中的Buffer Pool的核心功能,首先从宏观上介绍其背景,包括设计目标、接口、遇到的问题及替换算法的选择等;然后后从使用者的角度介绍了Buffer Pool作为一个整体对外暴露的统一接口和调用方式;之后介绍了Buffer Pool内部获取Page的详细过程以及LRU替换算法的实现;再之后介绍了Page刷脏的触发因素及过程;最后梳理了Buffer Pool如何安全的实现高并发高性能。原创 2024-09-11 05:44:38 · 681 阅读 · 0 评论 -
科普文:软件架构数据库系列之【 InnoDB隐式锁功能解析】作者|杭枫
在数据库中,通常使用锁机制来协调多个线程并发访问某一资源。MySQL的锁类型分为表锁和行锁,表示对整张表加锁,主要用在DDL场景中,也可以由用户指定,主要由server层负责管理;而行锁指的是锁定某一行或几行,或者是行与行之间的间隙,行锁由存储引擎管理,例如最常使用的InnoDB。表锁占用系统资源小,实现简单,但锁定粒度大,发生锁冲突概率高,并发度比较低。行锁占用系统资源大,锁定粒度小,发生锁冲突概率低,并发度比较高。InnoDB将锁分为锁类型和锁模式两类。原创 2024-09-11 05:42:58 · 734 阅读 · 0 评论 -
科普文:软件架构数据库系列之【InnoDB 事务锁源码分析】作者|宋昭
以上基本就是InnoDB加事务锁的相关流程,Insert和Select的加锁流程配合着看,事务锁的原则及实现基本也就出来了。原创 2024-09-11 05:40:53 · 1005 阅读 · 0 评论 -
科普文:软件架构数据库系列之【我是如何开始阅读MySQL源码的?】作者|何广宇
在创建完.frm后,又调用了Storage Engine的ha_create()方法创建了其它相关的文件,比如MyISAM就创建了.MYD和.MYI文件.好在有一本讲MySQL的书, 叫 Understanding.MySQL.Internals, 书虽然有点老,但看起来是个不错的开始.mysql_create_table()里有创建一个.frm文件,要是有文档说明下.frm文件的格式就好了.里边有一章讲MyISAM的,仔细分析了.MYD和.MYI文件的格式,讲的挺清楚的.原创 2024-09-10 20:32:27 · 827 阅读 · 0 评论 -
科普文:软件架构数据库系列之【MySQL源码阅读小技巧】
开源软件已经广泛的被互联网公司所应用,不仅仅是因为其能给企业节省一大笔成本,而且最重要的是拥有更多的自主可控性,能从源头上对软件质量进行把控。另一方面,由于开源软件背后往往没有大型的商业公司,所以文档相对来说不是非常完善(或者说文档和代码不一定相互对应),因此,作为一名合格程序员,尤其是基础软件开发的程序员,阅读源码的能力是必备的素质。原创 2024-09-10 20:29:36 · 1104 阅读 · 0 评论 -
科普文:软件架构数据库系列之【MySQL源码阅读梳理】
现在市面上的MySQL书籍,都是各位数据库专家提炼过的,为了方便记忆和阅读,作者以自己的经验和专业技能做了梳理,如下图所示,DML语句在Innodb引擎中执行的流程,我们都知对表的写操作(DML)不可能直接去操作磁盘、必须是将磁盘数据以数据页的方式加载到内存中,然后修改内存,在修改后的内存数据刷磁盘前,还得先写日志。原创 2024-09-10 20:27:35 · 886 阅读 · 0 评论 -
科普文:软件架构数据库系列之【详解InnoDB逻辑序列号LSN (log sequence number)】
LSN 称为日志的逻辑序列号(log sequence number)在InnoDB存储引擎中,LSN占8个字节,LSN的值会随着日志的写入而逐渐变大。一个64位无符号整数,表示Redo Log系统中的时间点,也是事务写入Redo Log的字节总量,从日志初始化开始计数(数据库初始化安装时间点开始且单调递增)LSN不仅存在于Redo Log中,在每个数据页中都保存着一个LSN,在进行数据恢复时通过LSN做比较运算可以判断出每个数据页是否需要进行恢复操作数据页的版本信息。写入的日志总量。原创 2024-09-05 23:35:26 · 930 阅读 · 1 评论 -
科普文:软件架构数据库系列之【图解InnoDB恢复recovery过程】
通常也会叫做"InnoDB log(s)",预先分配至少2个日志文件,第一个文件开头和最后一个文件结尾进行首尾相连以循环的方式重复使用。"Redo"的意思是在必要时(如:崩溃恢复时)可以使用Redo Log中的数据来重新应用到InnoDB数据文件中,使得InnoDB能够恢复到一个一致性状态Redo Log 是一个预写日志(WAL),是一种用于在数据库或数据库所在主机发生崩溃时确保数据完整性的技术。Redo Log日志记录必须在数据实际更改(buffer pool中的脏页刷新到数据文件)之前写入磁盘。原创 2024-09-05 23:02:30 · 1153 阅读 · 0 评论 -
科普文:软件架构数据库系列之【详解InnoDB恢复recovery过程】
InnoDB如果发生意外宕机了,数据会丢么?其实,InnoDB的数据恢复是一个很复杂的过程,在其恢复过程中,需要redo log、binlog、undo log等参与,这里把InnoDB的恢复过程主要划分为两个阶段:先redo前滚、后undo回滚。第一阶段主要依赖于redo log的恢复,而第二阶段,恰恰需要binlog和undo log的共同参与。原创 2024-09-05 22:54:09 · 1144 阅读 · 0 评论 -
科普文:软件架构数据库系列之【详解InnoDB事务日志(redo log和undo log) 】
innodb事务日志包括redo log和undo log。redo log是重做日志,提供前滚操作,undo log是回滚日志,提供回滚操作。undo log不是redo log的逆向过程,其实它们都算是用来恢复的日志:1.redo log通常是物理日志,记录的是数据页的物理修改,而不是某一行或某几行修改成怎样怎样,它用来恢复提交后的物理数据页(恢复数据页,且只能恢复到最后一次提交的位置)。2.undo用来回滚行记录到某个版本。undo log一般是逻辑日志,根据每行记录进行记录。原创 2024-09-05 22:34:12 · 1125 阅读 · 0 评论 -
科普文:软件架构数据库系列之【详解InnoDB双写(Doublewrite Buffer)】
有人会想到系统恢复后MySQL可以根据redolog 进行恢复,而mysql在恢复的过程中是检查page的checksum,checksum就是pgae的最后事务号,发生partial page write 问题时,page已经损坏,找不到该page中的事务号,就无法恢复。在数据库启动时(异常关闭的情况下),都会做数据库恢复(redo)操作,恢复的过程中,数据库都会检查页面是不是合法(校验等等),如果发现一个页面校验结果不一致,则此时会用到两次写这个功能,这个特点也正是为了处理这样的错误而设计的。原创 2024-09-05 22:28:56 · 930 阅读 · 0 评论 -
科普文:软件架构数据库系列之【详解InnoDB重做日志Redlog】
InnoDB中通过min-transaction实现,简称mtr,需要原子操作时,调用mtr_start生成一个mtr,mtr中会维护一个动态增长的m_log,这是一个动态分配的内存空间,将这个原子操作需要写的所有REDO先写到这个m_log中,当原子操作结束后,调用mtr_commit将m_log中的数据拷贝到InnoDB的Log Buffer。为了保证数据正确,只有REDO写完后事务才可以commit,因此在REDO写入的过程中,大量的用户线程会block等待,直到自己的最后一条日志结束写入。原创 2024-09-05 22:05:49 · 690 阅读 · 0 评论 -
科普文:软件架构数据库系列之【MySQL 中的 7 种日志介绍】
在InnoDB存储引擎中,undo存储在回滚段(Rollback Segment)中,每个回滚段记录了1024个undo log segment,而在每个undo log segment段中进行undo 页的申请,在5.6以前,Rollback Segment是在共享表空间里的,5.6.3之后,可通过 innodb_undo_tablespace设置undo存储的位置。Undo记录中存储的是老版本数据,当一个旧的事务需要读取数据时,为了能读取到老版本的数据,需要顺着undo链找到满足其可见性的记录。原创 2024-09-05 21:46:39 · 1495 阅读 · 0 评论 -
科普文:软件架构数据库系列之【MySQL5.7的InnoDB引擎存储结构分析:buffer+disk】
前面的文章,我们提到了Innodb的内存结构和存储结构,现在我们基于MySQL5.7再详细说明一下Innodb的内存结构和磁盘结构之间工作过程。本文主要介绍InnoDB内存和磁盘上的存储结构,并分析了InnoDB两大重要特性:Change Buffer和Double Writer,其中Change Buffer提升了性能而Double Writer确保了InnoDB的可靠性。原创 2024-09-05 21:21:00 · 1179 阅读 · 0 评论 -
科普文:软件架构数据库系列之【Innodb的锁和MVCC】
这里对 记录锁(行锁)、间隙锁、临键锁 做一个总结InnoDB 中的行锁的实现依赖于索引,一旦某个加锁操作没有使用到索引,那么该锁就会退化为表锁。记录锁存在于包括主键索引在内的唯一索引中,锁定单条索引记录。间隙锁存在于非唯一索引中,锁定开区间范围内的一段间隔,它是基于临键锁实现的。临键锁存在于非唯一索引中,该类型的每条记录的索引上都存在这种锁,它是一种特殊的间隙锁,锁定一段左开右闭的索引区间。原创 2024-09-04 16:39:28 · 1134 阅读 · 0 评论 -
科普文:软件架构数据库系列之【为啥建议将MySQL 隔离级别从RR改成RC】
科普文:软件架构数据库系列之【MySQL引擎Innodb的MVCC特性】-CSDN博客前面文章建议将隔离级别改成RC。对于MySQL的个隔离级别:建议在RC和RR两个隔离级别中选一种,如果能接受幻读,需要并发高点,就可以配置成RC:如果不能接受幻读的情况,就设置成RR隔离级别。四种隔离级别的基本定义(如果觉得文字不太好理解,可以结合文章后面的实验部分):事务隔离级别Read uncommitted(读未提交,简称:RU)所有事务都可以看到其它未提交事务的执行结果,这也就是脏读。Read Committed(原创 2024-09-01 23:50:45 · 1061 阅读 · 0 评论 -
科普文:软件架构数据库系列之【MySQL引擎Innodb的MVCC特性】
前面说Innodb时,只是提到了MVCC,今天我们再详细说说MVCC。说MVCC前,我们先大概了解一下这几个概念。对于MySQL的个隔离级别:建议在RC和RR两个隔离级别中选一种,如果能接受幻读,需要并发高点,就可以配置成RC:如果不能接受幻读的情况,就设置成RR隔离级别。原创 2024-09-01 23:30:49 · 710 阅读 · 0 评论 -
科普文:软件架构数据库系列之【杨建荣:关于MySQL升级到8.0版本的一些经验】
有了前面的流程支持,整个过程基本可以跑起来了,还有一个风险则是采用资源平替的方案,也就意味着今天数据库实例是业务A的主库,完成升级之后我们会让系统的同事重新格式化后交付给我们,很可能明天就变成业务B的从库了,所以资源是以资源池的形式在反复利用,对于如何申请资源和下线资源就是关键,我们制定的流程是需要至少3次审核才可以下线,而且下线的过程中还需要有一定的观察期窗口。关于数据库版本升级,一直都是热议话题,对于升级的缘由各家也有所不同,有业务驱动的,有DBA自发驱动的,有规划导向也有方向指引的……原创 2024-08-30 13:59:53 · 1061 阅读 · 0 评论 -
科普文:软件架构数据库系列之【MySQL5.6/5.7和MySQL8.00之间的版本升级和降级实战】
4.在 5.7.6版本以后,user 表中 password字段 已经取消,被替换为了 authentication_string 列。3、5.5版本升级到5.7版本,先将5.5升级至最新版,再5.5升级到5.6最新版,再5.6最新版升级到5.7最新版。4、升级前要要备份(特别是升级到8.0+版本),方便失败回退,因为8.0+版本必须采用备份才可以退回。3.5.7.8版本之后,在授权表中user列的长度需要从16调整为32字符。2、5.6版本升级到5.7版本,先将5.6升级至最新版,再升级到5.7。原创 2024-08-30 13:28:46 · 1297 阅读 · 0 评论