最近,在一台生产服务器上,我们发现复制因/tmp
驱动器上分配的空间较少而出现空间问题而被停止。
我想tmpdir
将/tmp[default]
/var/lib/mysql/tmp
以下是我认为我应该做的事情。
- 停止mysql
tmp
在位置创建名为的目录/var/lib/mysql/
- 添加
tmpdir = /var/lib/mysql/tmp/
- 启动 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 会认为,这是数据库......