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

/ var / lib / mysql挂载分区上/现在已满。 有没有办法挂载这个/ home / mysql的更多的磁盘空间?

  1. 停止MySQL
  2. 将MySQL数据从/var/lib/mysql/home/mysql
  3. 将MySQL指向新的数据目录
  4. 启动MySQL

它可以像这样实现(警告: 未经testing)

 /etc/init.d/mysql stop mv /var/lib/mysql /home/. ln -s /home/mysql /var/lib/mysql /etc/init.d/mysql start 

在开始移动数据目录之前,请始终进行备份。

理想情况下,您可以在自己的分区上给它自己的挂载点,挂载点可以挂载到/var/lib/mysql

否则,你可以select使用loopback文件系统,尽pipe它肯定会引入一些MySQL可能会注意到的I / O延迟。 只有你可以知道是否增加一点I / O延迟会损害你的预期性能。

粗略的程序….

  1. 使用dd在某处创build一个回送文件。
    • 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实际托pipe你的大分区。