innodb_tmpdir - xiaoboluo768/qianjinliangfang GitHub Wiki
- 指定online ddl需要重建表操作期间创建的临时排序文件的交换目录
- 该参数的有效值为:除MySQL数据目录路径之外的任何目录路径。如果值为NULL(默认值),则会在MySQL的临时目录下(由参数tmpdir指定,如果tmpdir未指定,则默认Unix上为$ TMPDIR,Windows上为%TEMP%)创建临时文件
- 由于在执行需要重建表的online ALTER TABLE操作期间创建的巨大临时排序文件(如果操作的是一张大表且表空间文件大小超过tmpfs文件系统的大小时),可能会发生溢出。通过innodb_tmpdir参数指定ALTER TABLE语句使用的临时文件目录到非操作系统/tmp的目录,可以避免tmpfs文件系统上发生溢出(当tmpdir参数没有设置为/tmp目录或未指定值时)。
- 全局,会话,动态参数,目录类型值,默认值为NULL,动态修改该参数需要有FILE权限,5.7.11版本引入
- 注意:
- online ddl如果需要重建表,则重建表操作会同时在原始表的目录下创建一个中间表文件,innodb_tmpdir参数不适用于中间表文件
- 对于该参数设置的目录值,除了启动mysqld时会检查外,其他时候就只有在使用SET语句配置innodb_tmpdir参数时才会触发检查指定的目录的权限和是否存在(如果innodb_tmpdir参数设置了一个无效目录,则online ALTER TABLE操作会报错,如果设置正确则在使用online ddl期间产生的临时文件将创建在innodb_tmpdir参数指定的目录下而不是创建在 tmpdir参数指定的目录下)。
- 如果目录值指定的是一个符号链接,则要求该符号链接必须能够解析出一个绝对路径,且该绝对路径的字符串长度不能超过512字节。
- 在复制环境中,如果所有服务器的操作系统环境相同,则建议参数innodb_tmpdir在所有复制节点上设置为相同值,否则如果备库的online ddl的临时空间不够,可能导致在备库重放这些online ddl的时候失败。如果服务器操作系统环境不同,则需要单独配置每个服务器上的innodb_tmpdir参数
上一篇:innodb_online_alter_log_max_size | 下一篇:master_info_repository