Docker 带有 Mariadb 的容器 - 容器会变砖并丢失数据吗
Docker container with Mariadb - Can the container get bricked and lose data
我想我可以按照我的另一个建议使用装订卷 post
但我读到容器应该是无状态的。所以看来我的想法是错误的?
我不知道会发生什么灾难性故障,所以如果容器变砖,我是否有可能丢失所有数据?或者有没有办法使用外部存储和恢复?
如何处理这种情况?我有一个管理迁移的模式 table,所以不希望 table 是新的并从方块 1
开始
问题:我应该让云上的mariadb容器写到它喜欢的任何地方吗?或写入主机文件夹?
我的 docker - 撰写片段
mariadb:
image: mariadb:10.4
...
environment:
..
logging:
...
networks:
- backend
restart: on-failure
volumes:
- maria_volume:/var/lib/mysql
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci
# Volumes
volumes:
maria_volume:
另一个版本是(./mariadb 而不是卷部分中的 maria_volume)
networks:
- backend
restart: on-failure
volumes:
- ./mariadb:/var/lib/mysql
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci
您的应用程序总体上需要将数据保存在某处。挂载存储的关系数据库容器很好。在生产环境中,您可以选择 运行 非容器数据库或使用云托管数据库(如果这能更好地满足您的需求)。
我觉得实际的存储机制非常强大,对于命名卷和绑定挂载的主机目录都是如此。在任何一种情况下,您都可能不会遇到数据损坏问题。一如既往,如果数据非常重要,请确保您有数据备份。
此处在使用命名卷和主机目录之间没有明确的选择。主机目录可能更容易备份和恢复;在某些平台上,命名卷会更快。在这两种情况下,在正常操作中,数据将在销毁和重新创建容器后继续存在。使用 docker
命令破坏命名卷的状态会更容易一些,这取决于您的特定用例,可以指向任一方向。
我偶尔会遇到 Docker 的内部状态被破坏,当这种情况发生时,最简单的解决方法是删除整个 /var/lib/docker
树并重新开始(有一个等效的Docker 桌面应用程序中的“重置”按钮)。此路径也会丢失命名卷。在本机 Linux 上,人们普遍观察到实际的命名卷存储只是一个目录,因此您可以保留它。
我想我可以按照我的另一个建议使用装订卷 post
但我读到容器应该是无状态的。所以看来我的想法是错误的?
我不知道会发生什么灾难性故障,所以如果容器变砖,我是否有可能丢失所有数据?或者有没有办法使用外部存储和恢复?
如何处理这种情况?我有一个管理迁移的模式 table,所以不希望 table 是新的并从方块 1
开始问题:我应该让云上的mariadb容器写到它喜欢的任何地方吗?或写入主机文件夹?
我的 docker - 撰写片段
mariadb:
image: mariadb:10.4
...
environment:
..
logging:
...
networks:
- backend
restart: on-failure
volumes:
- maria_volume:/var/lib/mysql
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci
# Volumes
volumes:
maria_volume:
另一个版本是(./mariadb 而不是卷部分中的 maria_volume)
networks:
- backend
restart: on-failure
volumes:
- ./mariadb:/var/lib/mysql
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci
您的应用程序总体上需要将数据保存在某处。挂载存储的关系数据库容器很好。在生产环境中,您可以选择 运行 非容器数据库或使用云托管数据库(如果这能更好地满足您的需求)。
我觉得实际的存储机制非常强大,对于命名卷和绑定挂载的主机目录都是如此。在任何一种情况下,您都可能不会遇到数据损坏问题。一如既往,如果数据非常重要,请确保您有数据备份。
此处在使用命名卷和主机目录之间没有明确的选择。主机目录可能更容易备份和恢复;在某些平台上,命名卷会更快。在这两种情况下,在正常操作中,数据将在销毁和重新创建容器后继续存在。使用 docker
命令破坏命名卷的状态会更容易一些,这取决于您的特定用例,可以指向任一方向。
我偶尔会遇到 Docker 的内部状态被破坏,当这种情况发生时,最简单的解决方法是删除整个 /var/lib/docker
树并重新开始(有一个等效的Docker 桌面应用程序中的“重置”按钮)。此路径也会丢失命名卷。在本机 Linux 上,人们普遍观察到实际的命名卷存储只是一个目录,因此您可以保留它。