用新的安装为MySQL创build更多的空间

我正在使用一个云CentOS 5实例,我意识到我在开始的时候离开了默认的分区。 所有的/已经挂载在大约10GB的hda上。 另一个驱动器(sda)大约用于备份90GB,但是如果需要,我可以将其释放。

我的MySQL数据库现在变得越来越大了,我正考虑将一个sda驱动器挂载到/ var / lib / mysql。 这是MySQL的惯例(给它自己的分区)?

我需要做些什么来确保这一举措是无痛的,没有数据丢失? 服务器与用户正在读取和写入数据库,因此我想我会做深夜,并首先closuresmysqld。 然后,我打算将/ var / lib / mysql中的所有内容移动到临时目录中,然后将sda1挂载到/ var / lib / mysql,然后将内容从临时目录移回到新挂载的/ var / lib / mysql DIR。 这是正确的方法吗? 有没有其他方法可以给MySQL提供更多的空间,我还没有想到?

我很偏执,一个简单的MV可能会错过目录内的一些隐藏的文件(我对我的无知是如何工作的无知道歉)。

这就是我所做的:

  1. 停止MySQL服务器
  2. /dev/sda1挂载到/data (请记住将其添加到/etc/fstab
  3. 创build目录结构:

    mkdir -p /data/var/lib

  4. 将MySQL数据目录移动到新文件夹:

    mv /var/lib/mysql /data/var/lib/

  5. 改变主人:

    chown -R mysql:mysql /data/var/lib/mysql

  6. 创build一个符号链接到旧的位置:

    ln -s /data/var/lib/mysql /var/lib/mysql

  7. 打开2个控制台(我喜欢GNOME终结者中的分裂function)一个启动MySQL服务器,另一个tail -f /var/log/mysqld.log

这避免了两次移动datadir,你可以使用/dev/sda1作其他用途。

看起来像一个好方法。 有些事情要注意移动。 如果mysqld不以root身份运行,请确保它对新分区具有RW权限。 不要忘了编辑/ etc / fstab,这样你就不会在重新启动时松开mount。

如果你想使它成为一个单独的挂载,我同意quantabuild议将新驱动挂载到/ data和symlinking / var / lib / mysql – > / data / mysql。 这样你就可以使用/ data驱动器来处理其他事情,而不会污染mysql目录。

另一种方法是,如果您使用的是LVM,则将新驱动器添加到逻辑卷并扩展文件系统。

在我的云服务器环境中,每台新的机器都有一个10GB的根(/)分区,然后为其添加一个新的40GB分区。 这是我遵循的过程:

 pv="/dev/sdb" vg="VolGroup00" lv="VolGroup00-LogVol00" sudo /usr/sbin/pvcreate $pv sudo /usr/sbin/vgextend $vg $pv sudo /usr/sbin/lvextend -l +100%FREE /dev/mapper/$lv sudo /sbin/resize2fs /dev/mapper/$lv 

在我的情况下,根分区现在将是一个50GB的文件系统,而不是只有10GB

这些默认设置通常在使用LVM构build的CentOS-5盒子上运行,但是您可能需要修改variables以符合您的设置。