在新的挂载点下重新挂载 MySQL

在新的挂载点下重新挂载 MySQL

/var/lib/mysql 安装在分区 / 上,该分区现已满了。有没有办法将其安装在 /home/mysql 下以获得更多磁盘空间?

答案1

  1. 停止 MySQL
  2. 将 MySQL 数据从 移动/var/lib/mysql/home/mysql
  3. 将 MySQL 指向新的数据目录
  4. 启动 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 延迟是否会损害您的预期性能。

粗略的程序....

  1. 使用 dd 在某处创建一个环回文件。
    • dd if=/dev/zero of=/home/mysql/datavol bs=1M count=4096
  2. 将文件附加到环回设备
    • losetup /dev/loop0 /home/mysql/datavol
  3. 按照您的意愿格式化设备。
    • mkfs.ext3 /dev/loop0
  4. 将其安装在某处
    • mount /dev/loop0 /mnt
  5. 复制您的数据
    • cp -a /var/lib/mysql/ /mnt/
    • 也可以使用其他方法,这只是其中一种。
  6. 清除 /var/lib/mysql
  7. 重新挂载到 /var/lib/mysql
    • umount /mnt ; mount /dev/loop0 /var/lib/mysql
  8. 确保目录属于正确的用户
    • chown mysql:mysql /var/lib/mysql

此时,您应该拥有一个更大的 /var/lib/mysql,它实际上托管在更大的分区中。

相关内容