mysql:我是否应该将 mysql tmpdir 从 /tmp 更改为 /var/lib/mysql/tmp

mysql:我是否应该将 mysql tmpdir 从 /tmp 更改为 /var/lib/mysql/tmp

最近,在一台生产服务器上,我们发现复制因/tmp驱动器上分配的空间较少而出现空间问题而被停止。

我想tmpdir/tmp[default]/var/lib/mysql/tmp

以下是我认为我应该做的事情。

  1. 停止mysql
  2. tmp在位置创建名为的目录/var/lib/mysql/
  3. 添加tmpdir = /var/lib/mysql/tmp/
  4. 启动 mysql

权限级别有什么需要注意的吗/var/lib/mysql/tmp/

答案1

Below are what I guess I should do.

 1. stop mysql
 2. create directory called `tmp` in the location `/var/lib/mysql/`
 3. add `tmpdir = /var/lib/mysql/tmp/`
 4. start mysql

您可以通过在更改后重新启动 MySQL 来组合 1. 至 4.。

大约 2.,您应该将 放在tmpdir外面datadir

权限级别有什么需要注意的吗 /var/lib/mysql/tmp/

chown mysql:mysql /path/to/tmp/dir足够。

答案2

访问此博客了解 apparmor 和 my.cnf 配置的详细步骤,http://sharadchhetri.com/2014/12/27/change-path-tmpdir-mysql-server-ubuntu/

首先检查你的 tmp dir 文件夹

SHOW VARIABLES LIKE 'tmpdir';

创建my.cnf的备份

sudo cp -pv /etc/mysql/my.cnf /etc/mysql/my.cnf.`date +%F`.bak

创建新目录来保存文件

sudo mkdir /mysql_tmp_dir

使 mysql 用户成为目录 sudo chown mysql:mysql /mysql_tmp_dir 的所有者

编辑我的.cnf

代替,

 sudo vim /etc/mysql/my.cnf
 tmpdir = /tmp 

 tmpdir = /mysql_tmp_dir

编辑 mysqld 的 apparmor 配置

sudo vi /etc/apparmor.d/usr.sbin.mysqld

添加线条,

/mysql_tmp_dir r,  
/mysql_tmp_dir rw

重新启动 apparmor 和 mysql

sudo service apparmor restart
sudo service mysql restart

要检查更改是否有效,

SHOW VARIABLES LIKE 'tmpdir';

成功了!这将显示新 tmpdir 的路径

答案3

不建议这样做。默认情况下,/tmp 将在 tmpfs 之外挂载,mysql 将使用它进行超大查询等。在 tmpfs 中意味着 IOPS 会命中 RAM 而不是硬盘或 SSD。这可以提高性能,并且没有真正的缺点,因为存储在 tmpdir 中的数据适合易失性存储。如果您的 /tmp 大小达到最大值,我建议您编写查询以提高效率,或者如果您有足够的 RAM,请通过 fstab 扩大 /tmp 的大小。如果此解决方案不起作用,请随意定义您自己的 tmpdir 位置并将其指向具有更大分区分配的磁盘。

答案4

如果你在 /var/lib/mysql 下创建 tmp,mysqld 会认为,这是数据库......

相关内容