You are here

Upgrading MariaDB to the pre-latest minor release

Scenario: MariaDB Community Server is release every 3 months. The exact date is not known but it is typically about 2 to 3 weeks after the MySQL/Oracle CPU.

We upgrade regularly customer systems, also their MariaDB Galera Cluster systems. Because we made in the past some very bad experience upgrading production MariaDB Galera Clusters short after release date we became a bit more careful. Our new policy is: We wait a few weeks before installing a new release.

This week we had the situation that on Monday a new MariaDB release came out and on Wednesday we had to do the Cluster upgrade. So only 2 days in between. Too short time for my taste. But we did not want to omit the upgrade because it was already more than 6 months since the last upgrade...

So we decided to install the pre-latest MariaDB release. Technically it means: Customer was on 10.6.9, 10.6.12 is out (and already available in the repositories) but we want to upgrade to 10.6.11. Additionally we also wanted to upgrade the O/S (Debian 11). So how to do this quite complex task? In short:

  • Set all MariaDB related packages to hold.
  • Upgrade all other packages including a reboot of the machine.
  • Unhold all MariaDB related packages.
  • Install specific MariaDB packages which are not the newest one.

Set MariaDB related packages to hold

dpkg -l | grep mariadb
ii  libdbd-mariadb-perl       1.21-3                         amd64        Perl5 database interface to the MariaDB/MySQL databases
ii  libmariadb3:amd64         1:10.6.9+maria~deb11           amd64        MariaDB database client library
ii  libmariadb3-compat        1:10.6.9+maria~deb11           amd64        MariaDB database client library MySQL compat package
ii  libmariadbclient18        1:10.6.9+maria~deb11           amd64        Virtual package to satisfy external libmariadbclient18 depends
ii  mariadb-client-10.6       1:10.6.9+maria~deb11           amd64        MariaDB database client binaries
ii  mariadb-client-core-10.6  1:10.6.9+maria~deb11           amd64        MariaDB database core client binaries
ii  mariadb-common            1:10.6.9+maria~deb11           all          MariaDB common configuration files
ii  mariadb-server-10.6       1:10.6.9+maria~deb11           amd64        MariaDB database server binaries
ii  mariadb-server-core-10.6  1:10.6.9+maria~deb11           amd64        MariaDB database core server files

apt-mark hold galera-4 libmariadb3-compat libmariadb3 libmariadbclient18 mariadb-client-10.6 mariadb-client-core-10.6 mariadb-common mariadb-server-10.6 mariadb-server-core-10.6 mysql-common

apt-mark showhold

Upgrade al other O/S dependent packages

apt update

apt list --upgradable
Listing... Done
galera-4/unknown 26.4.14-deb11 amd64 [upgradable from: 26.4.11-0+deb11u1]
libmariadb3-compat/unknown 1:10.6.12+maria~deb11 amd64 [upgradable from: 1:10.6.9+maria~deb11]
libmariadb3/unknown 1:10.6.12+maria~deb11 amd64 [upgradable from: 1:10.6.9+maria~deb11]
libmariadbclient18/unknown 1:10.6.12+maria~deb11 amd64 [upgradable from: 1:10.6.9+maria~deb11]
libssl1.1/stable-security 1.1.1n-0+deb11u4 amd64 [upgradable from: 1.1.1n-0+deb11u3]
mariadb-client-10.6/unknown 1:10.6.12+maria~deb11 amd64 [upgradable from: 1:10.6.9+maria~deb11]
mariadb-client-core-10.6/unknown 1:10.6.12+maria~deb11 amd64 [upgradable from: 1:10.6.9+maria~deb11]
mariadb-common/unknown 1:10.6.12+maria~deb11 all [upgradable from: 1:10.6.9+maria~deb11]
mariadb-server-10.6/unknown 1:10.6.12+maria~deb11 amd64 [upgradable from: 1:10.6.9+maria~deb11]
mariadb-server-core-10.6/unknown 1:10.6.12+maria~deb11 amd64 [upgradable from: 1:10.6.9+maria~deb11]
mysql-common/unknown 1:10.6.12+maria~deb11 all [upgradable from: 5.8+1.0.7]
openssl/stable-security 1.1.1n-0+deb11u4 amd64 [upgradable from: 1.1.1n-0+deb11u3]

apt upgrade
The following packages have been kept back:
  galera-4 libmariadb3 libmariadb3-compat libmariadbclient18 mariadb-client-10.6 mariadb-client-core-10.6 mariadb-common mariadb-server-10.6 mariadb-server-core-10.6 mysql-common
The following packages will be upgraded:
  libssl1.1 openssl
2 upgraded, 0 newly installed, 0 to remove and 10 not upgraded.

cat /var/run/reboot-required
# reboot [-f]

Unhold MariaDB related packages

apt-mark unhold galera-4 libmariadb3-compat libmariadb3 libmariadbclient18 mariadb-client-10.6 mariadb-client-core-10.6 mariadb-common mariadb-server-10.6 mariadb-server-core-10.6 mysql-common

apt-mark showhold

Install specific MariaDB version packages

apt list -a galera-4

apt install galera-4=26.4.13-bullseye libmariadb3-compat=1:10.6.11+maria~deb11 libmariadb3=1:10.6.11+maria~deb11 libmariadbclient18=1:10.6.11+maria~deb11 mariadb-client-10.6=1:10.6.11+maria~deb11 mariadb-client-core-10.6=1:10.6.11+maria~deb11 mariadb-common=1:10.6.11+maria~deb11 mariadb-server-10.6=1:10.6.11+maria~deb11 mariadb-server-core-10.6=1:10.6.11+maria~deb11 mysql-common=1:10.6.11+maria~deb11

# To avoid 2 database restarts we can also do the reboot here
systemctl restart mariadb

mariadb-upgrade --user=root

apt list --upgradable
Listing... Done
galera-4/unknown 26.4.14-deb11 amd64 [upgradable from: 26.4.13-bullseye]
libmariadb3-compat/unknown 1:10.6.12+maria~deb11 amd64 [upgradable from: 1:10.6.11+maria~deb11]
libmariadb3/unknown 1:10.6.12+maria~deb11 amd64 [upgradable from: 1:10.6.11+maria~deb11]
libmariadbclient18/unknown 1:10.6.12+maria~deb11 amd64 [upgradable from: 1:10.6.11+maria~deb11]
mariadb-client-10.6/unknown 1:10.6.12+maria~deb11 amd64 [upgradable from: 1:10.6.11+maria~deb11]
mariadb-client-core-10.6/unknown 1:10.6.12+maria~deb11 amd64 [upgradable from: 1:10.6.11+maria~deb11]
mariadb-common/unknown 1:10.6.12+maria~deb11 all [upgradable from: 1:10.6.11+maria~deb11]
mariadb-server-10.6/unknown 1:10.6.12+maria~deb11 amd64 [upgradable from: 1:10.6.11+maria~deb11]
mariadb-server-core-10.6/unknown 1:10.6.12+maria~deb11 amd64 [upgradable from: 1:10.6.11+maria~deb11]
mysql-common/unknown 1:10.6.12+maria~deb11 all [upgradable from: 1:10.6.11+maria~deb11]

Taxonomy upgrade extras: