使用新挂载为 MySQL 创建更多空间

使用新挂载为 MySQL 创建更多空间

我正在使用云 CentOS 5 实例,我意识到我一开始就保留了默认分区。/ 上的所有内容都已安装在约 10GB 的 hda 上。另一个驱动器 (sda) 约 90GB 用于备份,但我可以在需要时释放它。

我的 MySQL DB 现在越来越大,我正在考虑将其中一个 sda 驱动器安装到 /var/lib/mysql。这是 mysql 的通常做法吗(给它自己的分区)?

我需要做什么才能确保此移动过程轻松无损且不会丢失数据?服务器处于活动状态,用户正在读取和写入数据库,因此我认为我会在深夜进行此操作并首先关闭 mysqld。然后我计划将 /var/lib/mysql 中的所有内容移动到某个临时目录中,然后将 sda1 安装到 /var/lib/mysql 上,然后将内容从临时目录移回新安装的 /var/lib/mysql 目录中。这是正确的方法吗?还有其他一些我没有想到的可以为 MySQL 提供更多空间的方法吗?

我担心简单的 mv 可能会错过目录中的某些隐藏文件(我对 mv 的工作原理一无所知,深表歉意)。

答案1

这是我做的:

  1. 停止 MySQL 服务器
  2. 安装/dev/sda1/data(记得将其添加到/etc/fstab
  3. 创建目录结构:

    mkdir -p /data/var/lib

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

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

  5. 更改所有者:

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

  6. 创建到旧位置的符号链接:

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

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

这避免了两次移动 datadir 并且您可以将其用于/dev/sda1其他目的。

答案2

看起来是个不错的方法。移动时要注意一些事项。如果 mysqld 不是以 root 身份运行,请确保它对新分区具有 RW 权限。不要忘记编辑 /etc/fstab,以免在重启时丢失挂载。

答案3

如果您想将其单独挂载,我同意 quanta 的建议,将新驱动器挂载到 /data 并符号链接 /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 构建的 CentOS-5 系统,但您可能需要修改变量以匹配您的设置。

相关内容