> For the complete documentation index, see [llms.txt](https://mariadb.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mariadb.com/docs/server/server-management/install-and-upgrade-mariadb/upgrading/mariadb-community-server-upgrade-paths/upgrading-to-unmaintained-mariadb-releases/upgrading-from-mariadb-102-to-mariadb-103.md).

# Upgrading from MariaDB 10.2 to MariaDB 10.3

### How to Upgrade

For Windows, see [Upgrading MariaDB on Windows](/docs/server/server-management/install-and-upgrade-mariadb/upgrading/platform-specific-upgrade-guides/upgrading-mariadb-on-windows.md) instead.

For MariaDB Galera Cluster, see [Upgrading with Galera Cluster](/docs/galera-cluster/galera-management/upgrading-galera-cluster.md) 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 [mariadb-backup](/docs/server/server-usage/backup-and-restore/mariadb-backup.md).

The suggested upgrade procedure is:

1. Modify the repository configuration, so the system's package manager installs [MariaDB 10.3](/docs/release-notes/community-server/old-releases/10.3/what-is-mariadb-103.md). For example,

* On Debian, Ubuntu, and other similar Linux distributions, see [Updating the MariaDB APT repository to a New Major Release](/docs/server/server-management/install-and-upgrade-mariadb/installing-mariadb/binary-packages/installing-mariadb-deb-files.md#updating-the-mariadb-apt-repository-to-a-new-major-release) for more information.
* On RHEL, CentOS, Fedora, and other similar Linux distributions, see [Updating the MariaDB YUM repository to a New Major Release](/docs/server/server-management/install-and-upgrade-mariadb/installing-mariadb/binary-packages/rpm/yum.md#updating-the-mariadb-yum-repository-to-a-new-major-release) for more information.
* On SLES, OpenSUSE, and other similar Linux distributions, see [Updating the MariaDB ZYpp repository to a New Major Release](/docs/server/server-management/install-and-upgrade-mariadb/installing-mariadb/binary-packages/rpm/installing-mariadb-with-zypper.md#updating-the-mariadb-zypp-repository-to-a-new-major-release) for more information.

1. [Stop MariaDB](/docs/server/server-management/starting-and-stopping-mariadb/starting-and-stopping-mariadb-automatically.md). The server should be cleanly shut down, with no incomplete transactions remaining. [innodb\_fast\_shutdown](/docs/server/server-usage/storage-engines/innodb/innodb-system-variables.md#innodb_fast_shutdown) must be set to `0` or `1` and [innodb\_force\_recovery](/docs/server/server-usage/storage-engines/innodb/innodb-system-variables.md#innodb_force_recovery) must be less than `3`.
2. 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`

1. Install the new version of MariaDB.

* On Debian, Ubuntu, and other similar Linux distributions, see [Installing MariaDB Packages with APT](/docs/server/server-management/install-and-upgrade-mariadb/installing-mariadb/binary-packages/installing-mariadb-deb-files.md#installing-mariadb-packages-with-apt) for more information.
* On RHEL, CentOS, Fedora, and other similar Linux distributions, see [Installing MariaDB Packages with YUM](/docs/server/server-management/install-and-upgrade-mariadb/installing-mariadb/binary-packages/rpm/yum.md#installing-mariadb-packages-with-yum) for more information.
* On SLES, OpenSUSE, and other similar Linux distributions, see [Installing MariaDB Packages with ZYpp](/docs/server/server-management/install-and-upgrade-mariadb/installing-mariadb/binary-packages/rpm/installing-mariadb-with-zypper.md#installing-mariadb-packages-with-zypp) for more information.

1. Make any desired changes to configuration options in [option files](/docs/server/server-management/install-and-upgrade-mariadb/configuring-mariadb/configuring-mariadb-with-option-files.md), such as `my.cnf`. This includes removing any options that are no longer supported.
2. [Start MariaDB](/docs/server/server-management/starting-and-stopping-mariadb/starting-and-stopping-mariadb-automatically.md).
3. Run [mysql\_upgrade](/docs/server/clients-and-utilities/legacy-clients-and-utilities/mysql_upgrade.md).

* `mysql_upgrade` does two things:
  1. Ensures that the system tables in the `[mysq](../../../../reference/system-tables/the-mysql-database-tables/README.md) l` 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.2 and 10.3

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

#### Options That Have Changed Default Values

| Option                                                                                                                                                                          | Old default value | New default value                 |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- | --------------------------------- |
| [innodb\_flush\_method](/docs/server/server-usage/storage-engines/innodb/innodb-system-variables.md#innodb_flush_method)                                                        | (empty)           | fsync                             |
| [innodb\_spin\_wait\_delay](/docs/server/server-usage/storage-engines/innodb/innodb-system-variables.md#innodb_spin_wait_delay)                                                 | 6                 | 4                                 |
| [performance\_schema\_max\_stage\_classes](/docs/server/reference/system-tables/performance-schema/performance-schema-system-variables.md#performance_schema_max_stage_classes) | 150               | 160                               |
| [plugin\_maturity](/docs/server/server-management/variables-and-modes/server-system-variables.md#plugin_maturity)                                                               | unknown           | One less than the server maturity |

#### Options That Have Been Removed or Renamed

The following options should be removed or renamed if you use them in your [option files](/docs/server/server-management/install-and-upgrade-mariadb/configuring-mariadb/configuring-mariadb-with-option-files.md):

| Option                                                                                                                                                                    | Reason                                                                                                                                                                                                                                                                                                        |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [innodb\_buffer\_pool\_populate](/docs/server/server-usage/storage-engines/innodb/innodb-system-variables.md#innodb_buffer_pool_populate)                                 | Used in XtraDB-only                                                                                                                                                                                                                                                                                           |
| [innodb\_cleaner\_lsn\_age\_factor](/docs/server/server-usage/storage-engines/innodb/innodb-system-variables.md#innodb_cleaner_lsn_age_factor)                            | Used in XtraDB-only                                                                                                                                                                                                                                                                                           |
| [innodb\_corrupt\_table\_action](/docs/server/server-usage/storage-engines/innodb/innodb-system-variables.md#innodb_corrupt_table_action)                                 | Used in XtraDB-only                                                                                                                                                                                                                                                                                           |
| [innodb\_empty\_free\_list\_algorithm](/docs/server/server-usage/storage-engines/innodb/innodb-system-variables.md#innodb_empty_free_list_algorithm)                      | Used in XtraDB-only                                                                                                                                                                                                                                                                                           |
| [innodb\_fake\_changes](/docs/server/server-usage/storage-engines/innodb/innodb-system-variables.md#innodb_fake_changes)                                                  | Used in XtraDB-only                                                                                                                                                                                                                                                                                           |
| [innodb\_file\_format](/docs/server/server-usage/storage-engines/innodb/innodb-system-variables.md#innodb_file_format)                                                    | The [InnoDB file format](/docs/server/server-usage/storage-engines/innodb/innodb-file-format.md) is now Barracuda, and the old Antelope file format is no longer supported.                                                                                                                                   |
| [innodb\_file\_format\_check](/docs/server/server-usage/storage-engines/innodb/innodb-system-variables.md#innodb_file_format_check)                                       | No longer necessary as the Antelope [InnoDB file format](/docs/server/server-usage/storage-engines/innodb/innodb-file-format.md) is no longer supported.                                                                                                                                                      |
| [innodb\_file\_format\_max](/docs/server/server-usage/storage-engines/innodb/innodb-system-variables.md#innodb_file_format_max)                                           | No longer necessary as the Antelope [InnoDB file format](/docs/server/server-usage/storage-engines/innodb/innodb-file-format.md) is no longer supported.                                                                                                                                                      |
| [innodb\_foreground\_preflush](/docs/server/server-usage/storage-engines/innodb/innodb-system-variables.md#innodb_foreground_preflush)                                    | Used in XtraDB-only                                                                                                                                                                                                                                                                                           |
| [innodb\_instrument\_semaphores](/docs/server/server-usage/storage-engines/innodb/innodb-system-variables.md#innodb_instrument_semaphores)                                |                                                                                                                                                                                                                                                                                                               |
| [innodb\_kill\_idle\_transaction](/docs/server/server-usage/storage-engines/innodb/innodb-system-variables.md#innodb_kill_idle_transaction)                               | Used in XtraDB-only                                                                                                                                                                                                                                                                                           |
| [innodb\_large\_prefix](/docs/server/server-usage/storage-engines/innodb/innodb-system-variables.md#innodb_large_prefix)                                                  | Large index key prefixes were made default from [MariaDB 10.2](/docs/release-notes/community-server/old-releases/10.2/what-is-mariadb-102.md), and limiting tables to small prefixes is no longer permitted in [MariaDB 10.3](/docs/release-notes/community-server/old-releases/10.3/what-is-mariadb-103.md). |
| [innodb\_locking\_fake\_changes](/docs/server/server-usage/storage-engines/innodb/innodb-system-variables.md#innodb_locking_fake_changes)                                 | Used in XtraDB-only                                                                                                                                                                                                                                                                                           |
| [innodb\_log\_arch\_dir](/docs/server/server-usage/storage-engines/innodb/innodb-system-variables.md#innodb_log_arch_dir)                                                 | Used in XtraDB-only                                                                                                                                                                                                                                                                                           |
| [innodb\_log\_arch\_expire\_sec](/docs/server/server-usage/storage-engines/innodb/innodb-system-variables.md#innodb_log_arch_expire_sec)                                  | Used in XtraDB-only                                                                                                                                                                                                                                                                                           |
| [innodb\_log\_archive](/docs/server/server-usage/storage-engines/innodb/innodb-system-variables.md#innodb_log_archive)                                                    | Used in XtraDB-only                                                                                                                                                                                                                                                                                           |
| [innodb\_log\_block\_size](/docs/server/server-usage/storage-engines/innodb/innodb-system-variables.md#innodb_log_block_size)                                             | Used in XtraDB-only                                                                                                                                                                                                                                                                                           |
| [innodb\_log\_checksum\_algorithm](/docs/server/server-usage/storage-engines/innodb/innodb-system-variables.md#innodb_log_checksum_algorithm)                             | Translated to [innodb\_log\_checksums](/docs/server/server-usage/storage-engines/innodb/innodb-system-variables.md#innodb_log_checksums) (NONE to OFF, everything else to ON); only existed to allow easier upgrade from earlier XtraDB versions.                                                             |
| [innodb\_mtflush\_threads](/docs/server/server-usage/storage-engines/innodb/innodb-system-variables.md#innodb_mtflush_threads)                                            | Replaced by the [innodb\_page\_cleaners](/docs/server/server-usage/storage-engines/innodb/innodb-system-variables.md#innodb_page_cleaners) system variable.                                                                                                                                                   |
| [innodb\_sched\_priority\_cleaner](/docs/server/server-usage/storage-engines/innodb/innodb-system-variables.md#innodb_sched_priority_cleaner)                             | Used in XtraDB-only                                                                                                                                                                                                                                                                                           |
| [innodb\_show\_locks\_held](/docs/server/server-usage/storage-engines/innodb/innodb-system-variables.md#innodb_show_locks_held)                                           | Used in XtraDB-only                                                                                                                                                                                                                                                                                           |
| [innodb\_show\_verbose\_locks](/docs/server/server-usage/storage-engines/innodb/innodb-system-variables.md#innodb_show_verbose_locks)                                     | Used in XtraDB-only                                                                                                                                                                                                                                                                                           |
| [innodb\_support\_xa](/docs/server/server-usage/storage-engines/innodb/innodb-system-variables.md#innodb_support_xa)                                                      | XA transactions are always supported.                                                                                                                                                                                                                                                                         |
| [innodb\_use\_fallocate](/docs/server/server-usage/storage-engines/innodb/innodb-system-variables.md#innodb_use_fallocate)                                                |                                                                                                                                                                                                                                                                                                               |
| [innodb\_use\_global\_flush\_log\_at\_trx\_commit](/docs/server/server-usage/storage-engines/innodb/innodb-system-variables.md#innodb_use_global_flush_log_at_trx_commit) | Used in XtraDB-only                                                                                                                                                                                                                                                                                           |
| [innodb\_use\_mtflush](/docs/server/server-usage/storage-engines/innodb/innodb-system-variables.md#innodb_use_mtflush)                                                    | Replaced by the [innodb\_page\_cleaners](/docs/server/server-usage/storage-engines/innodb/innodb-system-variables.md#innodb_page_cleaners) system variable.                                                                                                                                                   |
| [innodb\_use\_stacktrace](/docs/server/server-usage/storage-engines/innodb/innodb-system-variables.md#innodb_use_stacktrace)                                              | Used in XtraDB-only                                                                                                                                                                                                                                                                                           |
| [innodb\_use\_trim](/docs/server/server-usage/storage-engines/innodb/innodb-system-variables.md#innodb_use_trim)                                                          |                                                                                                                                                                                                                                                                                                               |

#### Reserved Words

* New [reserved words](/docs/server/reference/sql-structure/sql-language-structure/reserved-words.md): EXCEPT and INTERSECT. These can no longer be used as [identifiers](/docs/server/reference/sql-structure/sql-language-structure/identifier-names.md) without being quoted.

#### SQL\_MODE=ORACLE

* [MariaDB 10.3](/docs/release-notes/community-server/old-releases/10.3/what-is-mariadb-103.md) has introduced major new Oracle compatibility features. If you upgrade and are using this setting, please check the [changes carefully](/docs/release-notes/community-server/old-releases/10.3/what-is-mariadb-103.md).

#### Functions

* As a result of implementing Table Value Constructors, the [VALUES function](/docs/server/reference/sql-functions/secondary-functions/miscellaneous-functions/values-value.md) has been renamed to VALUE().
* Functions that used to only return 64-bit now can return 32-bit results ([MDEV-12619](https://jira.mariadb.org/browse/MDEV-12619)). This could cause incompatibilities with strongly-typed clients.

#### mysqldump

* [mysqldump](/docs/server/clients-and-utilities/legacy-clients-and-utilities/mysqldump.md) in [MariaDB 10.3](/docs/release-notes/community-server/old-releases/10.3/what-is-mariadb-103.md) includes logic to cater for the [mysql.transaction\_registry table](/docs/server/reference/system-tables/the-mysql-database-tables/mysql-transaction_registry-table.md). `mysqldump` from an earlier MariaDB release cannot be used on [MariaDB 10.3](/docs/release-notes/community-server/old-releases/10.3/what-is-mariadb-103.md) and beyond.

#### MariaDB Backup and Percona XtraBackup

* [Percona XtraBackup](/docs/server/clients-and-utilities/legacy-clients-and-utilities/backing-up-and-restoring-databases-percona-xtrabackup/percona-xtrabackup-overview.md) is not compatible with [MariaDB 10.3](/docs/release-notes/community-server/old-releases/10.3/what-is-mariadb-103.md). Installations currently using XtraBackup should upgrade to [MariaDB Backup](/docs/server/server-usage/backup-and-restore/mariadb-backup/mariadb-backup-overview.md) before upgrading to [MariaDB 10.3](/docs/release-notes/community-server/old-releases/10.3/what-is-mariadb-103.md).

#### Privileges

* If a user has the [SUPER privilege](/docs/server/reference/sql-statements/account-management-sql-statements/grant.md) but not the `DELETE HISTORY` privilege, running [mysql\_upgrade](/docs/server/clients-and-utilities/legacy-clients-and-utilities/mysql_upgrade.md) will grant `DELETE HISTORY` as well.

### Major New Features To Consider

You might consider using the following major new features in [MariaDB 10.3](/docs/release-notes/community-server/old-releases/10.3/what-is-mariadb-103.md):

* [System-versioned tables](/docs/server/reference/sql-structure/temporal-tables/system-versioned-tables.md)
* [Sequences](/docs/server/reference/sql-structure/sequences.md)
* See also [System Variables Added in MariaDB 10.3](/docs/server/ha-and-performance/optimization-and-tuning/system-variables/system-and-status-variables-added-by-major-release/system-and-status-variables-added-by-major-unmaintained-release/system-variables-added-in-mariadb-10-3.md).

### See Also

* [The features in MariaDB 10.3](/docs/release-notes/community-server/old-releases/10.3/what-is-mariadb-103.md)
* Upgrading from MariaDB 10.2 to MariaDB 10.3 with Galera Cluster
* [Upgrading from MariaDB 10.1 to MariaDB 10.2](/docs/server/server-management/install-and-upgrade-mariadb/upgrading/mariadb-community-server-upgrade-paths/upgrading-to-unmaintained-mariadb-releases/upgrading-from-mariadb-101-to-mariadb-102.md)
* [Upgrading from MariaDB 10.0 to MariaDB 10.1](/docs/server/server-management/install-and-upgrade-mariadb/upgrading/mariadb-community-server-upgrade-paths/upgrading-to-unmaintained-mariadb-releases/upgrading-from-mariadb-100-to-mariadb-101.md)

<sub>*This page is licensed: CC BY-SA / Gnu FDL*</sub>

{% @marketo/form formId="4316" %}
