假设我在/var上安装了分区sda2 ,并且该分区几乎已满。 我有第二个磁盘sdb的分区sdb1我想挂载为/var 。
现在,因为一个正在运行的服务(mysql)一直在使用/var ,有没有办法在不停止服务的情况下进行切换?
设置第二个服务器作为奴隶。 您可能需要主/主设置,以便主机可以进行写操作。 将IP移到第二台机器上。 现在你可以在第一台机器上做你的maint了。 这将最大限度地减lessMySQL服务的停机时间。
我很抱歉,答案是否定的,没有。 如果你在mysql使用文件系统的时候开始移动文件系统,那么你的数据库就完全被占满了。
首先和最重要的是: 像推倒车说,build立一个奴隶服务器 。
但作为第二点,你不必移动MySQL(除非它真的是唯一占用/var空间的东西):如果/var/log /var/spool /var/www等,你可以移动这些分离的文件系统。
事实上,MySQL可能是你的1000磅重的大猩猩,但是如果你真的在空间上碾压(而不是删除其他东西不是一种select),你可以把它作为一个权宜之计,让你的奴隶服务器。
同意JennyD的回答,如果不closures数据库,就无法做到这一点。
但是,如果mysql数据库本身不是那么大,而且系统的I / O速度相当高,那么只需将几个命令链接在一起并在一段时间内运行,就可以很轻松地实现这一点。 我已经成功地为关键的mysql数据库做了很多次。 也许宣布维护,并在testing系统上做一些testing运行,以找出需要多长时间。
就像是:
/etc/init.d/mysql stop && mv /var/lib/mysql/database /mnt/newdisk/mysql/ && ln -s /mnt/newdisk/mysql/database /var/lib/mysql/database && /etc/init.d/mysql start
这有点粗糙,但有效。 而且在许多情况下(可能在所有这些实践中,除了最关键的任务“永远不能倒下”的系统)。 命令中的“&&”确保如果以前的命令失败,它将不会继续。