This is a read-only copy of the MariaDB Knowledgebase generated on 2024-12-22. For the latest, interactive version please visit https://mariadb.com/kb/.

Upgrading from MariaDB 10.4 to MariaDB 10.5

How to Upgrade

For Windows, see Upgrading MariaDB on Windows instead.

Before you upgrade, it would be best to take a backup of your database. This is always a good idea to do before an upgrade. We would recommend Mariabackup.

The suggested upgrade procedure is:

  1. Modify the repository configuration, so the system's package manager installs MariaDB 10.5. For example,
  2. Stop MariaDB.
  3. Uninstall the old version of MariaDB.
    • On Debian, Ubuntu, and other similar Linux distributions, execute the following:
      sudo apt-get remove mariadb-server
    • On RHEL, CentOS, Fedora, and other similar Linux distributions, execute the following:
      sudo yum remove MariaDB-server
    • On SLES, OpenSUSE, and other similar Linux distributions, execute the following:
      sudo zypper remove MariaDB-server
  4. Install the new version of MariaDB.
  5. Make any desired changes to configuration options in option files, such as my.cnf. This includes removing any options that are no longer supported.
  6. Start MariaDB.
  7. Run mysql_upgrade.
    • mysql_upgrade does two things:
      1. Ensures that the system tables in the mysql database are fully compatible with the new version.
      2. Does a very quick check of all tables and marks them as compatible with the new version of MariaDB .

Incompatible Changes Between 10.4 and 10.5

On most servers upgrading from 10.4 should be painless. However, there are some things that have changed which could affect an upgrade:

Binary name changes

All binaries previously beginning with mysql now begin with mariadb, with symlinks for the corresponding mysql command.

Usually that shouldn't cause any changed behavior, but when starting the MariaDB server via systemd, or via the mysqld_safe script symlink, the server process will now always be started as mariadbd, not mysqld.

So anything looking for the mysqld name in the system process list, like e.g. monitoring solutions, now needs for mariadbd instead when the server / service is not started directly, but via mysqld_safe or as a system service.

GRANT PRIVILEGE changes

A number of statements changed the privileges that they require. The old privileges were historically inappropriately chosen in the upstream. 10.5.2 fixes this problem. Note, these changes are incompatible to previous versions. A number of GRANT commands might be needed after upgrade.

  • SHOW BINLOG EVENTS now requires the BINLOG MONITOR privilege (requred REPLICATION SLAVE prior to 10.5.2).
  • SHOW SLAVE HOSTS now requires the REPLICATION MASTER ADMIN privilege (required REPLICATION SLAVE prior to 10.5.2).
  • SHOW SLAVE STATUS now requires the REPLICATION SLAVE ADMIN or the SUPER privilege (required REPLICATION CLIENT or SUPER prior to 10.5.2).
  • SHOW RELAYLOG EVENTS now requires the REPLICATION SLAVE ADMIN privilege (required REPLICATION SLAVE prior to 10.5.2).

Options That Have Changed Default Values

Options That Have Been Removed or Renamed

The following options should be removed or renamed if you use them in your option files:

OptionReason
innodb_checksumsDeprecated and functionality replaced by innodb_checksum_algorithms in MariaDB 10.0.
innodb_idle_flush_pctHas had no effect since merging InnoDB 5.7 from mysql-5.7.9 (MariaDB 10.2.2).
innodb_locks_unsafe_for_binlogDeprecated in MariaDB 10.0. Use READ COMMITTED transaction isolation level instead.
innodb_rollback_segmentsDeprecated and replaced by innodb_undo_logs in MariaDB 10.0.
innodb_stats_sample_pagesDeprecated in MariaDB 10.0. Use innodb_stats_transient_sample_pages instead.
max_long_data_sizeDeprecated and replaced by max_allowed_packet in MariaDB 5.5.
multi_range_countDeprecated and has had no effect since MariaDB 5.3.
thread_concurrencyDeprecated and has had no effect since MariaDB 5.5.
timed_mutexesDeprecated and has had no effect since MariaDB 5.5.

Deprecated Options

The following options have been deprecated. They have not yet been removed, but will be in a future version, and should ideally no longer be used.

OptionReason
innodb_adaptive_max_sleep_delayNo need for thread throttling any more.
innodb_background_scrub_data_check_intervalProblematic ‘background scrubbing’ code removed.
innodb_background_scrub_data_intervalProblematic ‘background scrubbing’ code removed.
innodb_background_scrub_data_compressedProblematic ‘background scrubbing’ code removed.
innodb_background_scrub_data_uncompressedProblematic ‘background scrubbing’ code removed.
innodb_buffer_pool_instancesHaving more than one buffer pool is no longer necessary.
innodb_commit_concurrencyNo need for thread throttling any more.
innodb_concurrency_ticketsNo need for thread throttling any more.
innodb_log_files_in_groupRedo log was unnecessarily split into multiple files. Limited to 1 from MariaDB 10.5.
innodb_log_optimize_ddlProhibited optimizations.
innodb_page_cleanersHaving more than one page cleaner task no longer necessary.
innodb_replication_delayNo need for thread throttling any more.
innodb_scrub_logNever really worked as intended, redo log format is being redone.
innodb_scrub_log_speedNever really worked as intended, redo log format is being redone.
innodb_thread_concurrencyNo need for thread throttling any more.
innodb_thread_sleep_delayNo need for thread throttling any more.
innodb_undo_logsIt always makes sense to use the maximum number of rollback segments.
large_page_sizeUnused since multiple page size support was added.

Major New Features To Consider

You might consider using the following major new features in MariaDB 10.5:

See Also

Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.