当前位置: 首页 > 知识库问答 >
问题:

Docker设置更改后MariaDB数据丢失吗?

章睿
2023-03-14

我已经设置了一个在Docker中运行的基本MariaDB实例——基本上是从使用Kitematic UI启动容器开始,更改设置,然后让它运行。

今天,我想做一个备份,所以我用Kitematic更改了端口,这样我就可以从机器上访问它来进行自动备份。在Kitematic中更改端口后,它似乎启动了一个新的MariaDB容器(即,我的所有数据似乎都被删除)。

这是预期的行为吗?而且,更重要的是,是否有任何方法可以恢复看似丢失的数据,或者是否已将其完全删除?

此外,如果数据实际上已删除,那么在不丢失所有更改的情况下更改设置(如公开端口)的首选方法是什么<代码>docker提交?

笔记:

  • 运行docker 1.12。OS X的0测试版
  • docker-ps a当原始数据库已运行数天时,将数据库状态显示为“运行X分钟”

提前感谢!

更新:

保留数据(不创建卷或类似文件)的建议步骤如下:

  1. 提交更改(例如,docker提交

...摘自这个答案。


共有2个答案

澹台锐
2023-03-14

看起来您没有将容器卷装载到特定路径中。您可以在此处阅读有关卷和将数据存储到容器中的信息

您需要使用卷选项运行容器

$ docker run --name some-mariadb -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mariadb:tag

其中/my/own/datadir是主机上的目录

桓信鸥
2023-03-14

是的,这是预期的行为。如果您希望数据持久化,您应该从主机(通过--volume选项docker run)或从另一个容器装载卷,并将数据库文件存储在此卷中。

docker run --volume /path/on/your/host/machine:/var/lib/mysql mariadb

丢失更改实际上是容器的核心特征,因此不能省略。这样,您可以确保在每次docker运行之间都可以获得新鲜的环境,而无需进行任何更改。如果您希望您的更改是永久的,您应该在图像的Dockerfile中进行更改,而不是在容器本身中。

有关更多信息,请访问官方文档:https://docs.docker.com/engine/tutorials/dockervolumes/.

 类似资料:
  • 问题内容: 我正在使用SQL数据库,我有一列名为“价格”。创建数据库后,将“价格”列设置为“我”,需要将其类型更改为不丢失数据库中的数据。这应该通过SQL脚本来完成 我想到了创建一个新列,将数据移到其中,删除旧列,然后重命名新创建的列。 有人可以帮我举个例子吗?在SQL中也有一个函数可以将字符串解析为十进制? 谢谢 问题答案: 您无需添加新列两次,只需在更新新列后删除旧列即可: 请注意,如果不是数

  • 我想我可以按照我另一篇文章的建议使用合订本 docker-撰写mariadb外部卷映射问题 但是我知道容器应该是无状态的。所以看来我的想法是错误的? 我不知道会发生什么样的灾难性故障,所以如果容器被封砖,我有可能会丢失所有数据吗?或者有没有办法使用外存恢复? 如何处理这种情况?我有一个管理迁移的模式表,所以不希望该表是新的,并从square 1开始 问题:我应该让云上的Mariadb容器写到它喜欢

  • 我有一个活动,它在onCreate中加载一个片段(比如Fragment1)。当用户按下Fragment1中的按钮时,我用一个新片段替换Fragment1,比如Fragment2。问题是,在Fragment2中更改方向时,会重新创建活动,并显示Fragment1而不是Fragment2。(因为我在onCreate中创建了Fragment1)我如何坚持Fragment2并在方向更改时保持其状态? 谢谢

  • 在MariaDB中,语句用于通过更改表中的值来修改现有字段。 语法: 或者,语句可以与,和子句一起使用。 1. 更新单个列 假设我们有一个表 - ,并具有以下数据记录: 现在,更改列的值为 的行记录,把列的值更新为:。 执行上面更新语句后,查询更新的结果 - 2. 更新多列 还可以使用MariaDB数据库中的语句来更新多个列。 在以下示例中,将更新表中为的两列 - 和的值。参考以下更新语句 - 执

  • 问题内容: 我在QtDesigner中设计了所需的UI后,将QtDesinger用于设计GUI以在python中使用,将其转换为python代码,然后更改了生成的代码以在python代码中执行某些操作,但是如果我使用QtDesigner和再次将其转换为python代码,我之前的代码丢失了。 我该如何解决这个问题? 我们可以在python中的多个文件上散布类以在其他文件中编写代码吗? 问题答案: 最

  • 问题内容: 我正在尝试创建一个表单集来保存记录。但是,提交表格时,我总是收到错误消息。如果可以的话,请告诉我如何保存My记录批次。 Myviews.py: Myforms.py My template:: Mymodels.py 问题答案: 您必须在模板中呈现管理表单。 一些选定的报价: 表单集使用此表单来管理表单集中包含的表单的集合。如果您不提供此管理数据,则会引发异常[。] 管理表单可用作表单