web-dev-qa-db-ja.com

DockerのMariaDBがデータを破壊し続ける

私は公式のMariaDBを使用していますmariadb:10.4.6-bionic画像と問題があります。テーブルが壊れています。これは今月少なくとも4回発生しました。

  • docker-composeを使用して2つの異なる開発マシンで
  • docker swarmを使用したステージングマシン上

症状は、情報スキーマにテーブルが存在するが、まったく読み取ったり変更したりできないことです。操作を実行すると、「エンジンにテーブルが存在しません」というエラーが発生します。

コンテナーログには、起動時にこのエラーが含まれます。

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

サーバーのシステム変数を確認しました

SHOW VARIABLES;

そしてalter_algorithmの値はDEFAULTです。これは、(ドキュメントを正しく理解していれば)INSTANTアルゴリズムを使用せず、INPLACECOPYのみを使用することを意味します。 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の内部構造について十分な知識がありません。

何が悪いのですか? dockerで安定したデータベースを使用するには、いくつかのフラグまたは構成を設定する必要がありますか?

3
Nicolas Reynis

誰かがmariadbのjiraで設定を強制するように提案しましたalter_algorithmからCOPYへ。

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

これまでのところ、問題は再発していません。

1
Nicolas Reynis