docker-mirakurun-epgstation で mariadb コンテナが不調(Aria recovery failed)

mariadb で Aria recovery failed エラーが発生しました。

# 経緯

docker-mirakurun-epgstation  で動かしていたら、ルートファイルシステムがいっぱいになって起動しなくなり、その後ファイルを整理して起動したらコンテナが不調になりました。


# 環境

以下で構築した環境です。

「PLEX PX-Q3PE4 で docker-mirakurun-epgstation を使いたい」
https://qiita.com/nanbuwks/items/640ee4405e1fdd2ca497



# コンテナの診断docker-mirakurun-epgstation で mariadb コンテナが不調(Aria recovery failed)

ps をすると、 mariadb コンテナがうまく動いていないようです。
```
$ docker ps
CONTAINER ID   IMAGE                                    COMMAND                   CREATED       STATUS                          PORTS                                                                                      NAMES
d4839919bd02   docker-mirakurun-epgstation_epgstation   "npm start"               10 days ago   Up 2 minutes                    0.0.0.0:8888-8889->8888-8889/tcp, :::8888-8889->8888-8889/tcp                              docker-mirakurun-epgstation_epgstation_1
cac7282217a9   mariadb:10.5                             "docker-entrypoint.s…"   10 days ago   Restarting (1) 48 seconds ago                                                                                              docker-mirakurun-epgstation_mysql_1
8e956eab3043   chinachu/mirakurun                       "docker-entrypoint.s…"   10 days ago   Up 2 minutes                    0.0.0.0:9229->9229/tcp, :::9229->9229/tcp, 0.0.0.0:40772->40772/tcp, :::40772->40772/tcp   docker-mirakurun-epgstation_mirakurun_1
```
Restarting になってますね。時間をおいて何度か確認してみましたが、Restarting の無限ループになっているようでした。

docker のログを確認してみます。


```
$ docker logs --tail 50 --follow --timestamps cac7282217a9
2023-10-11T11:54:32.709649182Z 2023-10-11 20:54:32+09:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:10.5.22+maria~ubu2004 started.
2023-10-11T11:54:32.934879047Z 2023-10-11 20:54:32+09:00 [Note] [Entrypoint]: MariaDB upgrade not required
2023-10-11T11:54:32.960010949Z 2023-10-11 20:54:32 0 [Note] Starting MariaDB 10.5.22-MariaDB-1:10.5.22+maria~ubu2004 source revision 7e650253dc488debcb0898ebe6d385bf6dfa3656 as process 1
2023-10-11T11:54:32.985397639Z Cannot find checkpoint record at LSN (1,0x10e7fee)
2023-10-11T11:54:32.985638901Z 2023-10-11 20:54:32 0 [ERROR] mysqld: Aria recovery failed. Please run aria_chk -r on all Aria tables (*.MAI) and delete all aria_log.######## files
2023-10-11T11:54:32.986654179Z 2023-10-11 20:54:32 0 [ERROR] Plugin 'Aria' registration as a STORAGE ENGINE failed.
2023-10-11T11:54:32.986895826Z 2023-10-11 20:54:32 0 [Note] InnoDB: Uses event mutexes
2023-10-11T11:54:32.986903616Z 2023-10-11 20:54:32 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
2023-10-11T11:54:32.987321063Z 2023-10-11 20:54:32 0 [Note] InnoDB: Number of pools: 1
2023-10-11T11:54:32.987410050Z 2023-10-11 20:54:32 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
2023-10-11T11:54:32.987417063Z 2023-10-11 20:54:32 0 [Note] mysqld: O_TMPFILE is not supported on /tmp (disabling future attempts)
2023-10-11T11:54:33.030060914Z 2023-10-11 20:54:33 0 [Note] InnoDB: Using Linux native AIO
2023-10-11T11:54:33.031828597Z 2023-10-11 20:54:33 0 [Note] InnoDB: Initializing buffer pool, total size = 134217728, chunk size = 134217728
2023-10-11T11:54:33.039876965Z 2023-10-11 20:54:33 0 [Note] InnoDB: Completed initialization of buffer pool
2023-10-11T11:54:33.051220474Z 2023-10-11 20:54:33 0 [Note] InnoDB: 128 rollback segments are active.
2023-10-11T11:54:33.053141760Z 2023-10-11 20:54:33 0 [Note] InnoDB: Creating shared tablespace for temporary tables
2023-10-11T11:54:33.053258485Z 2023-10-11 20:54:33 0 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ...
2023-10-11T11:54:33.053280556Z 2023-10-11 20:54:33 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB.
2023-10-11T11:54:33.056885811Z 2023-10-11 20:54:33 0 [Note] InnoDB: 10.5.22 started; log sequence number 149641940; transaction id 17886
2023-10-11T11:54:33.057769701Z 2023-10-11 20:54:33 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
2023-10-11T11:54:33.057799478Z 2023-10-11 20:54:33 0 [Note] Plugin 'FEEDBACK' is disabled.
2023-10-11T11:54:33.057807764Z 2023-10-11 20:54:33 0 [ERROR] Could not open mysql.plugin table: "Unknown storage engine 'Aria'". Some plugins may be not loaded
2023-10-11T11:54:33.057820681Z 2023-10-11 20:54:33 0 [ERROR] Failed to initialize plugins.
2023-10-11T11:54:33.057828002Z 2023-10-11 20:54:33 0 [ERROR] Aborting
2023-10-11T11:55:33.658914935Z 2023-10-11 20:55:33+09:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:10.5.22+maria~ubu2004 started.
2023-10-11T11:55:33.906051557Z 2023-10-11 20:55:33+09:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2023-10-11T11:55:33.914192003Z 2023-10-11 20:55:33+09:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:10.5.22+maria~ubu2004 started.
2023-10-11T11:55:34.159039435Z 2023-10-11 20:55:34+09:00 [Note] [Entrypoint]: MariaDB upgrade not required
2023-10-11T11:55:34.184045205Z 2023-10-11 20:55:34 0 [Note] Starting MariaDB 10.5.22-MariaDB-1:10.5.22+maria~ubu2004 source revision 7e650253dc488debcb0898ebe6d385bf6dfa3656 as process 1
2023-10-11T11:55:34.209412548Z Cannot find checkpoint record at LSN (1,0x10e7fee)
2023-10-11T11:55:34.209752816Z 2023-10-11 20:55:34 0 [ERROR] mysqld: Aria recovery failed. Please run aria_chk -r on all Aria tables (*.MAI) and delete all aria_log.######## files
2023-10-11T11:55:34.210835213Z 2023-10-11 20:55:34 0 [ERROR] Plugin 'Aria' registration as a STORAGE ENGINE failed.
2023-10-11T11:55:34.210921793Z 2023-10-11 20:55:34 0 [Note] InnoDB: Uses event mutexes
2023-10-11T11:55:34.210929227Z 2023-10-11 20:55:34 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
2023-10-11T11:55:34.211360235Z 2023-10-11 20:55:34 0 [Note] InnoDB: Number of pools: 1
2023-10-11T11:55:34.211434182Z 2023-10-11 20:55:34 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
2023-10-11T11:55:34.211440954Z 2023-10-11 20:55:34 0 [Note] mysqld: O_TMPFILE is not supported on /tmp (disabling future attempts)
2023-10-11T11:55:34.245659351Z 2023-10-11 20:55:34 0 [Note] InnoDB: Using Linux native AIO
2023-10-11T11:55:34.246496944Z 2023-10-11 20:55:34 0 [Note] InnoDB: Initializing buffer pool, total size = 134217728, chunk size = 134217728
2023-10-11T11:55:34.250114314Z 2023-10-11 20:55:34 0 [Note] InnoDB: Completed initialization of buffer pool
2023-10-11T11:55:34.255686063Z 2023-10-11 20:55:34 0 [Note] InnoDB: 128 rollback segments are active.
2023-10-11T11:55:34.256433551Z 2023-10-11 20:55:34 0 [Note] InnoDB: Creating shared tablespace for temporary tables
2023-10-11T11:55:34.256448616Z 2023-10-11 20:55:34 0 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ...
2023-10-11T11:55:34.256452720Z 2023-10-11 20:55:34 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB.
2023-10-11T11:55:34.258153234Z 2023-10-11 20:55:34 0 [Note] InnoDB: 10.5.22 started; log sequence number 149641952; transaction id 17886
2023-10-11T11:55:34.258259825Z 2023-10-11 20:55:34 0 [Note] Plugin 'FEEDBACK' is disabled.
2023-10-11T11:55:34.258417494Z 2023-10-11 20:55:34 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
2023-10-11T11:55:34.258532435Z 2023-10-11 20:55:34 0 [ERROR] Could not open mysql.plugin table: "Unknown storage engine 'Aria'". Some plugins may be not loaded
2023-10-11T11:55:34.258630835Z 2023-10-11 20:55:34 0 [ERROR] Failed to initialize plugins.
2023-10-11T11:55:34.258638882Z 2023-10-11 20:55:34 0 [ERROR] Aborting
```
`Please run aria_chk -r on all Aria tables (*.MAI) and delete all` となってますね。ログインして作業が必要ぽいです。

# コンテナにログオン

ログインしようとして exec コマンドを使ってみましたが restarting ということでログインできませんでした。そりゃそうか。

```
$ docker-compose exec mysql bash
Error response from daemon: Container cac7282217a91720056da651ee5e585714e2a9a3c2097971453d6e184a3c316b is restarting, wait until the container is running


```
run コマンドを使ってみます。
```
$ docker-compose run mysql bash
Creating docker-mirakurun-epgstation_mysql_run ... done
root@c6748a85e8bd:/#
```
入れました。

# mariadb の復旧

さて、mysql ( mariadb ) のデータファイルはどこかな?
```
root@c6748a85e8bd:/etc/mysql/mariadb.conf.d# grep dir *
50-server.cnf:basedir                 = /usr
50-server.cnf:#datadir                 = /var/lib/mysql
50-server.cnf:#tmpdir                  = /tmp
```
`/var/lib/mysql` を確認します。


```
root@c6748a85e8bd:/var/lib/mysql# ls -alh
total 189M
drwxr-xr-x 5 mysql mysql 4.0K Oct 11 21:05 .
drwxr-xr-x 1 root  root  4.0K Aug 15 10:22 ..
-rw------- 1 mysql mysql  131 Oct  1 01:52 .my-healthcheck.cnf
-rw-rw---- 1 mysql mysql  17M Oct 11 21:05 aria_log.00000001
-rw-rw---- 1 mysql mysql   52 Oct 11 20:22 aria_log_control
drwx------ 2 mysql mysql 4.0K Oct  1 01:52 epgstation
-rw-rw---- 1 mysql mysql 1.6K Oct 11 21:05 ib_buffer_pool
-rw-rw---- 1 mysql mysql  96M Oct 11 21:05 ib_logfile0
-rw-rw---- 1 mysql mysql  76M Oct 11 21:05 ibdata1
-rw-rw---- 1 mysql mysql    0 Oct  1 01:52 multi-master.info
drwx------ 2 mysql mysql 4.0K Oct  1 01:52 mysql
-rw-r--r-- 1 mysql mysql   15 Oct  1 01:52 mysql_upgrade_info
drwx------ 2 mysql mysql 4.0K Oct  1 01:52 performance_schema
```
aria_log ファイルがありました。中になにか書いてあるかな・・・

```
root@c6748a85e8bd:/var/lib/mysql# cat aria_log_control 
��
  ��	_�B� |r�(.���Q

```
```
root@c6748a85e8bd:/var/lib/mysql# head aria_log.00000001 
��
  MARIALOG%^�'���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
.
.
.
```
バイナリですね。ちょっとわかりませんでした。

aria_chk を実行してみましたが・・・
```
root@c6748a85e8bd:/var/lib/mysql# aria_chk -r
aria_chk  Ver 1.3 for debian-linux-gnu on x86_64
By Monty, for your professional use
This software comes with NO WARRANTY: see the PUBLIC for details.

Description, check and repair of Aria tables.
Used without options all tables on the command will be checked for errors
Usage: aria_chk [OPTIONS] tables[.MAI]

Global options:
  -H, --HELP          Print all argument options sorted alphabetically.
  -?, --help          Print all options by groups
  --datadir=path      Path for control file (and logs if --logdir not used)
  --logdir=path       Path for log files
  --ignore-control-file  Don't open the control file. Only use this if you
.
.
.
```
テーブルを指定しないといけないということで、ちょっとよくわかりませんでした。


# aria ログファイルを削除

「MariaDB で Aria recovery failed. エラーが出た時の対応記録 / Twin Turbo Computing」
https://tt-computing.com/mariadb-aria-recovery-failed

を見習って、さくっと aria ログファイルを削除で対応することにしました。

```
root@c6748a85e8bd:/var/lib/mysql# rm aria*
```

動きました

```
$ docker ps
CONTAINER ID   IMAGE                                    COMMAND                   CREATED       STATUS          PORTS                                                                                      NAMES
d4839919bd02   docker-mirakurun-epgstation_epgstation   "npm start"               10 days ago   Up 14 minutes   0.0.0.0:8888-8889->8888-8889/tcp, :::8888-8889->8888-8889/tcp                              docker-mirakurun-epgstation_epgstation_1
cac7282217a9   mariadb:10.5                             "docker-entrypoint.s…"   10 days ago   Up 4 seconds    3306/tcp                                                                                   docker-mirakurun-epgstation_mysql_1
8e956eab3043   chinachu/mirakurun                       "docker-entrypoint.s…"   10 days ago   Up 14 minutes   0.0.0.0:9229->9229/tcp, :::9229->9229/tcp, 0.0.0.0:40772->40772/tcp, :::40772->40772/tcp   docker-mirakurun-epgstation_mirakurun_1
```