【发布时间】:2014-06-08 17:30:01
【问题描述】:
我在 docker.io 上玩了几天。太棒了! 一些简单的容器已经在生产服务器中运行。
目前我坚持如何进行容器备份。 假设我在高负载(每秒 10k 请求)下运行了带有 supervisor+apache+memcached+mysql 的复杂 docker 容器。 制作安全吗
docker 导出 > 备份.tar
或者我必须停止容器内的所有进程,并且仅在将容器导出到 tar 文件之后?
【问题讨论】:
标签: docker
我在 docker.io 上玩了几天。太棒了! 一些简单的容器已经在生产服务器中运行。
目前我坚持如何进行容器备份。 假设我在高负载(每秒 10k 请求)下运行了带有 supervisor+apache+memcached+mysql 的复杂 docker 容器。 制作安全吗
docker 导出 > 备份.tar
或者我必须停止容器内的所有进程,并且仅在将容器导出到 tar 文件之后?
【问题讨论】:
标签: docker
如果“安全”是指“一致”,则导出的存档将是文件系统一致。
docker export命令与任何其他经典备份方法一样,无法解决应用程序一致的问题。
Apache 和 Memcached 不会成为问题,因为它们不需要存储来维护任何类型的状态。
但是如果你从docker export生成的镜像运行容器,那么以这种方式备份Mysql可能会让你的数据库在恢复模式下重启。
特别是,如果在必须执行写入活动(插入、更新..)时进行备份, 与任何其他文件系统级备份一样,您将丢失一些事务。
如果您需要 Mysql 备份的数据文件 100% 一致并反映数据的确切状态,您必须:
docker export
flush tables with read lock;。导出完成后,你必须运行unlock tables;备份的数据文件(一般在/var/lib/mysql下)将是一致的。mysqldump...)【讨论】: