首页 > 数据库 >mysql undo log管理

mysql undo log管理

时间:2023-04-23 18:56:08浏览次数:45  
标签:eo log normal lms undo tablespace mysql oslms

MySQL undo log 管理

在InnoDB存储引擎中,undo log是采用分段(segment)的方式进行存储的。rollback segment称为回滚段,每个回滚段中有1024个undo log segment。在MySQL5.5之前,只支持1个rollback segment,也就是只能记录1024个undo操作。在MySQL5.5之后,可以支持128个rollback segment,分别从resg slot0 - resg slot127,每一个resg slot,也就是每一个回滚段,内部由1024个undo segment 组成,即总共可以记录128 * 1024个undo操作。

不仅存放着数据更新前的记录,还记录着RowID、事务ID、回滚指针。其中事务ID每次递增,回滚指针第一次如果是insert语句的话,回滚指针为NULL,第二次update之后的undo log的回滚指针就会指向刚刚那一条undo log日志,依次类推,就会形成一条undo log的回滚链,方便找到该条记录的历史版本。

在MySQL5.6中开始支持把undo log分离到独立的表空间,并放到单独的文件目录下;这给我们部署不同IO类型的文件位置带来便利,对于并发写入型负载,我们可以把undo文件部署到单独的高速存储设备上.

MySQL从8.0开始undo 表空间管理已经发生了改变:

在5.7版本中一旦MySQL初始化以后,就不能再改变undo表空间了,所以我们在5.7版本中都是在初始化的时候对undo表空间进行一些设置,类似这样:在my.cnf文件中加入innodb_undo_directory= /data/mysql/undologs 和 innodb_undo_tablespaces=5 这两个参数,之所以这么改,是因为我们想把undo表空单独从系统表空间idbdata中分离出来,这样就可以消除因undo的问题造成对ibdata系统表空间的影响,所以上面的参数配置在5.7版本中是我们对MySQL初始化做的一个常规的最佳实践设置,如果不设置,那么在5.7版本中,undo还是默认会放在ibdata中

从MySQL8.0版本开始,MySQL默认对undo进行了分离操作,也就是说,不需要在初始化中手动配置参数,默认会在datadir目录下生成两个10兆大小的undo表空间文件undo_001 和 undo_002 并且可以在线的增加和删除undo表空间文件进行动态扩容和收缩,这在之前的版本都是不被准许的。

8.0在线增加undo tablespace

  • undo tablespace 文件名必须以.ibu结尾。
  • tablespace名字不能以innodb_开头。
mysql> create undo tablespace innodb_undo_003  ADD DATAFILE 'undo_003';
ERROR 3119 (42000): InnoDB: Tablespace names starting with `innodb_` are reserved.
mysql> create undo tablespace undo_003  ADD DATAFILE 'undo_003';
ERROR 3121 (HY000): The ADD DATAFILE filepath must end with '.ibu'.
mysql> create undo tablespace undo_003  ADD DATAFILE 'undo_003.ibu';
Query OK, 0 rows affected (0.49 sec)

8.0在线删除表空间

ALTER UNDO TABLESPACE tablespace_name SET INACTIVE;

DROP UNDO TABLESPACE tablespace_name;

mysql> alter undo tablespace undo_003 set inactive;
Query OK, 0 rows affected (0.00 sec)

mysql> drop undo tablespace undo_003;
Query OK, 0 rows affected (0.01 sec)

8.0 查看表空间的状态

5.7是没有这个视图的。

mysql> SELECT NAME, STATE FROM INFORMATION_SCHEMA.INNODB_TABLESPACES;
+---------------------------------------------+--------+
| NAME                                        | STATE  |
+---------------------------------------------+--------+
| mysql                                       | normal |
| innodb_temporary                            | normal |
| innodb_undo_001                             | active |
| innodb_undo_002                             | active |
| sys/sys_config                              | normal |
| flinktest/products                          | normal |
| eo_oscomment/comment_like                   | normal |
| eo_oscomment/comment_content                | normal |
| eo_oscomment/comment_relation               | normal |
| eo_oscomment/comment_user_set               | normal |
| eo_oslms/lms_feature_guid                   | normal |
| eo_oslms/lms_grade_display                  | normal |
| eo_oslms/learning_materials                 | normal |
| eo_oslms/lms_summary_score                  | normal |
| eo_oslms/lms_activity_student_ability_score | normal |
| eo_oslms/lms_activity_do                    | normal |
| eo_oslms/lms_activity                       | normal |
| eo_oslms/lms_activity_ability               | normal |
| eo_oslms/lms_ability_summary_score          | normal |
| eo_oslms/learning_materials_students        | normal |
| eo_oslms/lms_system_grade_rule              | normal |
| eo_oslms/lms_activity_extension             | normal |
| eo_oslms/lms_ability_group                  | normal |
| eo_oslms/lms_activity_student               | normal |
| eo_oslms/lms_teacherIn_import_record        | normal |
| eo_oslms/lms_unit                           | normal |
| eo_oslms/lms_unit_student_summary           | normal |
| eo_oslms/record_class_student_videos        | normal |
| eo_oslms/record_class                       | normal |
| eo_oslms/lms_activity_teacher               | normal |
| eo_oslms/lms_ability                        | normal |
| eo_oslms/record_class_students              | normal |
| eo_oscomment/comment_group                  | normal |
| eo_oslms/lms_evaluation_setting             | normal |
| eo_oslms/discuss                            | normal |
| eo_oslms/discuss_students                   | normal |
| ptest/record_class_students                 | normal |
| ptest/_eeo_course_class_del                 | normal |
| ptest/eeo_course_class                      | normal |
+---------------------------------------------+--------+

标签:eo,log,normal,lms,undo,tablespace,mysql,oslms
From: https://www.cnblogs.com/zibuyu886/p/17347442.html

相关文章

  • MySQL-mysqldump原理
    mysqldump原理解析mysqldump命令执行和输出mysqldump--no-defaults-hlocalhost-uroot-p12345678-P3306--databaseseo_oslog--tablest1--single-transaction--master-data=2--set-gtid-purged=OFF>t1.sql日志输出2023-04-23T03:42:18.124438Z2Connect......
  • PVE虚拟机出现系统启动报错“journalctl”to view system logst解决方法
    故障现象  虚拟机卡死,重启虚拟机后,不能正常进入系统解决办法xfsrepair-v-L/dev/dm-0L选项指定强制日志清零,强制xfs_repair将日志归零,即使它包含脏数据(元数据更改)。再重启下虚拟机即可......
  • 读《mysql是怎样运行的》有感
    最近读了一本书《mysql是怎样运行的》,读完后在大体上对mysql的运行有一定的了解。在以前,我对mysql有以下的为什么:InnoDB中的表空间、段、区和页是什么?redolog为什么就能实现事务的持久性?到底什么是意向锁?意向锁有什么用?mysql中的外连接、内连接到底是什么?事务中的一致性到......
  • 批量替换 MySQL 指定字段中的字段
    批量替换MySQL指定字段中的字符串是数据库应用中很常见的需求,但是有很多初学者在遇到这种需求时,通常都是用脚本来实现;其实,MySQL内置的有批量替换语法,效率也会高很多;批量替换的具体语法是:Code:UPDATE表名SET指定字段=replace(指定字段,’要替......
  • C# Mysql The given key '12599' was not present in the dictionary.
    如果查询语句没有问题数据库连接字符串也没有问题,可能是Mysql.Data引用与当前安装的Mysql数据库版本不兼容的问题。我本地安装的mysql版本是8.30,在VS里使用Nuget程序包下载的Mysql.Data引用是其他更低的版本,将程序里用的Mysql.Data也更新到8.30就好了。版本保持一致。 ......
  • MySQL日期字符串转日期格式,日期格式数据转为字符串
    如下:1、日期字符串转换为日期格式数据SELECTDATE('2017-02-11');SELECTDATE('2017/02/11');SELECTSTR_TO_DATE('2015/02/25','%Y/%m/%d');SELECTSTR_TO_DATE('2015-02-25','%Y-%m-%d');返回日期格式数据 2、DATE_FORMAT......
  • MySQL常用函数
    mysql是一个常用的关系型数据库管理系统,提供了许多有用的函数来帮助处理数据。下面是一些mysql中常用的函数:字符串函数concat():将两个或多个字符串连接起来。length():返回指定字符串的字符数。substr():返回指定字符串的子串。lower():将指定字符串转换为小写形式。......
  • MySQL索引失效原因
    索引介绍MySQL默认的存储引擎是InnoDB,它采用B+树作为索引的数据结构。InnoDB和MyISAM存储引擎都支持B+树索引,但是它们的数据存储结构实现方式不同。InnoDB:B+树索引的叶子节点保存全部数据MyISAM:B+树索引的叶子节点保存数据的物理地址在创建表的时候,InnoDB存储引擎默认会创......
  • mysql select for update + 事务处理数据一致性
    如果SELECT后面若要UPDATE同一个表数据的相关操作,最好使用SELECT...FORUPDATE。一:举例说明假设商品表单test_leyangjun 内有一个存放商品库存的num字段,一个id主键 ,在生成订单前须先确定num>0 ,然后才把数量更新。代码如下(比如现在的库存:num=3对应的id=3,现在生成一个订单......
  • cnblogs iconfont.js?v=unknown bug All In One
    cnblogsiconfont.js?v=unknownbugAllInOneUncaughtSyntaxError:Unexpectedtoken'<'(aticonfont.js?v=unknown:1:1)demoshttps://i.cnblogs.com/posts/edit;postId=4687706https://www.cnblogs.com/xgqfrms/p/4687706.html#5170738(......