假设我已sda2
挂载分区/var
,但该分区几乎已满。我还有第二个磁盘,我想将sdb
其分区挂载为。sdb1
/var
现在,由于正在运行的服务(mysql)/var
一直在使用,有没有办法在不停止服务的情况下进行切换?
答案1
将第二台服务器设置为从服务器。您可能需要主/主设置,以便任一主机都可以进行写入。将 IP 移至第二台机器。现在您可以在第一台机器上进行维护。这将最大限度地减少 MySQL 服务的停机时间。
答案2
很遗憾,答案是否定的。如果你在 mysql 使用文件系统时开始移动它,你的数据库就会完全被搞垮。
答案3
首先:按照 toppledwagon 所说的操作,设置一个从属服务器。
但作为次要的观点:您不必移动 MySQL(除非它实际上是唯一占用大量空间的东西):如果您在、、等/var
中有很多垃圾,您也可以将它们移动到单独的文件系统。/var/log
/var/spool
/var/www
实际上,MySQL 可能是分区上最重的负担,但如果您真的面临空间不足的问题(而删除其他内容又不是一个选择),您可以在启动从属服务器时将其作为权宜之计移动。
答案4
同意 JennyD 的回答,不关闭数据库就无法做到这一点。
但是,如果 mysql 数据库本身不是那么大,并且系统的 I/O 速度相当高,那么您可以轻松完成此操作,并将停机时间降至最低,只需将几个命令链接在一起并在使用率较低时运行它即可。我已经多次成功地为关键的 mysql 数据库执行此操作。也许可以宣布维护并在测试系统上进行几次测试运行,以了解需要多长时间。
就像是:
/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
它有点粗糙,但很有效。而且在很多情况下都很实用(可能在所有情况下,除了最关键的“不能停机”的系统)。命令中的“&&”确保如果前一个命令失败,它将不会继续。