摘录自:http://gfsunny.blog.51cto.com/990565/1566683

undo log(回滚):服务器异常关机或断电重启后,MySQL会对修改过,但尚未提交的事务进行回滚。

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

undo tablespaces相关参数参数含义

innodb_undo_directory[=/opt/mysql/undo]Innodb为还原日志创建的独立表空间的相对或绝对路径。通常用于日志被放置在哪些不同的存储设备上。配合参数innodb_undo_logs和innodb_undo_tablespaces,这决定了系统表空间外还原日志的磁盘分布。默认目录为innodb默认创建它的其他日志文件的目录。

如果想转移undo文件的位置,只需要修改下该配置,并将undo文件拷贝过去就可以了。【支持后期修改】

innodb_undo_logs[=128]定义在一个事务中innodb使用的系统表空间中回滚段的个数。如果观察到同回滚日志有关的互斥争用,可以调整这个参数以优化性能。早期版本的命名为innodb_rollback_segments,该变量可以动态调整,但是物理上的回滚段不会减少,只是会控制用到的回滚段的个数;默认为128个回滚段【手册上最大就是128】【支持后期修改】

innodb_undo_tablespaces[=4]用于设定创建的undo表空间的个数,在mysql_install_db时初始化后,就再也不能被改动了,修改该值会导致MySQL无法启动。

默认值为0,表示不独立设置undo的tablespace,默认记录到ibdata中;否则,则在undo目录下创建这么多个undo文件(每个文件的默认大小为10M)。最多可以设置到126。

例如假定设置该值为4,那么就会在mysql的data目录下创建命名为undo001~undo004的undo tablespace文件。【不支持后期修改】

undo回滚段初始化

如果是正常shutdown重启,并且设置的回滚段个数大于目前已经使用的回滚段个数(trx_sysf_rseg_find_free),就会去新建回滚段(trx_rseg_create)

这里总是从第一个undologtablespace开始初始化回滚段,看起来似乎有些问题,极端情况下,如果我每次重启递增innodb_undo_logs,是不是意味着所有的undo回滚段都会写入到第一个undo tablespace中?

完成初始化后,将当前可用的undo回滚段的个数复制给srv_available_undo_logs,可以通过show status查看:

mysql> show status like'innodb_available_undo_logs';

+----------------------------+-------+

| Variable_name              | Value |

+----------------------------+-------+

| Innodb_available_undo_logs | 128   |

+----------------------------+-------+

1 row in set (0.02 sec)

启动后,innodb_undo_logs是可以动态调整的,但最大不可以超过Innodb_available_undo_logs

在一个非只读的事务开启时,会为其分配回滚段(trx_assign_rseg_low),动态的调整innodb_undo_logs可以限定分配的回滚段范围;

当有长时间运行的事务时,可能导致purge操作来不及回收undo空间,进而导致undo空间急剧膨胀;理论上讲,如果做一次干净的shutdown,应该可以安全的将将这些undo文件删除并重新做一次初始化;也许未来的某个MySQL版本可能实现这个功能,这对于某些服务(比如按磁盘空间收费的云计算提供商)是非常有必要的功能。

参数设置演示:

# rm -rf /data/3306/data/*

# cd /usr/local/mysql/scripts/

# ./mysql_install_db--basedir=/usr/local/mysql --datadir=/data/3306/data --user=mysql --innodb_undo_tablespaces=4

# /etc/init.d/mysqld_3306start

注意:加了--innodb_undo_tablespaces=4参数初始化后,修改my.cnf,加入innodb_undo的参数,如下3行:

innodb_undo_logs=100

innodb_undo_tablespaces = 4

innodb_undo_directory = /tmp/  #这里我是演示起见,随便设置的一个目录

启动mysql,在/tmp/目录下会生成独立的undo表空间文件,如下图:

> show variables like 'innodb_undo%';也可以看到修改生效了

MySQL5.6手册上的截图如下:

mysql innodb_undo_directory默认_MySQL innodb_undo_tablespaces相关参数相关推荐

  1. mysql主从有关参数_MySQL 主从复制相关参数

    列举了MySQL主从复制主要的相关参数 binlog server_id 服务器在集群中唯一标识符 log_bin[=binlog_name] 启动二进制日志 log_bin_index 二进制日志索 ...

  2. mysql 启动参数_MySQL启动相关参数 MySQL DBA学习

    1.basedir = /usr/local/mysql 代表MySQL安装路径 2.datadir = /usr/local/mysql/data 代表MySQL的数据文件路径 3.port = 3 ...

  3. 老男孩mysql参数配置_MySQL启动相关参数解析

    1.basedir = /usr/local/mysql 代表MySQL安装路径 2.datadir = /usr/local/mysql/data 代表MySQL的数据文件路径 3.port = 3 ...

  4. mysql 系统默认_mysql之系统默认数据库

    相关内容: 系统默认数据库information_schema,performance_schema,mysql,test  的意义 首发时间:2018-02-23 17:10 安装mysql完成后, ...

  5. mysql case默认_MySQL知识整理10.1—存储过程和函数

    数据科学探路者:MySQL知识整理9-索引​zhuanlan.zhihu.com 一.什么是存储过程? 简单的说,存储过程是一条或者多条SQL语句的集合,可视为批文件,但是其作用不限于批处理. 我们常 ...

  6. mysql autoenlist默认_mysql连接参数详解

    通常数据库连接字符串为: Database=dbname;Data Source=192.168.1.1;Port=3306;User Id=root;Password=****;Charset=ut ...

  7. mysql case默认_MySQL -- 配置文件my.cnf 的详细说明

    [client] port = 3306 socket = /tmp/mysql.sock [mysqld] ###############################基础设置########## ...

  8. mysql case默认_MySQL数据库架构和同步复制流程

    在分布式系统里面,往往制约整个系统发展的瓶颈点就是数据库,所以数据库的架构和高可用以及数据库的切分都是我们值得花大力气去学习的. 首先我们来说说数据库的架构. 1.mysql主从架构,如图: 这种架构 ...

  9. mysql 5.7主从延迟 相关参数配置

    一直以来,都是听到 mysql 5.7已 消除了延迟,但我们测试环境主从一直存在延迟. 找了很多原因,但一直不理想,直接到找参数:sync_relay_log ,在讨论主从延迟时,很少会说到这个参数. ...

最新文章

  1. 读:[你必须知道的.NET] 第五回:深入浅出关键字---把new说透
  2. 【覆盖安装】通用测试点
  3. CentOS7 安装ownCloud
  4. VC中对象的序列化与文件I/O
  5. 信息学奥赛一本通(2063:【例1.4】牛吃牧草)
  6. eclipse简单使用
  7. android做题imageview缩放,巧用ViewPager实现驾考宝典做题翻页效果
  8. 杭电1596find the safest road
  9. 【Hadoop2.6】Yarn中任务调度器
  10. C++程序设计一、二(二元一次方程与函数、函数指针)
  11. matlab errorbar 例子,科学网—【MATLAB】如何画水平errorbar - 叶瑞杰的博文
  12. allegro里面由于shape out of date
  13. win7系统安装SQL Server 2005开发版步骤详解
  14. 二层交换机、三层交换机及四层交换机的区别
  15. 一元函数积分学之1__不定积分
  16. mysql 表改名_MySQL库改名、表改名
  17. 搜狗拼音输入法输入数字和英文时总是有空格
  18. 函数模板和类模板详解
  19. 软件在环测试 Software in-The-Loop Test
  20. SAP ABAP开发个别概念理论区分理解

热门文章

  1. Qt学习笔记之网络和连接
  2. react native 从头开始
  3. tomcat中实现特定路径下的图片的url访问Tomcat配置图片保存路径,图片不保存在项目路径下...
  4. 全局替换字体,开源库更方便!!!
  5. PPT | 云客堂——云服务助力Java 应用程序开发及部署
  6. 代码:显示查询的日历
  7. Site Definition和Web Template的区别
  8. qemu-launcher:图形化的QEMU启动器
  9. Windows中EFS加密及解密应用
  10. 网管的一天——按小时记录生活