Я использую официальный образ MariaDB mariadb: 10.4.6-bionic
, и у меня проблема: мой таблицы портятся сами. Это происходило как минимум четыре раза в этом месяце:
Каждый раз симптомом является то, что таблица существует в информационной схеме, но может вообще не читается и не изменяется. Любая операция приводит к ошибке «Таблица не существует в движке».
Журналы контейнера содержат эту ошибку при запуске:
[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
.
Пока проблема не возникла снова.