docker 上的 MariaDB 不断损坏数据

docker 上的 MariaDB 不断损坏数据

我正在使用官方 MariaDBmariadb:10.4.6-bionic镜像,但遇到了一个问题:我的表自身损坏了。这个月至少发生过四次:

  • 在两台不同的开发机器上使用 docker-compose
  • 在 docker swarm 的临时机器上

每次的症状都是信息模式中存在一个表,但根本无法读取或更改。任何操作都会导致“引擎中不存在表”错误。

容器日志在启动时包含此错误:

[ERROR] InnoDB: Table sfdb.specialist contains unrecognizable instant ALTER metadata

我已经检查了服务器系统变量

SHOW VARIABLES;

并且alter_algorithm具有值DEFAULT,这意味着(如果我理解正确该文档的话)它不应该使用算法INSTANT,而应该只使用INPLACECOPYhttps://mariadb.com/kb/en/library/server-system-variables/#alter_algorithm

尝试深入研究 MariaDB 代码库让我进行了以下检查: https://github.com/MariaDB/server/blob/cccfa9dcfe2c161779824c01a84edfa64fc4378a/storage/innobase/btr/btr0cur.cc#L465

但是我对 MariaDB 的内部工作原理了解不够,无法理解到底发生了什么。

我做错了什么?我是否应该设置一些标志或配置以在docker中拥有稳定的数据库?

答案1

有人建议我,在 mariadb 的 jira 上强制设置alter_algorithmCOPY

https://jira.mariadb.org/browse/MDEV-20198?focusedCommentId=133693&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-133693

到目前为止,该问题还没有再次出现。

相关内容