阿里云Linux默认数据安装在/alidata目录中,而该目录是在系统盘下,一旦系统盘容量用完,就面临着要把/alidata转移到新的数据盘的问题。
通过百度和本人亲自实践,总结出一套非常简单的方法如下:
假设新增加的硬盘为/dev/xvdb
前且已经分好了区并格式化了,为/dev/xvdb1
首先,创建一个临时加载点
mkdir /data
将新分区加载进来,如下
mount /dev/xvdb1 /data
先停止所有的服务
service mysqld stop
service httpd stop
移动数据
mv /alidata/* /data/
卸载新加载的分区
umount /dev/xvdb1
然后重新加载到/www目录下,如
mount /dev/xvdb1 /alidata
启动服务
service mysqld start
service httpd start
到此,就完成了
但还要修改/etc/fstab这个文件,否则重起后,会找不到数据导致错误的发生
在/etc/fstab增加一行,大概如下
/dev/xvdb1 /alidata ext3 defaults 0 0
保存退出,这样再次重起也没问题了
如果顺利,上面基本就完成了迁移。
但是,天有不测风云,以下是迁移过程中遇到的几个问题:
1)mysql 报错:MYSQL:The server quit without updating PID file
参考:http://www.jb51.net/article/33810.htm
http://blog.sina.com.cn/s/blog_637e04c9010117ri.html
我的解决方法:
a)去mysql的数据目录/data看看,如果存在mysql-bin.index,就赶快把它删除掉。
b)用命令“ps -ef|grep mysqld”查看是否有mysqld进程,如果有使用“kill -9 进程号”杀死,然后重新启动mysqld!
c)看看mysql安装目录的权限,特别是data目录的权限
给予权限,执行 “chown -R mysql.mysql /alidata/server/mysql-5.5.37” “chmod -R 755 /alidata/server/server/mysql/data” 然后重新启动mysqld!
2)umount /dev/xvdb1 出现 umount.nfs: /dev/xvdb1: device is busy
解决:
通过这条命令查看:
[root@localhost /]# fuser -m -v /dev/xvdb1
用户 进程号 权限 命令
/dev/xvdb1: root 2798 ..c.. bash
root 2996 ..c.. su
如上所示,有两个进程占用了,将其kill掉,再重新取消挂载。
[root@localhost /]# kill -9 2798
[root@localhost /]# kill -9 2996
[root@localhost /]# umount /dev/xvdb1
参考:http://www.cnblogs.com/jankie/archive/2012/11/27/2790529.html