我用docker.io玩了几天。太棒了! 一些简单的容器已在生产服务器中运行。
目前我陷入了如何进行容器备份的困境。 假设我在高负载(每秒10k请求)下运行了复杂的docker容器和supervisor + apache + memcached + mysql。 制作是否安全
docker export> backup.tar
或者我必须停止容器内的所有进程,并且仅在该导出容器之后停止到tar文件?
答案 0 :(得分:2)
如果“安全”是指“一致”,则导出的存档将文件系统一致。
docker export
命令与任何其他经典备份方法一样,无法解决应用程序一致性的问题。
Apache和Memcached不会成为问题,因为它们不需要存储来维护任何类型的状态。
但是,如果您从docker export
生成的图像中运行容器,则以这种方式备份Mysql可能会使您的数据库在恢复模式下重新启动。
特别是,如果在必须执行写入活动(插入,更新......)时进行备份, 与任何其他文件系统级备份一样,您将丢失一些事务。
如果您需要Mysql备份数据文件100%一致并反映数据的确切状态,您必须:
docker export
flush tables with read lock;
。导出完成后,您必须运行unlock tables;
备份数据文件(通常位于/ var / lib / mysql下)将保持一致。mysqldump
...)