/var/lib/mysql 安装在分区 / 上,该分区现已满了。有没有办法将其安装在 /home/mysql 下以获得更多磁盘空间?
答案1
- 停止 MySQL
- 将 MySQL 数据从 移动
/var/lib/mysql
到/home/mysql
- 将 MySQL 指向新的数据目录
- 启动 MySQL
它可以像这样实现(警告:不是已經測試)
/etc/init.d/mysql stop
mv /var/lib/mysql /home/.
ln -s /home/mysql /var/lib/mysql
/etc/init.d/mysql start
总是在开始移动数据目录之前请先进行备份。
答案2
理想情况下,您应该在其自己的分区上为其提供自己的挂载点,该分区可以挂载到/var/lib/mysql
。
除此之外,您还可以选择使用回送文件系统,尽管它确实会带来一些 MySQL 可能会注意到的 I/O 延迟。只有您才知道稍微增加 I/O 延迟是否会损害您的预期性能。
粗略的程序....
- 使用 dd 在某处创建一个环回文件。
dd if=/dev/zero of=/home/mysql/datavol bs=1M count=4096
- 将文件附加到环回设备
losetup /dev/loop0 /home/mysql/datavol
- 按照您的意愿格式化设备。
mkfs.ext3 /dev/loop0
- 将其安装在某处
mount /dev/loop0 /mnt
- 复制您的数据
cp -a /var/lib/mysql/ /mnt/
- 也可以使用其他方法,这只是其中一种。
- 清除 /var/lib/mysql
- 重新挂载到 /var/lib/mysql
umount /mnt ; mount /dev/loop0 /var/lib/mysql
- 确保目录属于正确的用户
chown mysql:mysql /var/lib/mysql
此时,您应该拥有一个更大的 /var/lib/mysql,它实际上托管在更大的分区中。