话说在VPS中,重装系统也许是不可避免的事。对于很多VPS供应商而言,尤其是Linux客户机的VPS。所谓的重装,也就是直接用一块已经安装好系统的新硬盘镜像,替换掉以前的就是了。因此很多VPS供应商明确的指出——“VPS系统重装后,Windows客户机的C盘数据将清空,Linux客户机所有数据将清空,请客户做好备份”。

大家都知道,中国的拨号式“宽带”。对于备份整个服务器,简直是有点找抽的做法。因此作为服务商推出一项新策略——智能备份。简单的说,就是直接将给你的硬盘空间一分为二,一半用于运行,一半用于备份。所以常常号称40G硬盘空间的你,实际上只能得到20G可用空间。这样的确起到了备份的作用,但是付出的代价也是极为巨大的。

既然服务商的方案我们不想采用,又更不想每次重装都要下载、上传整个硬盘。那我们怎么办呢?方法很简单,借鉴Windows的做法,将数据和程序物理性的分开处理。即将磁盘分区修改为两个以上,一个存储系统程序,一个用于存储数据。这里,我们要说的就是MySQL数据的剥离。

知道MySQL的人都知道,MySQL的默认数据存放于/var/lib/mysql。这里我们假定将这个数据位置修改为/home/mysql。于是就有了我们三步走的迁移攻略了:

  • 停下mysql服务;

  • 复制数据到新位置:要注意的是,mysql的数据及其数据存储目录的属主和属组都是mysql。而通常我们貌似也不知道mysql用户的密码,所以怎么办呢?当然是以root用户来复制咯。所以这一要注意,复制完成后,切记要将新目录及其子目录、文件的属组、属主修改为mysql;

  • 修改MySQL配置文件/etc/mysql/my.cnf,将datadir设置项的值设置为新的数据位置/home/mysql。

这里提供个小脚本,请注意这个脚本的适用环境是ArchLinux,其他发行版可参考。主要的差别在于默认的MySQL配置文件路径、默认的MySQL数据存储目录、修改后的MySQL数据存储目录。