首页 > 解决方案 > 如何通过 Docker 在生产环境中处理数据备份

问题描述

我有一个运行 MySQL 映像的以下 Docker 文件。

version: '3'

services:

  mysql:
    image: "mysql:5.7"
    container_name: "mysql"
    ports:
      - "6603:3306"
    volumes:
      - ./assets/schema.sql:/docker-entrypoint-initdb.d/init.sql
    environment:
      DATABASE_HOST: mysql
      MYSQL_ROOT_PASSWORD: rootpass
      MYSQL_DATABASE: mydb
      MYSQL_USER: mysql
      MYSQL_PASSWORD: pass

我在本地运行它,但在投入生产之前我有顾虑。

数据备份是如何发生的?我应该继续将容器提交到图像吗?

我是 Docker 新手,所以想知道通过 Docker 部署的数据库在生产中是如何处理的。

标签: mysqldocker

解决方案


我认为您不应该将容器提交给图像。数据是由容器管理的东西,但它不是 db 容器的“一部分”。如果你想在容器重启之间存储数据,你应该使用卷 - 这样你就可以在你的主机卷上保存数据,并mysql使用这个卷运行更多的硬币容器,共享相同的数据。如何使用带有mysql图像的卷在他们的文档部分中进行了描述Where to Store Data

而且,如果您想转储您的数据库,它也在第 1 节的文档中进行了描述Creating database dumps

如果您正在运行更多数据库容器并且想要进行转储,您应该以某种方式自动化此过程,例如作为可以访问您的容器的 Jenkins 作业,或者某些脚本在您的 docker 主机上作为 cron 作业运行 - 这完全取决于您使用什么工具正在使用。


推荐阅读