Я использую официальный MariaDB mariadb:10.4.6-bionic
image, и у меня проблема: мои таблицы портятся сами. Это происходило как минимум четыре раза в этом месяце:
Каждый раз симптом состоит в том, что таблица существует в информационной схеме, но ее невозможно прочитать или изменить. Любая операция приводит к ошибке «Таблица не существует в движке».
Журналы контейнера содержат эту ошибку при запуске:
[ERROR] InnoDB: Table sfdb.specialist contains unrecognizable instant ALTER metadata
Я проверил системные переменные сервера с помощью
SHOW VARIABLES;
И alter_algorithm
имеет ценность DEFAULT
что означает (если я правильно понимаю документацию), что он не должен использовать INSTANT
алгоритм, только INPLACE
и COPY
. https://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, чтобы понять, что происходит.
Что я делаю не так? Должен ли я установить какой-либо флаг или конфигурацию, чтобы иметь стабильную базу данных в докере?
Кто-то предложил мне на jira mariadb принудительно установить alter_algorithm
к COPY
.
Пока проблема не возникла.