【问题标题】:How data backup is handled in production via Docker如何通过 Docker 在生产环境中处理数据备份
【发布时间】:2019-05-26 07:10:13
【问题描述】:

我有一个运行 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 部署的数据库在生产中是如何处理的。

【问题讨论】:

    标签: mysql docker


    【解决方案1】:

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

    如果你想转储你的数据库,它也在Creating database dumps部分的文档中描述。

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

    【讨论】:

      【解决方案2】:

      您应该添加卷以包含实际的数据库文件。由于某种原因,您目前只有架构,当您的容器出现故障时,您的数据将丢失。 将卷添加为持久后,您可以使用标准备份方法,例如 cron 作业。

      【讨论】:

        猜你喜欢
        • 2016-11-24
        • 2019-04-18
        • 2019-10-14
        • 1970-01-01
        • 1970-01-01
        • 2021-05-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多