ECS 利用快照创建磁盘实现无损扩容数据盘

1.先登录服务器暂停服务,nginx+php+mysql+搜索服务
2.修改mysql的参数

#vi /etc/my.cnf
【mysqld】
datadir=/alidata/mysqldata
server_id=2
binlog_format = "ROW"

3. 首先基于当前数据盘创建一个快照,备份数据,同时可以利用这个快照直接创建独立云磁盘节约数据来回拷贝的时间
4. 打开独立云磁盘的购买页面(https://ecs-buy.aliyun.com/#/clouddisk),选择和ECS相同可用区的地域,购买一个独立云磁盘,购买时直接选择用快照创建磁盘,使用第一步中的快照。

5、打开ECS控制台磁盘页面,找到刚才购买的独立云磁盘,在更多选项中将独立云磁盘挂载到ECS上。

6、登录到服务器上,使用 mount 命令将这块独立云磁盘挂载到系统中,查看一下其中的文件是否和数据盘中的一致。

#mkdir /bak
#mount /dev/vdc1 /bak

7、把原来的磁盘进行扩容

8、确定独立云磁盘中的数据无误后,先使用 fdisk 删除原有的分区表,然后再使用 fdisk、mkfs.ext3 等重新对数据盘执行分区、格式化操作,使数据盘的可用空间变为扩容之后的大小。

#fdisk /dev/vdb        m    d    w
#fdisl -l              查看是否有删除掉分区
#umount /dev/vdb1    
如果出现umount: /alidata: device is busy,运行fuser -m -v /dev/vdb1,结束进程
#df -h            查看是否盘卸载掉
#fdisk -l
#fdisk /dev/vdb        重新挂载盘
#mkfs.ext3 /dev/vdb1
#mount /dev/vdb1
#echo /dev/vdb1 /alidata/ ext3 >> /etc/fstab

9、之后通过cp -R命令将独立云磁盘中的数据全部拷回数据盘,可以加上--preserve=all参数,复制时保留文件的属性。

#cp -R /bak/* /alidata/ --preserve=all

10、查看是否复制完整

#df -h

11、启动服务,恢复正常

启动mysql如果出现Starting MySQL..The server quit without updating PID file ([FAILED]/server/mysql/data/xxxx.pid).
修改my.cnf中
添加datadir=/alidata/mysqldata

12、在ECS中umount独立云磁盘

#umount /dev/vdc1

13、在ECS的磁盘控制台中卸载这块独立云磁盘,卸载后再选择释放(先卸载,然后再释放),操作完成。

原文地址:https://www.cnblogs.com/guantou1992/p/9729757.html