我正在使用云 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
这是我做的:
- 停止 MySQL 服务器
- 安装
/dev/sda1
至/data
(记得将其添加到/etc/fstab
) 创建目录结构:
mkdir -p /data/var/lib
将 MySQL 数据目录移动到新文件夹:
mv /var/lib/mysql /data/var/lib/
更改所有者:
chown -R mysql:mysql /data/var/lib/mysql
创建到旧位置的符号链接:
ln -s /data/var/lib/mysql /var/lib/mysql
打开 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 系统,但您可能需要修改变量以匹配您的设置。