DAY06 - MySQL备份恢复

序号 类型 说明 类型01 B+Tree 默认类型索引 类型02 Hash 算法类型索引 类型03 R+Tree 空间类型索引 类型04 Fulltext 全文类型索引 基础章节-01-MySQL数据库服务中级课程 1.00 课程知识章节说明 目前在互联网的实际应用中,各个企业都会比较关注自身网站的数据信息,既要保证数据信息的安全性,同时也要保证数据存储读取效率 并且在特殊的场景下,还要对存储的数据信息进行检索和分析;因此数据库服务业务已经在各行各业应用非常的广泛 对于互联网领域的技术人员,对于数据库服务知识的掌握,也将是在求职时必备的技能,有些时候还会绝对入职的定级和薪资水平。 1.07 数据库服务索引知识 1.7.1 数据库索引相关概念 索引概念介绍: 索引是数据库中用来提高数据读取性能的常用工具,所有mysql列类型都可以被索引,对相关列使用索引; 可以是提高select操作性能的最佳途径,可以尽可能快的锁定要查询数据的范围,从而达到加速查询的目的(减少IO消耗); 一般索引设置都是应用在比较大的数据表上,比如百万级别、千万级别或亿级别的数据表中,从而完成一些针对性优化; 可以简单理解:数据库索引相当于书的目录,可以借助索引有针对的查看相应数据的信息,避免了全盘检索带来的工作量; 主要利用MySQL中的索引,可以快速锁定查询范围,mysql索引比较适合范围查找数据; 1.7.2 数据库索引类型介绍 在MySQL数据库服务中,是有很多种索引类型的,但是比较常用的索引类型主要有: 数据库数据查找算法演变:(B+Tree索引的由来) 这个举个简单的例子,假设现在一个教室中有100来号人,这时可以派发礼品,通过礼品引诱这100人来报名学习xiaoQ老师课程; 比如礼品是学习课程的1000元代金券,现在把这1000元的代金券随机放到了1到100号盒子其中的一个里面,只有我知道放置的号码; 下面要求这100个人尽量快的猜到1~100号盒子里面,哪个有放置代金券的盒子,当然,我会给予一些合适的提示信息; 这时在场的100号人就需要想一些办法,在我合适的配合下,定位有代金券的盒子,想的办法就等价于是查找算法: 方法一:根据定位的盒子编号顺序,询问是与否,这种方式就可以理解为是遍历算法(全扫描),也可以理解为随机性算法; 方法二:根据定位的盒子编号比较,询问大于小,这种方式就可以理解为是二分算法(定范围),也可以理解为二叉树算法; 看似这种二分算法比遍历算法,更加科学,但是如果代金券放在了第01号或第100号盒子里呢,或者二分节点两侧时呢? 所以采用二分法依然会存在数据查询不平衡的问题。 通过以上两种算法的介绍,了解到都存在一些缺陷或问题,因此数据库在检索数据信息时,最终采用的算法是B+Tree,其中的B表示平衡 并且BTREE还可以细分为B-tree或B+tree,以及B++tree,其中的加号就是表示增强版或优化版的BTree; 在讲解B+树之前先了解一下树的整体结构,无非就是二叉树、二叉搜索树、平衡二叉树,更高级一点的有红黑树、Btree、B+tree等; 而树的查找性能取决于树的高度,让树尽可能平衡是为了降低树的高度。 为什么MySQL会选用B+树的结构,可以先来看看其他的树形结构: 二叉树: 二叉树的每一个节点都只有两个子节点,当需要向其插入更多的数据的时候,就必须要增加树的高度,而增加树的高度会导致IO消耗大; 对于二叉树而言,它的查找操作的时间复杂度就是树的高度,树的高度越高查询性能就会随着数据的增多越来越低。 二叉树节点中,还存在非正常的倾斜(比如ID自增的情况)的二叉树,查询一次数据就相当于全表搜索,因此二叉树的查询性能特别差 红黑树: 红黑树一种平衡二叉树,它复杂的定义和规则都是为了保证树的平衡性; 对于B++tree算法的底层算法逻辑理解: 利用Btree算法还是快速锁定100个盒子中,有代金券的盒子编号,如下图所示: 将需要存储的数据信息,均匀分配保存到对应页当中,最终数据信息的均匀存储(落盘) 根据页节点存储的数据信息,取出页节节点最小数据信息,并将每个叶节点最小数据信息进行汇总整合,生成相应内部节点数据; 实质上存储的是下层页节点的区间范围,以及与之对应的指针信息,最后构建出内部节点信息; 根据内部节点存储的数据信息,取出内部节点最小数据信息,并将每个内部节点最小值信息进行汇总整合,生成相应根节点数据; 根节点只能有占用一个页区域,如果一个页区域空间不够,需要进行内部节点层次扩展,但是尽量要保证层次越少越好; 实质上存储的是下层内部节点的区域范围,以及与之对应的指针信息,最后构建出独立且唯一的根节点信息; 整个树形结构,越向上节点存储数据的范围越大,然后依次再分发数据到下面的小范围,最终形成多叉树; 由于出现了多叉树,就表示全部数据分布在多个链表上,避免了单条链表存储数据,同时可以实现并发的访问数据 对于加号表示增强,其中增强表示在整个链表上,增加了同级相邻节点之间的双向指针,从而实现相邻节点相互跳转 根据以上B+Tree的结构说明,假设现在需要查找54这个数据值信息所在的数据页:等值查询 根据定义查找的数值信息,首先在根节点中获取数值所在的区间范围和相应指针信息,从而找到下层对应的内部节点信息; 根据定义查找的数据信息,其次在枝节点中获取数值所在的区域范围和相应指针信息,从而找到下层对应的叶子节点信息; 根据定义查找的数据信息,最后在叶子节点中获取最终的数据信息,结果结合上图经历三步完成了数据查找(3*16=48kB); 在利用BTree查找数据信息时,会结合树形层次结构,来决定查询数据的步骤过程,并且理论上每个数据查找过程步骤相同; 总结:B代表的平衡含义就是,每次查找数据消耗的IO数量是一致的,并且读取的页数量也是一致的,查找时间复杂度是一致的; ...

2026年1月6日 · 11 分钟 · DBA Student

DAY06 - MySQL索引优化

基础章节-01-MySQL数据库服务中级课程 1.00 课程知识章节说明 目前在互联网的实际应用中,各个企业都会比较关注自身网站的数据信息,既要保证数据信息的安全性,同时也要保证数据存储读取效率 并且在特殊的场景下,还要对存储的数据信息进行检索和分析;因此数据库服务业务已经在各行各业应用非常的广泛 对于互联网领域的技术人员,对于数据库服务知识的掌握,也将是在求职时必备的技能,有些时候还会绝对入职的定级和薪资水平。 1.07 数据库服务索引知识 1.7.1 数据库索引相关概念 索引概念介绍: 索引是数据库中用来提高数据读取性能的常用工具,所有mysql列类型都可以被索引,对相关列使用索引; 可以是提高select操作性能的最佳途径,可以尽可能快的锁定要查询数据的范围,从而达到加速查询的目的(减少IO消耗); 一般索引设置都是应用在比较大的数据表上,比如百万级别、千万级别或亿级别的数据表中,从而完成一些针对性优化; 可以简单理解:数据库索引相当于书的目录,可以借助索引有针对的查看相应数据的信息,避免了全盘检索带来的工作量; 主要利用MySQL中的索引,可以快速锁定查询范围,mysql索引比较适合范围查找数据; 1.7.2 数据库索引类型介绍 在MySQL数据库服务中,是有很多种索引类型的,但是比较常用的索引类型主要有: 序号 类型 说明 B+Tree 类型01 默认类型索引 类型02 Hash 算法类型索引 类型03 R+Tree 空间类型索引 类型04 Fulltext 全文类型索引 数据库数据查找算法演变:(B+Tree索引的由来) 这个举个简单的例子,假设现在一个教室中有100来号人,这时可以派发礼品,通过礼品引诱这100人来报名学习xiaoQ老师课程; 比如礼品是学习课程的1000元代金券,现在把这1000元的代金券随机放到了1到100号盒子其中的一个里面,只有我知道放置的号码; 下面要求这100个人尽量快的猜到1~100号盒子里面,哪个有放置代金券的盒子,当然,我会给予一些合适的提示信息; 这时在场的100号人就需要想一些办法,在我合适的配合下,定位有代金券的盒子,想的办法就等价于是查找算法: 方法一:根据定位的盒子编号顺序,询问是与否,这种方式就可以理解为是遍历算法(全扫描),也可以理解为随机性算法; 方法二:根据定位的盒子编号比较,询问大于小,这种方式就可以理解为是二分算法(定范围),也可以理解为二叉树算法; 看似这种二分算法比遍历算法,更加科学,但是如果代金券放在了第01号或第100号盒子里呢,或者二分节点两侧时呢? 所以采用二分法依然会存在数据查询不平衡的问题。 通过以上两种算法的介绍,了解到都存在一些缺陷或问题,因此数据库在检索数据信息时,最终采用的算法是B+Tree,其中的B表示平衡 并且BTREE还可以细分为B-tree或B+tree,以及B++tree,其中的加号就是表示增强版或优化版的BTree; 在讲解B+树之前先了解一下树的整体结构,无非就是二叉树、二叉搜索树、平衡二叉树,更高级一点的有红黑树、Btree、B+tree等; 而树的查找性能取决于树的高度,让树尽可能平衡是为了降低树的高度。 为什么MySQL会选用B+树的结构,可以先来看看其他的树形结构: 二叉树: 二叉树的每一个节点都只有两个子节点,当需要向其插入更多的数据的时候,就必须要增加树的高度,而增加树的高度会导致IO消耗大; 对于二叉树而言,它的查找操作的时间复杂度就是树的高度,树的高度越高查询性能就会随着数据的增多越来越低。 二叉树节点中,还存在非正常的倾斜(比如ID自增的情况)的二叉树,查询一次数据就相当于全表搜索,因此二叉树的查询性能特别差 红黑树: 红黑树一种平衡二叉树,它复杂的定义和规则都是为了保证树的平衡性; 对于B++tree算法的底层算法逻辑理解: 利用Btree算法还是快速锁定100个盒子中,有代金券的盒子编号,如下图所示: 将需要存储的数据信息,均匀分配保存到对应页当中,最终数据信息的均匀存储(落盘) 根据页节点存储的数据信息,取出页节节点最小数据信息,并将每个叶节点最小数据信息进行汇总整合,生成相应内部节点数据; 实质上存储的是下层页节点的区间范围,以及与之对应的指针信息,最后构建出内部节点信息; 根据内部节点存储的数据信息,取出内部节点最小数据信息,并将每个内部节点最小值信息进行汇总整合,生成相应根节点数据; 根节点只能有占用一个页区域,如果一个页区域空间不够,需要进行内部节点层次扩展,但是尽量要保证层次越少越好; 实质上存储的是下层内部节点的区域范围,以及与之对应的指针信息,最后构建出独立且唯一的根节点信息; 整个树形结构,越向上节点存储数据的范围越大,然后依次再分发数据到下面的小范围,最终形成多叉树; 由于出现了多叉树,就表示全部数据分布在多个链表上,避免了单条链表存储数据,同时可以实现并发的访问数据 对于加号表示增强,其中增强表示在整个链表上,增加了同级相邻节点之间的双向指针,从而实现相邻节点相互跳转 根据以上B+Tree的结构说明,假设现在需要查找54这个数据值信息所在的数据页:等值查询 根据定义查找的数值信息,首先在根节点中获取数值所在的区间范围和相应指针信息,从而找到下层对应的内部节点信息; 根据定义查找的数据信息,其次在枝节点中获取数值所在的区域范围和相应指针信息,从而找到下层对应的叶子节点信息; 根据定义查找的数据信息,最后在叶子节点中获取最终的数据信息,结果结合上图经历三步完成了数据查找(3*16=48kB); 在利用BTree查找数据信息时,会结合树形层次结构,来决定查询数据的步骤过程,并且理论上每个数据查找过程步骤相同; ...

2026年1月6日 · 11 分钟 · DBA Student

DAY07 - MySQL事务与锁

基础章节-01-MySQL数据库服务中级课程 1.00 课程知识章节说明 目前在互联网的实际应用中,各个企业都会比较关注自身网站的数据信息,既要保证数据信息的安全性,同时也要保证数据存储读取效率 并且在特殊的场景下,还要对存储的数据信息进行检索和分析;因此数据库服务业务已经在各行各业应用非常的广泛 对于互联网领域的技术人员,对于数据库服务知识的掌握,也将是在求职时必备的技能,有些时候还会绝对入职的定级和薪资水平。 1.11 数据库服务日志管理 1.11.1 数据库服务日志概述介绍 任何一种数据库中,都会有各种各样的日志,记录这数据库工作的方方面面,以帮助数据库管理员追踪数据库曾经发生过的各种事件; 主要是针对数据库server层产生的数据信息,主要用于记录和数据库服务运行本身有关的日志、以及SQL语句操作执行相关的日志; 1.11.2 数据库服务日志常用分类 在MySQL数据库服务中,有4种不同的日志是最常用的日志类型,这些日志记录这数据库在不同方面的踪迹; 日志信息查看方法: 1 2 3 4 5 6 7 8 9 10 11 12 13 mysql> show variables like '%log%'; +------------------------------------------------+---------------------------------------------+ | Variable_name | Value | +------------------------------------------------+---------------------------------------------+ | general_log | OFF | | general_log_file | /data/3306/data/xiaoQ-01.log | | log_error | ./xiaoQ-01.edu.err | | log_bin | ON | | log_bin_basename | /data/3306/data/binlog | | log_bin_index | /data/3306/data/binlog.index | | slow_query_log | OFF | | slow_query_log_file | /data/3306/data/xiaoQ-01-slow.log | +------------------------------------------------+---------------------------------------------+ 常用日志信息介绍: ...

2026年1月7日 · 30 分钟 · DBA Student

DAY07 - MySQL主从复制

序 号 日志名称 解释说明 01 general_log 表示查询日志(通用日志),默认日志状态处于关闭,可以进行在线调整配置 作用:记录了客户端从会话连接开始,执行过的所有SQL语句信息; 02 1 log_error 表示错误日志(运行日志),默认日志状态处于激活 作用:记录了数据库服务启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息; 03 1 log_bin 表示二进制日志(binlog日志),默认日志状态处于激活(8.0之后) 作用:记录了所有的DDL语句和DML语句,但是不包括数据库查询语句;语句以事件的形式保存,描述了数据的更改过程,此日志对于灾难时的数据恢复起着极其 重要的作用。 04 slow_quer y_log 表示慢查询日志,记录了所有执行时间超过参数long_quer y_time设置值并且扫描记录数小于min_examined_row_limit的所有SQL语句的日志。 基础章节-01-MySQL数据库服务中级课程 1.00 课程知识章节说明 目前在互联网的实际应用中,各个企业都会比较关注自身网站的数据信息,既要保证数据信息的安全性,同时也要保证数据存储读取效率 并且在特殊的场景下,还要对存储的数据信息进行检索和分析;因此数据库服务业务已经在各行各业应用非常的广泛 对于互联网领域的技术人员,对于数据库服务知识的掌握,也将是在求职时必备的技能,有些时候还会绝对入职的定级和薪资水平。 1.11 数据库服务日志管理 1.11.1 数据库服务日志概述介绍 任何一种数据库中,都会有各种各样的日志,记录这数据库工作的方方面面,以帮助数据库管理员追踪数据库曾经发生过的各种事件; 主要是针对数据库ser ver层产生的数据信息,主要用于记录和数据库服务运行本身有关的日志、以及SQL语句操作执行相关的日志; 1.11.2 数据库服务日志常用分类 在MySQL数据库服务中,有4种不同的日志是最常用的日志类型,这些日志记录这数据库在不同方面的踪迹; 日志信息查看方法: 常用日志信息介绍: 1.11.3 数据库服务日志信息配置 分类日志信息配置:通用日志(general_log) 01 日志信息基本配置: 1 2 3 4 5 6 7 8 9 10 11 12 13 mysql> show variables like '%log%'; +------------------------------------------------+---------------------------------------------+ | Variable_name | Value | +------------------------------------------------+---------------------------------------------+ | general_log | OFF | | general_log_file | /data/3306/data/xiaoQ-01.log | | log_error | ./xiaoQ-01.edu.err | | log_bin | ON | | log_bin_basename | /data/3306/data/binlog | | log_bin_index | /data/3306/data/binlog.index | | slow_quer y_log | OFF | | slow_quer y_log_file | /data/3306/data/xiaoQ-01-slow.log | +------------------------------------------------+---------------------------------------------+ 说明:企业真实环境,由于日志记录量比较大,所以不建议打开此日志记录功能,可以在有需要时打开,支持在线配置调整; ...

2026年1月7日 · 30 分钟 · DBA Student

DAY08 - MySQL存储引擎

基础章 节-01-MySQL数据库服务中级课程 1.00 课程 知识章节说明 目前在互联 网的实际应用中,各个企业都会比较关注自身网站的数据信息,既要保证数据信息的安全性,同时也要保证数据存储读取效率 并且在特殊 的场景下,还要对存储的数据信息进行检索和分析;因此数据库服务业务已经在各行各业应用非常的广泛 对于互联网 领域的技术人员,对于数据库服务知识的掌握,也将是在求职时必备的技能,有些时候还会绝对入职的定级和薪资水平。 1.09 数据 库服务存储引擎 1.9.1 数据 库存储引擎概念 存储引擎就 是数据库服务中的文件系统,用户可以根据应用的需要选择如何存储和索引数据,是否使用事务等; 1.9.2 数据 库存储引擎种类 在各种版本 的数据库服务中,是有多种存储引擎可以应用的,以MySQL数据库服务为例,可以使用命令查看可以应用存储引擎: mysql> show engines; 引擎类型信 息输出: 在实际场景 中,99.9%都是使用innodb存储引擎,并且在最新版8.0数据库中,所有mysql数据库中的表对应的引擎也都改为了innodb; 如果在面试 环节中,面试官询问你: 列举出mysql 中支持的存储引擎种类:InnoDB、MyISAM、CSV、MEMORY; 列举出mysql 分支产品的存储引擎种类:在percone、mariadb数据库中,可能还会应用TokuDB MyRocks Rocksdb存储引擎 从特点上 可以支持innodb引擎的特性(支持事务),并且数据压缩比比较高(15倍),数据插入性能比较强(5~6倍); 以上存储 引擎就比较适合于zabbix监控类的平台,归档数据、历史数据存储业务等,数据量级比较大的情况; 监控服务 部署tokuDB存储引擎参考链接:https://www.cnblogs.com/oldboy-heqing /articles/16891210.html 1.9.3 数据 库存储引擎特性 在数据库服 务领域,大部分场景下都会使用innodb存储引擎,是因为innodb存储引擎具有一定优秀特性: 序号 特性解释说明 01 数据访问特性支持多版本并发控制特性(MVCC),支持行级锁控制并发 02 数据索引特性支持聚簇索引/辅助索引特性,可以组织存储数据和优化查询(IOT) 03 数据事务特性支持事务概念特性,可以实现数据的安全保证 04 数据缓冲特性支持多缓冲区功能,自适应hash索引(AHI) 05 数据迁移特性支持复制数据中的高级功能特性,支持数据备份恢复的热备 06 服务自愈特性支持自动故障恢复(CR-Crash Recovery) 07 数据存储特性支持数据双写机制(Double write) 数据存储有关的安全机制 ...

2026年1月8日 · 10 分钟 · DBA Student

DAY08 - MySQL高可用架构

1 | 序号 | 特性 | 解释说明 | |—|—|—| 1 2 3 4 5 6 7 | 01 | 数据访问特性 | 支持多版本并发控制特性(MVCC),支持行级锁控制并发 | | 02 | 数据索引特性 | 支持聚簇索引/辅助索引特性,可以组织存储数据和优化查询(IOT) | | 03 | 数据事务特性 | 支持事务概念特性,可以实现数据的安全保证 | | 04 | 数据缓冲特性 | 支持多缓冲区功能,自适应hash索引(AHI) | | 05 | 数据迁移特性 | 支持复制数据中的高级功能特性,支持数据备份恢复的热备 | | 06 | 服务自愈特性 | 支持自动故障恢复(CR-Crash Recover y) | | 07 | 数据存储特性 | 支持数据双写机制(Double write) 数据存储有关的安全机制 | 基础章节-01-MySQL数据库服务中级课程 1.00 课程知识章节说明 目前在互联网的实际应用中,各个企业都会比较关注自身网站的数据信息,既要保证数据信息的安全性,同时也要保证数据存储读取效率 并且在特殊的场景下,还要对存储的数据信息进行检索和分析;因此数据库服务业务已经在各行各业应用非常的广泛 对于互联网领域的技术人员,对于数据库服务知识的掌握,也将是在求职时必备的技能,有些时候还会绝对入职的定级和薪资水平。 ...

2026年1月8日 · 10 分钟 · DBA Student

DAY09 - MySQL备份与恢复

基础章节-01-MySQL数据库服务中级课程 1.00 课程知识章节说明 目前在互联网的实际应用中,各个企业都会比较关注自身网站的数据信息,既要保证数据信息的安全性,同时也要保证数据存储读取效率 并且在特殊的场景下,还要对存储的数据信息进行检索和分析;因此数据库服务业务已经在各行各业应用非常的广泛 对于互联网领域的技术人员,对于数据库服务知识的掌握,也将是在求职时必备的技能,有些时候还会绝对入职的定级和薪资水平。 1.10 数据库服务事务知识 1.10.1 数据库存储事务机制概念 事务(Transaction)可以更通俗的理解为交易,所以事务会伴随着交易类的业务类型出现的概念(工作模式); 现实生活中存在很多的交易行为,比如:物换物的等价交换、货币换物的等价交换、虚拟货币换物(虚拟物品)的等价交换; 因此就需要考虑如何保证现实生活中交易过程的和谐,一般会有法律、道德等方面规则进行约束; 而在数据库服务中为了保证线上交易的"和谐",便加入了"事务"工作机制 1.10.2 数据库存储事务机制特性 在数据库服务中引入事务机制概念,主要是为了应用事务机制的相关特性处理安全一致性问题,其中事务机制主要包含的特性有: 特性一:原子性(Atomicity) 原子性表示一个事务生命周期中的DML语句,要么全成功要么全失败,不可以出现中间状态; 语句要么全执行,要么全不执行,是事务最核心的特性,事务本身就是以原子性来定义的;实现主要基于undo log 1 Begin:DML01 DML02 DML03 Commit; 特性二:一致性(Consistency) 一致性表示一个事务发生前、中、后,数据都最终保持一致,即读和写都要保证一致性; 事务追求的最终目标,一致性的实现既需要数据库层面的保障,也需要应用层面的保障; 1 CR + Double write 特性三:隔离性(Isolation) 隔离性表示一个事务操作数据行的时候,不会受到其他事务的影响,主要利用锁机制来保证隔离性; 特性四:持久性(Durability) 持久性表示一旦事务进行了提交,即可永久生效(落盘) 保证事务提交后不会因为宕机等原因导致数据丢失;实现主要基于redo log 事务ACID相关知识官方说明:https://dev.mysql.com/doc/refman/8.0/en/mysql-acid.html 1.10.3 数据库存储事务生命周期 在运用事务机制完成相关工作任务时,对于事务使用是存在生命周期概念的,标准显示的事务生命周期控制语句有: 1 2 3 4 5 6 7 # 开启事务机制 begin; start transaction; # 提交事务任务 commit; # 回滚事务操作 rollback; 说明:事务生命周期中,只能使用DML语句,其中包括:select、update、delete、insert;DDL语句会隐式进行提交 事务的生命周期操作演示: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 # 进行测试数据库查询数据 mysql> use world; mysql> select * from city limit 10; # 进行测试数据库数据撤销修改 mysql> begin; mysql> update city set population=10 where id=1; mysql> update city set population=10 where id=2; -- 由于是采用事务进行的修改,所以只是在内存层面进行的修改,并没有对磁盘上的数据进行修改; mysql> select * from city limit 10; -- 由于是采用事务进行的修改,此时看到的数据信息只是内存层面的修改信息 mysql> rollback; -- 由于是采用事务进行的撤销,会读取undo文件信息,将事务操作撤回到事务开始前的状态 mysql> select * from city limit 10; -- 由于是采用事务进行的修改,当撤销操作执行完,看到数据信息还是原来的; # 进行测试数据库数据永久修改 mysql> begin; mysql> update city set population=10 where id=1; mysql> update city set population=10 where id=2; -- 由于是采用事务进行的修改,所以只是在内存层面进行的修改,并没有对磁盘上的数据进行修改; mysql> select * from city limit 10; -- 由于是采用事务进行的修改,此时看到的数据信息只是内存层面的修改信息 mysql> commit; -- 由于是采用事务进行的提交,会加载redo文件信息,将事务内存层面的修改同步到磁盘中(完成了D特性) mysql> select * from city limit 10; -- 由于是采用事务进行的修改,当执行操作执行完,看到数据信息将永久保存下载; 1.10.4 数据库存储事务提交方式 方式一:在事务生命周期管理过程中,事务的提交机制可以采用自动提交方式(auto_commit) 事务自动提交方式作用说明: 事务自动提交表示在没有显示的使用begin 语句的时候,执行DML操作语句时,会在DML操作语句前自动添加begin ; 并在DML操作语句执行后自动添加commit ; 在生产环境中,若处于频繁事务业务场景中,建议关闭autocommit自动提交功能,或者每次事务执行的时候; 都进行显示的执行begin 和commit 事务自动提交方式参数信息: ...

2026年1月9日 · 12 分钟 · DBA Student

DAY09 - MySQL读写分离与中间件

基础章节-01-MySQL数据库服务中级课程 1.00 课程知识章节说明 目前在互联网的实际应用中,各个企业都会比较关注自身网站的数据信息,既要保证数据信息的安全性,同时也要保证数据存储读取效率 并且在特殊的场景下,还要对存储的数据信息进行检索和分析;因此数据库服务业务已经在各行各业应用非常的广泛 对于互联网领域的技术人员,对于数据库服务知识的掌握,也将是在求职时必备的技能,有些时候还会绝对入职的定级和薪资水平。 1.10 数据库服务事务知识 1.10.1 数据库存储事务机制概念 事务(Transaction)可以更通俗的理解为交易,所以事务会伴随着交易类的业务类型出现的概念(工作模式); 现实生活中存在很多的交易行为,比如:物换物的等价交换、货币换物的等价交换、虚拟货币换物(虚拟物品)的等价交换; 因此就需要考虑如何保证现实生活中交易过程的和谐,一般会有法律、道德等方面规则进行约束; 而在数据库服务中为了保证线上交易的"和谐",便加入了"事务"工作机制 1.10.2 数据库存储事务机制特性 在数据库服务中引入事务机制概念,主要是为了应用事务机制的相关特性处理安全一致性问题,其中事务机制主要包含的特性有: 特性一:原子性(Atomicity) 原子性表示一个事务生命周期中的DML语句,要么全成功要么全失败,不可以出现中间状态; 语句要么全执行,要么全不执行,是事务最核心的特性,事务本身就是以原子性来定义的;实现主要基于undo log 特性二:一致性(Consistency) 一致性表示一个事务发生前、中、后,数据都最终保持一致,即读和写都要保证一致性; 事务追求的最终目标,一致性的实现既需要数据库层面的保障,也需要应用层面的保障; 特性三:隔离性(Isolation) 隔离性表示一个事务操作数据行的时候,不会受到其他事务的影响,主要利用锁机制来保证隔离性; 特性四:持久性(Durability) 持久性表示一旦事务进行了提交,即可永久生效(落盘) 保证事务提交后不会因为宕机等原因导致数据丢失;实现主要基于redo log 事务ACID相关知识官方说明:https://dev.mysql.com/doc/refman/8.0/en/mysql-acid.html 1.10.3 数据库存储事务生命周期 在运用事务机制完成相关工作任务时,对于事务使用是存在生命周期概念的,标准显示的事务生命周期控制语句有: 说明:事务生命周期中,只能使用DML语句,其中包括:select、update、delete、insert;DDL语句会隐式进行提交 Begin:DML01 DML02 DML03 Commit; CR + Double write 1 # 开启事务机制 begin; 1 2 start transaction; # 提交事务任务 commit; 1 # 回滚事务操作 rollback; 事务的生命周期操作演示: 1.10.4 数据库存储事务提交方式 方式一:在事务生命周期管理过程中,事务的提交机制可以采用自动提交方式(auto_commit) 事务自动提交方式作用说明: 事务自动提交表示在没有显示的使用begin 语句的时候,执行DML操作语句时,会在DML操作语句前自动添加begin ; 并在DML操作语句执行后自动添加commit ; 在生产环境中,若处于频繁事务业务场景中,建议关闭autocommit自动提交功能,或者每次事务执行的时候; 都进行显示的执行begin 和commit ...

2026年1月9日 · 12 分钟 · DBA Student

DAY10 - MySQL性能优化

基础章节-01-MySQL数据库服务中级课程 1.00 课程知识章节说明 目前在互联网的实际应用中,各个企业都会比较关注自身网站的数据信息,既要保证数据信息的安全性,同时也要保证数据存储读取效率 并且在特殊的场景下,还要对存储的数据信息进行检索和分析;因此数据库服务业务已经在各行各业应用非常的广泛 对于互联网领域的技术人员,对于数据库服务知识的掌握,也将是在求职时必备的技能,有些时候还会绝对入职的定级和薪资水平。 1.13 数据库服务克隆应用 1.13.1 数据库克隆概念介绍 在数据库MySQL 8.0(8.0.17+)版本中,引入了数据库的克隆功能,主要是借助clone-plugin实现的,是对数据页底层克隆; 克隆的数据是InnoDB存储引擎中的物理快照信息,包括schemas, tables, tablespaces, and data dictionar y metadata; 在数据库中出现克隆功能,主要是为了满足目前云原生的技术应用场景,同时也是为了海量数据备份而诞生的; 在数据库中实现克隆功能应用有两种方式: 本地克隆(Local Cloning): 启动克隆操作的MySQL数据库服务器实例中的数据,将会克隆到同服务器或同节点上的一个目录里; 1669564772486 远程克隆(Remote Cloning): 默认情况下,远程克隆操作会删除接受者(recipient)数据目录中的数据,并将其替换为捐赠者(donor)的克隆数据; 也可以将数据克隆到接受者的其他目录中,以避免删除现有数据;(属于可选操作); 主要用于实现数据远程的快速热迁移操作,在迁移过程中,除了DDL操作情况,其他操作都不会出现阻塞情况; 还可以利用远程克隆技术,实现快速构建数据库的主从架构环境,实现主从数据信息快速复制同步; 1669564937916 1.13.2 数据库克隆原理说明 在进行数据库克隆操作时,会经历几个重要的过程或步骤: 01 Page copy: 在进行数据页复制操作时,会涉及到两个操作动作: 开启redo archiving功能,从当前点开始存储新增的redo_log,这样从当前位置点开始所有的增量修改都不会丢失; 同时上一步在page track的page被发送到目标端,确保当前位置点之前所有做的变更一定发送到目标端; 关于redo archiving实际上这是官方早就存在的功能,主要用于官方的企业级备份工具,clone利用了该特性来维持记录增量产生的redo 在开始克隆前会做一次checkpoint; 对于redo archiving功能应用,会开启一个后台线程log_archiver_thread()来做日志归档; 当有新的写入时(notify_about_advanced_write_lsn),也会通知线程去进行归档,当arch_log_sys处于活跃状态时, 线程会控制日志写入以避免未归档的日志被覆盖(log_write_wait_on_archiver),注意如果log_write等待时间过长的话, archive任务会被中断掉; 02 Redo copy: 停止redo archiving功能,所有归档的日志被发送到目标端,这些日志包含了从page copy阶段开始到现在的所有日志; 另外可能还需要记下当前的复制点,例如:最后一个事务提交时的binlog位置点或者gtid信息,在系统页中可以找到; 03 Done: 目标端重启实例,通过crash recover y将redo log应用上去; 克隆原理过程分析参考链接:https://zhuanlan.zhihu.com/p/437760913 说明:整个克隆过程都会以事件信息记录,可以很清晰的看到克隆的流程,如果克隆过程中断,也会以追加方式进行继续克隆; 在进行克隆功能应用时,也是存在一些限制性操作的:(结合官方列出的限制) 对于MySQL 8.0.27之前版本,在进行克隆操作期间,是不允许在捐赠者和接受者上进行DDL操作,包括:truncate table操作; ...

2026年1月10日 · 37 分钟 · DBA Student

DAY10 - MySQL主从复制

基础章节-01-MySQL数据库服务中级课程 1.00 课程知识章节说明 目前在互联网的实际应用中,各个企业都会比较关注自身网站的数据信息,既要保证数据信息的安全性,同时也要保证数据存储读取效率 并且在特殊的场景下,还要对存储的数据信息进行检索和分析;因此数据库服务业务已经在各行各业应用非常的广泛 对于互联网领域的技术人员,对于数据库服务知识的掌握,也将是在求职时必备的技能,有些时候还会绝对入职的定级和薪资水平。 1.13 数据库服务克隆应用 1.13.1 数据库克隆概念介绍 在数据库MySQL 8.0(8.0.17+)版本中,引入了数据库的克隆功能,主要是借助clone-plugin实现的,是对数据页底层克隆; 克隆的数据是InnoDB存储引擎中的物理快照信息,包括schemas, tables, tablespaces, and data dictionar y metadata; 在数据库中出现克隆功能,主要是为了满足目前云原生的技术应用场景,同时也是为了海量数据备份而诞生的; 在数据库中实现克隆功能应用有两种方式: 本地克隆(Local Cloning): 启动克隆操作的MySQL数据库服务器实例中的数据,将会克隆到同服务器或同节点上的一个目录里; 1669564772486 远程克隆(Remote Cloning): 默认情况下,远程克隆操作会删除接受者(recipient)数据目录中的数据,并将其替换为捐赠者(donor)的克隆数据; 也可以将数据克隆到接受者的其他目录中,以避免删除现有数据;(属于可选操作); 主要用于实现数据远程的快速热迁移操作,在迁移过程中,除了DDL操作情况,其他操作都不会出现阻塞情况; 还可以利用远程克隆技术,实现快速构建数据库的主从架构环境,实现主从数据信息快速复制同步; 1669564937916 1.13.2 数据库克隆原理说明 在进行数据库克隆操作时,会经历几个重要的过程或步骤: 01 Page copy: 在进行数据页复制操作时,会涉及到两个操作动作: 开启redo archiving功能,从当前点开始存储新增的redo_log,这样从当前位置点开始所有的增量修改都不会丢失; 同时上一步在page track的page被发送到目标端,确保当前位置点之前所有做的变更一定发送到目标端; 关于redo archiving实际上这是官方早就存在的功能,主要用于官方的企业级备份工具,clone利用了该特性来维持记录增量产生的redo 在开始克隆前会做一次checkpoint; 对于redo archiving功能应用,会开启一个后台线程log_archiver_thread()来做日志归档; 当有新的写入时(notify_about_advanced_write_lsn),也会通知线程去进行归档,当arch_log_sys处于活跃状态时, 线程会控制日志写入以避免未归档的日志被覆盖(log_write_wait_on_archiver),注意如果log_write等待时间过长的话, archive任务会被中断掉; 02 Redo copy: 停止redo archiving功能,所有归档的日志被发送到目标端,这些日志包含了从page copy阶段开始到现在的所有日志; 另外可能还需要记下当前的复制点,例如:最后一个事务提交时的binlog位置点或者gtid信息,在系统页中可以找到; 03 Done: 目标端重启实例,通过crash recovery将redo log应用上去; 克隆原理过程分析参考链接:https://zhuanlan.zhihu.com/p/437760913 说明:整个克隆过程都会以事件信息记录,可以很清晰的看到克隆的流程,如果克隆过程中断,也会以追加方式进行继续克隆; 在进行克隆功能应用时,也是存在一些限制性操作的:(结合官方列出的限制) 对于MySQL 8.0.27之前版本,在进行克隆操作期间,是不允许在捐赠者和接受者上进行DDL操作,包括:truncate table操作; 对于MySQL 8.0.27之后版本,在捐赠者上默认允许并发DDL操作,对于捐赠者上并发DDL的支持由clone_block_DDL变量控制; 对于不同版本的MySQL数据库实例之间,是不能进行克隆操作的。对于捐赠者和接受者必须是确切相同数据库服务版本; 例如:你不能克隆数据在between MySQL 5.7 and MySQL 8.0, or between MySQL 8.0.19 and MySQL 8.0.20; 这个克隆功能只支持在数据库8.0.17版本或之后的版本 参考官方链接说明:https://dev.mysql.com/doc/refman/8.0/en/clone-plugin-limitations.html ...

2026年1月10日 · 40 分钟 · DBA Student