docker-mysql迁移到新的挂载目录

  背景:docker运行的mysql所在的磁盘分区只有100G不到, 不太够用了,基于lvm拿新硬盘做了一个新的挂在目录大概有500G的/data1中,打算把mysql的数据迁移到新的目录下;

由 于是docker启动的mysql并且没有做文件映射,所以在docker外看起来几十个G的mysql数据全都放在docker lib的overlay里面,这也算使用docker不熟留下的坑;

下面看能否迁移到更大的空间成功,如果成功,再基于lvm,以后就可以完成此mysql服务的动态扩容了。

先看下overlay的最后修改时间:

还是先停止包含mysql的容器:

为了确定,再瞄下最后修改时间,还是上面那个时间没变。接下来复制overlay2的数据到/data1:

38G的数据大概复制了十几分钟;接下来更改原overlay2的名字,失败的话还能切回来:

然后设置软链到新的目录下:ln -s /data1/overlay2 .

尝试重启docker-mysql:

docker start essbuck1.5 发现有路径问题,这可能需要把整个docker 目录进行迁移:

于是复制docker目录下剩下的文件,-n跳过最大的overlay文件夹:  cp -n ./* /data1/ -r

剩下的文件都很下,很快就完成了;

停止dockerd 服务,因为我是直接dockerd的,所以使用kill命令

重启dockerd之后,容器重启ok,但是容器内mysql出现权限问题,找了很久之后发现是cp复制的时候没有保留之前的权限;导致容器内mysql启动失败,

于是重新cp -p 保留权限复制,然后这回打算采用mount -bound 挂载回原来目录的方法:

cp -p /var/lib/docker /data1/ -r

mount --bind /data1/docker /var/lib/docker/

dockerd &

docker ps -a

之后mysql自动启动ok,可以访问,至此就完成了无损mysql数据迁移,且根据之前的那篇linux 硬盘分区和使用lvm管理,就可以实现mysql的动态扩容了,至于其他数据库原理就一样啦。

 

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值