Upgrade MariaDB Community Server from 10.6.X to 10.6.Y

These instructions detail a minor release upgrade with MariaDB Community Server 10.6 on a range of supported Operating Systems.

A minor release upgrade is a change from an earlier release of MariaDB Community Server 10.6 to a later release in the same release series.

For example, it would be a minor release upgrade to upgrade from MariaDB Community Server 10.5.12 to MariaDB Community Server 10.6.4.

Data Backup

Occasionally, issues can be encountered during upgrades. These issues can even potentially corrupt the database's data files, preventing you from easily reverting to the old installation. Therefore, it is generally best to perform a backup prior to upgrading. If an issue is encountered during the upgrade, you can use the backup to restore your MariaDB Server database to the old version. If the upgrade finishes without issue, then the backup can be deleted.

The instructions below show how to perform a backup using MariaDB Backup. For more information about backing up and restoring the database, please see the Recovery Guide.

  1. Take a full backup.

    On MariaDB Community Server 10.4 and later:

    $ sudo mariadb-backup --backup \
          --user=mariabackup_user \
          --password=mariabackup_passwd \
          --target-dir=/data/backup/preupgrade_backup
    

    On MariaDB Community Server 10.3 and earlier:

    $ sudo mariabackup --backup \
          --user=mariabackup_user \
          --password=mariabackup_passwd \
          --target-dir=/data/backup/preupgrade_backup
    

    Confirm successful completion of the backup operation.

  2. The backup must be prepared.

    On MariaDB Community Server 10.4 and later:

    $ sudo mariadb-backup --prepare \
          --target-dir=/data/backup/preupgrade_backup
    

    On MariaDB Community Server 10.3 and earlier:

    $ sudo mariabackup --prepare \
          --target-dir=/data/backup/preupgrade_backup
    

    Confirm successful completion of the prepare operation.

  3. Backups should be tested before they are trusted.

Stop the MariaDB Server Process

Before the new version can be installed, we first need to stop the current MariaDB Server process.

  1. Set the innodb_fast_shutdown system variable to 1:

    SET GLOBAL innodb_fast_shutdown = 1;
    
  2. Use XA RECOVER to confirm that there are no external XA transactions in a prepared state:

    XA RECOVER;
    

    Commit or rollback any open XA transactions before stopping the node for upgrade.

  3. Stop the server process:

    For distributions that use systemd (most supported OSes), you can manage the Server process using the systemctl command:

    $ sudo systemctl stop mariadb
    

Install the New Version

MariaDB Corporation provides package repositories for YUM (RHEL/CentOS), APT (Debian/Ubuntu), and ZYpp (SLES).

Install via YUM (RHEL/CentOS)

  1. Configure the YUM package repository.

    Installable versions of MariaDB Community Server are 10.6, 10.5, 10.4, 10.3, and 10.2. Prefix the version with mariadb- and pass the version string to the --mariadb-server-version flag to mariadb_repo_setup. The following directions reference 10.6.

    To configure YUM package repositories:

    $ sudo yum install wget
    
    $ wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
    
    $ echo "fc84b8954141ed3c59ac7a1adfc8051c93171bae7ba34d7f9aeecd3b148f1527 mariadb_repo_setup" \
        | sha256sum -c -
    
    $ chmod +x mariadb_repo_setup
    
    $ sudo ./mariadb_repo_setup \
       --mariadb-server-version="mariadb-10.6"
    
  2. Update MariaDB Community Server and package dependencies:

    $ sudo yum update "MariaDB-*" "galera*"
    

Install via APT (Debian/Ubuntu)

  1. Configure the APT package repository.

    Installable versions of MariaDB Community Server are 10.6, 10.5, 10.4, 10.3, and 10.2. Prefix the version with mariadb- and pass the version string to the --mariadb-server-version flag to mariadb_repo_setup. The following directions reference 10.6.

    To configure APT package repositories:

    $ sudo apt install wget
    
    $ wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
    
    $ echo "fc84b8954141ed3c59ac7a1adfc8051c93171bae7ba34d7f9aeecd3b148f1527 mariadb_repo_setup" \
        | sha256sum -c -
    
    $ chmod +x mariadb_repo_setup
    
    $ sudo ./mariadb_repo_setup \
       --mariadb-server-version="mariadb-10.6"
    
    $ sudo apt update
    
  2. Update MariaDB Community Server and package dependencies:

    $ sudo apt install --only-upgrade "mariadb-*" "galera*"
    

Install via ZYpp (SLES)

  1. Configure the ZYpp package repository.

    Installable versions of MariaDB Community Server are 10.6, 10.5, 10.4, 10.3, and 10.2. Prefix the version with mariadb- and pass the version string to the --mariadb-server-version flag to mariadb_repo_setup. The following directions reference 10.6.

    To configure ZYpp package repositories:

    $ sudo zypper install wget
    
    $ wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
    
    $ echo "fc84b8954141ed3c59ac7a1adfc8051c93171bae7ba34d7f9aeecd3b148f1527 mariadb_repo_setup" \
        | sha256sum -c -
    
    $ chmod +x mariadb_repo_setup
    
    $ sudo ./mariadb_repo_setup \
       --mariadb-server-version="mariadb-10.6"
    
  2. Update MariaDB Community Server and package dependencies:

    $ sudo zypper update "MariaDB-*"
    

Configuration

For platforms that use YUM or ZYpp as a package manager:

MariaDB Community Server's packages bundle several configuration files:

  • /etc/my.cnf

  • /etc/my.cnf.d/client.cnf

  • /etc/my.cnf.d/mysql-clients.cnf

  • /etc/my.cnf.d/server.cnf

If your version of any of these configuration files contained any custom edits, then the package manager may save your edited version with the .rpmsave extension during the upgrade process. If you want to continue using your version with the custom edits, then you may need to move it back. For example, to move server.cnf back in place:

$ sudo mv /etc/my.cnf.d/server.cnf /etc/my.cnf.d/server.cnf.original
$ sudo mv /etc/my.cnf.d/server.cnf.rpmsave /etc/my.cnf.d/server.cnf

Starting the Server

MariaDB Community Server includes configuration to start, stop, restart, enable/disable on boot, and check the status of the Server using the operating system default process management system.

For distributions that use systemd, you can manage the Server process using the systemctl command:

Operation

Command

Start

sudo systemctl start mariadb

Stop

sudo systemctl stop mariadb

Restart

sudo systemctl restart mariadb

Enable during startup

sudo systemctl enable mariadb

Disable during startup

sudo systemctl disable mariadb

Status

sudo systemctl status mariadb

Upgrading the Data Directory

MariaDB Community Server ships with a utility that can be used to identify and correct compatibility issues in the new version. After you upgrade your Server and start the server process, run this utility to upgrade the data directory.

The utility is called mariadb-upgrade in MariaDB Community Server 10.4 and later:

$ sudo mariadb-upgrade

And the utility is called mysql_upgrade in MariaDB Community Server 10.3 and 10.2):

$ sudo mysql_upgrade

Testing

When MariaDB Community Server is up and running on your system, you should test that it is working and there weren't any issues during startup.

  1. Connect to the server using MariaDB Client using the root@localhost user account.

    MariaDB Client is called mariadb (CS10.5, CS10.4) or mysql (CS10.3, CS10.2):

    $ sudo mariadb
    Welcome to the MariaDB monitor.  Commands end with ; or \g.
    Your MariaDB connection id is 9
    Server version: 10.6.4-MariaDB MariaDB Server
    
    Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    MariaDB [(none)]>
    

    The version of the server can be verified by checking the client's initial output.

  2. You can also verify the server version by checking the value of the version system variable with the SHOW GLOBAL STATUS statement:

    SHOW GLOBAL VARIABLES LIKE 'version';
    
    +---------------+----------------+
    | Variable_name | Value          |
    +---------------+----------------+
    | version       | 10.6.4-MariaDB |
    +---------------+----------------+
    
  3. You can also verify the server version by calling the VERSION() function:

    SELECT VERSION();
    
    +----------------+
    | VERSION()      |
    +----------------+
    | 10.6.4-MariaDB |
    +----------------+