在MariaDB上设置innodb_tmpdir

时间:2018-10-16 20:31:39

标签: mariadb innodb

版本:10.0.33-MariaDB

正在尝试执行ALTER TABLE,并且在重建期间磁盘空间不足,目前正在使用@@ tmpdir中的/ tmp。我正在尝试将NULL的@@ innodb_tmpdir设置为另一个目录,并且它不断失败并显示以下错误:

MariaDB [(none)]> set @@innodb_tmpdir = '/tmp/inno_tmpdir';
ERROR 1231 (42000): Variable 'innodb_tmpdir' can't be set to the value of '/tmp/inno_tmpdir'
MariaDB [(none)]> show warnings\G
*************************** 1. row ***************************
  Level: Warning
   Code: 1210
Message: InnoDB: Server doesn't have permission in the given location.
*************************** 2. row ***************************
  Level: Error
   Code: 1231
Message: Variable 'innodb_tmpdir' can't be set to the value of '/tmp/inno_tmpdir'
2 rows in set (0.00 sec)

我已授予目录对mysql的完全权限。

 [root@host tmp]# ls -lrt | grep inno_tmpdir
drwxrwxrwx.  2 mysql          mysql             4096 Oct 16 12:15 inno_tmpdir

奇怪的是,我可以设置@@ innodb_tmpdir / tmp(将@@ tmpdir设置为)/ usr / tmp或/ var / tmp

MariaDB [(none)]> set @@innodb_tmpdir = '/var/tmp';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> set @@innodb_tmpdir = '/usr/tmp';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> set @@innodb_tmpdir = '/tmp';
Query OK, 0 rows affected (0.00 sec)

2 个答案:

答案 0 :(得分:0)

innodb_tmpdir被视为启动时的启动,与其他启动(例如innodb_data_home_dir,innodb_undo_directory等)不同。

要在其他目录中搜索表空间,必须将它们(我相信在Linux中用逗号分隔)添加到innodb_directories。

答案 1 :(得分:0)

我有一个类似的问题,但是使用MySQL 5.6.49。 我所做的-它只是向新的temp目录添加了完全权限:

chmod 777 /tmp/inno_tmpdir

然后我就可以设置innodb_tmpdir ='/ tmp / inno_tmpdir'