参考:http://www.webhostingtalk.com/showthread.php?t=1086919
对于一些做SEO的人来说,/var/lib/mysql 和 /var/www 是两个占用空间的大户,下面以数据库为例,将/var/lib/mysql下的数据库移动到较大的/home下,并使用软链接将/home/mysql 链接到/var/lib/mysql,实现充分利用空间的目的。
在这些网站都不在使用的时候,停用mysql,apache
/etc/init.d/mysqld stop /etc/init.d/httpd stop
使用rsync完整的将数据拷贝(-a archive mode归档模式 -v verbos显示详细 )
rsync -av /var/lib/mysql /home/
这个过程根据数据量的不同时间不同,数据很大的话建议使用screen
接下来看一下大小,如果以上命令都完全执行完的话,是不会出现什么问题的
du -sh /var/lib/mysql du -sh /home/mysql
将旧的/var/lib/mysql移走,随便移到什么地方,实再不需要删掉也行
mv /var/lib/mysql /var/lib/mysql-bak
创建软链接
ln -s /home/mysql /var/lib/mysql
之后一定要再次确认上面的软链接链接到对的地方,如果不正确mysql一启动就麻烦了。
#######ubuntu用户注意 begin#######
如果使用ubuntu下apt-get安装的mysql版本,还需如下操作
vim /etc/apparmor.d/usr.sbin.mysqld
将如下两行注释
/var/lib/mysql/ r, /var/lib/mysql/** rwk,
变更为(可能是因为apparmor不支持软链接)
/home/mysql/ r, /home/mysql/** rwk,
重启apparmor
/etc/init.d/apparmor restart
#######ubuntu用户注意 end#######
之后启动mysql,apache
/etc/init.d/mysqld start /etc/init.d/httpd start
这样以后所有的mysql数据的位置就在/home/mysql里了。
另一种解决方案:不用软链接而直接将数据库转移到目录/mnt/sx_disk
rsync -av /var/lib/mysql /mnt/sx_disk/
之后在/etc/my.cnf中,将[mysqld]中的如下参数改为
[mysqld] datadir=/mnt/sx_disk/mysql socket=/mnt/sx_disk/mysql/mysql.sock
只这样还不行,会出现
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
另外需添加
[client] port=3306 socket=/mnt/sx_disk/mysql/mysql.sock
这样数据库就存为了新的位置/mnt/sx_disk目录中。
如果同是ubuntu下mysql的话,也需要按上面的方式修改/etc/apparmor.d/usr.sbin.mysqld
Leave a Reply