背景
因为业务需要频繁的还原数据库,但是数据库比较大每次还原都需要几个小时的时间,所有选择使用docker镜像的方式解决还原问题。(缺点:比较耗磁盘空间)
操作
之前直接拉取官方的mysql镜像启动后,还原数据库后再执行docker commit发现备份的数据丢失了。原因是mysql/var/lib/mysql中的 文件是没有被提交到镜像中的。
解决方法
1、需要 在修改mysql容器 中的 根目录下 新建目录 mkdir /workdir 。
2、 将 /var/lib/mysql 复制 到新建目录中。 cp -r /var/lib/mysql /workdir
3、 修改 /etc/mysql/my.cnf
datadir = /workdir/mysql
4、退出 重启 容器就生效。
5、重新 将该容器 commit 为新 的镜像, 再进行开新容器就可以了。
操作步骤
后面就可以基于新提交的镜像去备份数据了