Merge pull request #164 from linuxserver/mariadb-check-repair

Known Issue: MariaDB Check and Repair
This commit is contained in:
Eric Nemchik 2023-05-29 10:47:11 -05:00 committed by GitHub
commit 884167df0f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -0,0 +1,53 @@
---
title: 'Known Issue: MariaDB Check and Repair'
date: '2023-05-29 12:00:00Z'
severity: notice
resolved: false
affected:
- 'Known Issues'
- 'mariadb'
section: 'issue'
---
There is a known issue with MariaDB when updating the container image to a new version. If a database upgrade is required and user databases are not in a healthy state, then the MariaDB service may fail to start.
MariaDB version updates (ex: `10.6.x` to `10.11.x`) can happen when updating the container image. Upgrading user databases is done manually by running a command.
### Recovery Procedure
If you have recently updated your container image and your container logs show repeating entries of:
```log
Caught SIGTERM signal!
```
- Roll back the container image to a previous tag (ex: `lscr.io/linuxserver/mariadb:10.6.13` assuming this was the version you were running when things were last working)
- Run the check, repair, analyze, and optimize commands, watch for any issues
- Update the container image to the new tag (ex: `lscr.io/linuxserver/mariadb:10.11.3` or `lscr.io/linuxserver/mariadb:latest`)
- Run the upgrade command
This should get MariaDB running again with your user databases in a healthy state.
### Check and Repair
If user databases are not in a healthy state (sometimes caused by a failed upgrade), it may be remedied by running:
```shell
mariadb-check -u root -p<PASSWORD> -c -A # check all databases for errors
mariadb-check -u root -p<PASSWORD> -r -A # repair all databases
mariadb-check -u root -p<PASSWORD> -a -A # analyze all databases
mariadb-check -u root -p<PASSWORD> -o -A # optimize all databases
```
After running the above commands, you may need to run the upgrade command again.
### Upgrading
When this container initializes, if `MYSQL_ROOT_PASSWORD` is set an upgrade check will run. If an upgrade is required the log will indicate the need stop any services that are accessing databases in this container, and then run the command:
```shell
mariadb-upgrade -u root -p<PASSWORD>
```
### Closing Notes
If you are running MariaDB databases in production, we always recommend pinning the container image to a specific version tag, such as `lscr.io/linuxserver/mariadb:10.6.13-r0-ls97`, and planning any upgrades so that you can test and monitor them.