All pages
Powered by GitBook
1 of 4

Loading...

Loading...

Loading...

Loading...

Upgrade Multi-Node MariaDB ColumnStore from 6 to 23.10

Upgrade a multi-node MariaDB ColumnStore cluster from 6 to 23.10, with MaxScale-based replica maintenance mode, controlled service stops, and per-node upgrade steps.

These instructions detail the upgrade from MariaDB ColumnStore 6 to MariaDB ColumnStore 23.10 in a Multi-Node topology on a range of supported Operating Systems.

Set Replicas to Maintenance Mode

This action is performed for each replica server on the MaxScale node.

Prior to upgrading, the replica servers must be set to maintenance mode in MaxScale. The replicas can be set to maintenance mode in MaxScale using . If you are using , the replicas can be set to maintenance mode using the set server command:

maxctrl set server \
   mcs2 \
   maintenance
  • As the first argument, provide the name for the server

  • As the second argument, provide maintenance as the state

This action is performed on the MaxScale node.

Confirm that the replicas are set to maintenance mode in MaxScale using . If you are using , the state of the replicas can be viewed using the command:

If the node is properly in maintenance mode, then the State column will show Maintenance as one of the states.

This action is performed on each replica server.

The system variable must be disabled for this upgrade procedure. If the gtid_strict_mode system variable is enabled in any configuration files, disable it temporarily until the upgrade procedure is complete.

You can check if the gtid_strict_mode system variable is set in a configuration file by executing my_print_defaults command with the mysqld option:

If the gtid_strict_mode system variable is set, you can temporarily disable it by adding # in front of it in the configuration file, so that it will be treated as a comment and ignored:

Prior to upgrading, MariaDB Enterprise ColumnStore must be shutdown.

This action is performed on each ColumnStore node.

Prior to upgrading, several services must be stopped on each ColumnStore node:

  1. Stop the service:

  2. Stop the MariaDB Enterprise ColumnStore service:

  3. Stop the MariaDB Enterprise Server service:

MariaDB Corporation provides package repositories for YUM (RHEL, CentOS, Rocky Linux) and APT (Debian, Ubuntu).

  1. Retrieve your Customer Download Token at and substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

  2. Configure the YUM package repository.

    Enterprise ColumnStore 23.10 is included with MariaDB Enterprise Server 11.4. Pass the version to install using the --mariadb-server-version flag to .

    To configure YUM package repositories:

  1. Retrieve your Customer Download Token at and substitute for CUSTOMER_DOWNLOAD_TOKEN in the following directions.

  2. Configure the APT package repository.

    Enterprise ColumnStore 23.10 is included with MariaDB Enterprise Server 11.4. Pass the version to install using the --mariadb-server-version flag to .

    To configure APT package repositories:

This action is performed on each ColumnStore node.

After upgrading, the MariaDB Enterprise ColumnStore service should be stopped, since it will be controlled by :

CMAPI disables the Enterprise ColumnStore service in a multi-node deployment. The Enterprise ColumnStore service will be started as-needed by the CMAPI service, so it does not need to start automatically upon reboot.

This action is performed on each ColumnStore node.

After upgrading, the service and the MariaDB Enterprise Server service must be started on each ColumnStore node:

  1. Start the CMAPI service:

  2. Start the MariaDB Enterprise Server service:

On the primary server, run to upgrade the data directory with binary logging enabled to update the system tables:

After upgrading, MariaDB Enterprise ColumnStore must be started.

This action is performed on each replica server.

If you temporarily disabled the system variable in the step, it can be re-enabled. If the gtid_strict_mode system variable was temporarily disabled in any configuration files, re-enable it.

This action is performed on each ColumnStore node.

After upgrading, it is recommended to confirm the Enterprise ColumnStore version on each ColumnStore node. Connect to the node using and query the ColumnStore_version status variable with :

This action is performed on each ColumnStore node.

After upgrading, it is recommended to confirm the ES version on each ColumnStore node. Connect to the node using and query the system variable with :

This action is performed for each replica server on the MaxScale node.

After the upgrade, maintenance mode for each replica has been cleared in MaxScale using . If you are using , maintenance mode can be cleared using the clear server command:

  • As the first argument, provide the name for the server

  • As the second argument, provide maintenance as the state

This action is performed for each replica server on the MaxScale node.

Confirm that maintenance mode in MaxScale has been cleared for each replica using . If you are using , the state of the replicas can be viewed using the list servers command:

If the node is no longer in maintenance mode, then the State column will no longer show Maintenance as one of the states.

This page is: Copyright © 2026 MariaDB. All rights reserved.

  • Checksums of the various releases of the mariadb_es_repo_setup script can be found in the section at the bottom of the page. Substitute ${checksum} in the example above with the latest checksum.

  • Update MariaDB Enterprise Server and package dependencies:

    sudo yum update "MariaDB-*" "MariaDB-columnstore-engine" "MariaDB-columnstore-cmapi"
  • Checksums of the various releases of the mariadb_es_repo_setup script can be found in the section at the bottom of the page. Substitute ${checksum} in the example above with the latest checksum.

  • Update MariaDB Enterprise Server and package dependencies.

    The update command depends on the installed APT version, which can be determined by executing the following command:

    apt --version
    apt 2.0.9 (amd64)

    For versions prior to APT 2.0, execute the following command:

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

    For APT 2.0 and later, execute the following command:

    sudo apt install --only-upgrade '?upgradable ?name(mariadb.*)'
  • maxctrl list servers
    ┌────────┬───────────────┬──────┬─────────────┬──────────────────────┬────────┐
    │ Server │ Address       │ Port │ Connections │ State                │ GTID   │
    ├────────┼───────────────┼──────┼─────────────┼──────────────────────┼────────┤
    │ mcs3   │ 192.0.2.3     │ 3306 │ 0           │ Maintenance, Running │ 0-1-17 │
    ├────────┼───────────────┼──────┼─────────────┼──────────────────────┼────────┤
    │ mcs2   │ 192.0.2.2     │ 3306 │ 0           │ Maintenance, Running │ 0-1-17 │
    ├────────┼───────────────┼──────┼─────────────┼──────────────────────┼────────┤
    │ mcs1   │ 192.0.2.1     │ 3306 │ 0           │ Master, Running      │ 0-1-17 │
    └────────┴───────────────┴──────┴─────────────┴──────────────────────┴────────┘
    my_print_defaults --mysqld \
       | grep "gtid[-_]strict[-_]mode"
    --gtid_strict_mode=1
    [mariadb]
    ...
    # temporarily commented out for upgrade
    # gtid_strict_mode=1
    mcs cluster stop
    sudo systemctl stop mariadb-columnstore-cmapi
    sudo systemctl stop mariadb-columnstore
    sudo systemctl stop mariadb
    sudo yum install curl
    curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
    echo "${checksum} mariadb_es_repo_setup" | sha256sum -c -
    chmod +x mariadb_es_repo_setup
    sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
       --mariadb-server-version="11.4"
    sudo apt install curl
    curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
    echo "${checksum}  mariadb_es_repo_setup" sha256sum -c -
    chmod +x mariadb_es_repo_setup
    sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
       --mariadb-server-version="11.4"
    sudo apt update
    sudo systemctl stop mariadb-columnstore
    sudo systemctl disable mariadb-columnstore
    sudo systemctl start mariadb-columnstore-cmapi
    sudo systemctl start mariadb
    mariadb-upgrade --write-binlog
    mcs cluster start
    SHOW GLOBAL STATUS LIKE 'Columnstore_version';
    +---------------------+---------+
    | Variable_name       | Value   |
    +---------------------+---------+
    | Columnstore_version | 23.10.0 |
    +---------------------+---------+
    SHOW GLOBAL VARIABLES LIKE 'version';
    +---------------+----------------------------------+
    | Variable_name | Value                            |
    +---------------+----------------------------------+
    | version       | 10.6.9-5-MariaDB-enterprise-log  |
    +---------------+----------------------------------+
    maxctrl clear server \
       mcs2 \
       maintenance
    maxctrl list servers
    ┌────────┬───────────────┬──────┬─────────────┬─────────────────┬─────────┐
    │ Server │ Address       │ Port │ Connections │ State           │ GTID    │
    ├────────┼───────────────┼──────┼─────────────┼─────────────────┼─────────┤
    │ mcs3   │ 192.0.2.3     │ 3306 │ 0           │ Slave, Running  │ 0-3-159 │
    ├────────┼───────────────┼──────┼─────────────┼─────────────────┼─────────┤
    │ mcs2   │ 192.0.2.2     │ 3306 │ 0           │ Slave, Running  │ 0-1-88  │
    ├────────┼───────────────┼──────┼─────────────┼─────────────────┼─────────┤
    │ mcs1   │ 192.0.2.1     │ 3306 │ 0           │ Master, Running │ 0-1-88  │
    └────────┴───────────────┴──────┴─────────────┴─────────────────┴─────────┘

    Confirm Maintenance Mode is Set for Replicas

    Disable GTID Strict Mode

    Shutdown ColumnStore

    Stop Services

    Upgrade to the New Version

    Upgrade via YUM (RHEL, CentOS, Rocky Linux)

    Upgrade via APT (Debian, Ubuntu)

    Disable ColumnStore Service

    Start Services

    Write Binary Log

    Start ColumnStore

    Enable GTID Strict Mode

    Confirm ColumnStore Version

    Confirm ES Version

    Clear Maintenance Mode for Replicas

    Confirm Maintenance Mode is Cleared for Replicas

    MaxScale's REST API
    MaxCtrl
    list servers
    CMAPI
    https://customers.mariadb.com/downloads/token/
    https://customers.mariadb.com/downloads/token/
    mariadb_es_repo_setup
    CMAPI
    CMAPI
    mariadb-upgrade
    Disable GTID Strict Mode

    Upgrading ColumnStore

    Upgrade procedures for MariaDB ColumnStore, including major-release upgrades and the multi-node upgrade path from Enterprise ColumnStore 6 to 23.10.

    This page is: Copyright © 2026 MariaDB. All rights reserved.

    Upgrade Multi-Node MariaDB ColumnStore from 6 to 23.10
    Major Release Upgrades for MariaDB ColumnStore

    Refined Multi-Node Upgrade Sequencing: 6.x to 23.10

    These instructions detail the comprehensive upgrade path from MariaDB ColumnStore 6 to MariaDB ColumnStore 23.10 in a Multi-Node topology. To ensure a successful upgrade, it is highly critical to execute package updates simultaneously across all nodes and ensure strict CMAPI synchronization.

    1. Pre-Upgrade Preparation

    Before making any modifications, prepare your cluster and secure backups of your current state.

    • Perform Backups: Consider taking a full production backup using bash mcs_backup_manager.sh backup (note that this will lock out writes during the backup). Determine the primary node by running mcs cluster status and take a DBRM backup using bash mcs_backup_manager.sh dbrm_backup -bl <path> -nb before-shutdown-before-upgrade.

    • Save Configurations: On every node, create a timestamped directory and save backups of Columnstore.xml, storagemanager.cnf, cmapi_server.conf, and server.cnf.

    • Set Maintenance Mode: On the MaxScale node, set each replica server to maintenance mode to prevent traffic routing during the upgrade. You can do this using MaxCtrl (e.g., maxctrl set server mcs2 maintenance). Verify this by running maxctrl list servers; the state should reflect Maintenance.

    • Disable GTID Strict Mode: Temporarily disable the gtid_strict_mode system variable on each replica server to reduce the chance of replication issues. Comment out gtid_strict_mode=1 in your configuration files (e.g., /etc/my.cnf.d/server.cnf).

    Services must be completely shut down across the cluster prior to upgrading packages.

    1. Stop Cluster: On the primary node, stop the ColumnStore cluster by executing mcs cluster stop.

    2. Stop Node Services: On every node, stop the MariaDB Enterprise Server, MariaDB ColumnStore, and CMAPI services.

    3. Terminate Orphaned Processes: On every node, forcefully kill any remaining ColumnStore processes if needed. Check for processes like PrimProc, ExeMgr

    1. Configure Package Manager: On every node, configure the package repository using the MariaDB Enterprise Release Helper script. Pass the target version using the --mariadb-server-version="11.4" flag (as Enterprise ColumnStore 23.10 is included with MariaDB Enterprise Server 11.4).

    2. Execute Update: On every node at the same time, execute the package update.

      • For YUM (RHEL/CentOS): sudo yum update "MariaDB-*" "MariaDB-columnstore-engine" "MariaDB-columnstore-cmapi"

    With packages updated, services must be brought back online in a specific order to allow CMAPI to synchronize the cluster state.

    1. Start Services: On every node, start and enable the MariaDB server and CMAPI services.

    2. Verify Status: On the primary node, check the status using mariadb -e "show status like '%Columnstore%';" and mcs cluster status. Ensure all nodes and dbroots are present. (If there are issues, you may need to restore the Columnstore.xmlbacked up earlier and run clearShm ).

    1. Write Binary Log: On the primary server, run mariadb-upgrade --write-binlog to upgrade the data directory with binary logging enabled to update system tables.

    2. Verify Versions: On each node, query SHOW GLOBAL STATUS LIKE 'Columnstore_version'; to confirm the version reads 23.10.0, and SHOW GLOBAL VARIABLES LIKE 'version'; to check the ES version.

    This page is: Copyright © 2026 MariaDB. All rights reserved.

    Major Release Upgrades for MariaDB ColumnStore

    Major-release upgrade procedure for MariaDB ColumnStore (CS 5 to 22.08): full data backup, optional reuse of existing servers, and stage-by-stage migration to the new version.

    This page provides a major release upgrade procedure for MariaDB ColumnStore. A major release upgrade is an upgrade from an older major release to a newer major release, such as an upgrade from MariaDB ColumnStore 5 to MariaDB ColumnStore 22.08.

    Compatibility

    • ColumnStore 5

    • ColumnStore 6

    • ColumnStore 22.08

    This procedure assumes that the new ColumnStore version will be installed onto new servers.

    To reuse existing servers for the new ColumnStore version, you must adapt the procedure detailed below. After step 1, confirm all data has been backed-up and verify backups. The old version of ColumnStore should then be uninstalled, and all ColumnStore files should be deleted before continuing with step 2.

    On the old ColumnStore cluster, perform a full backup.

    MariaDB recommends backing up the table schemas to a single SQL file and backing up the table data to table-specific CSV files.

    1. For each table, obtain the table's schema by executing the SHOW CREATE TABLE :

      Backup the table schemas by copying the output to an SQL file. This procedure assumes that the SQL file is named schema-backup.sql.

    2. For each table, backup the table data to a CSV file using the SELECT .. INTO OUTFILE :

    On the new ColumnStore cluster, follow the deployment instructions of the desired topology for the new ColumnStore version.

    For deployment instructions, see "".

    On the new ColumnStore cluster, restore the table schemas and data.

    1. Restore the schema backup using :

      • HOST and PORT should refer to the following:

        • If you are connecting with MaxScale as a proxy, they should refer to the host and port of the MaxScale listener

    On the new ColumnStore cluster, verify that the table schemas and data have been restored.

    1. For each table, verify the table's definition by executing the SHOW CREATE TABLE statement:

    2. For each table, verify the number of rows in the table by executing SELECT COUNT(*):

    3. For each table, verify the data in the table executing the statement.

    This page is: Copyright © 2026 MariaDB. All rights reserved.

    ,
    DMLProc
    ,
    DDLProc
    ,
    WriteEngineServer
    ,
    StorageManager
    ,
    controllernode
    ,
    workernode
    ,
    load_brm
    , or
    save_brm
    , and execute
    kill -9
    on their PIDs. Stop all individual
    mcs-*
    systemctl services.
  • Final Pre-Upgrade Backup: Take one more DBRM backup on the primary node before proceeding with the installation.

  • .
  • For APT (Debian/Ubuntu, version 2.0+): sudo apt install --only-upgrade '?upgradable ?name(mariadb.*)'.

  • Disable Standalone Service: After the packages are updated, the standalone mariadb-columnstore service must be disabled on each node, as it will now be controlled directly by CMAPI.

  • Start Cluster: On the primary node, start the cluster using mcs cluster start.

    Data Validation: Run data checks (e.g., sudo bash table_checker.sh -c 6 -m 1) and compare output counts from before the upgrade. Confirm replication users are connected via show processlist.

  • Restore Configurations: Re-enable the gtid_strict_mode system variable on each replica server. Restart MariaDB to apply the changes.

  • Clear Maintenance Mode: Finally, on the MaxScale node, clear the maintenance mode for each replica using MaxCtrl (e.g., maxctrl clear server mcs2 maintenance). Confirm the mode is cleared by checking that the state no longer says Maintenance in maxctrl list servers.

  • 2. Coordinated Service Shutdown

    3. Simultaneous Package Upgrades

    To prevent version mismatch issues within the cluster configuration, package updates must be executed at the exact same time across all nodes.

    4. CMAPI Synchronization and Service Startup

    5. Post-Upgrade Finalization

    sudo systemctl stop mariadb-columnstore
    sudo systemctl disable mariadb-columnstore
    sudo systemctl stop mariadb-columnstore-cmapi
    sudo systemctl stop mariadb-columnstore
    sudo systemctl stop mariadb
    sudo systemctl start mariadb-columnstore-cmapi
    sudo systemctl enable mariadb-columnstore-cmapi
    sudo systemctl start mariadb
    sudo systemctl enable mariadb

    Copy the SQL file containing the table schemas and the CSV files containing the table data to the primary node of the new ColumnStore cluster.

  • If you are connecting directly to a multi-node ColumnStore cluster, they should refer to the host and port of the primary ColumnStore node

  • If you are connecting directly to single-node ColumnStore, they should refer to the host and port of the ColumnStore node

  • When the command is executed, mariadb client prompts for the user password

  • For each table, restore the data from the table's CSV file by executing the cpimport utility on the primary ColumnStore node:

    sudo cpimport -s ',' \
       DATABASE_NAME \
       TABLE_NAME \
       /path/to/DATABASE_NAME-TABLE_NAME.csv
  • If the table is very large, you can limit the number of rows in the result set by adding a LIMIT clause:
    SHOW CREATE TABLE DATABASE_NAME.TABLE_NAME\G
    SELECT * INTO OUTFILE '/path/to/DATABASE_NAME-TABLE_NAME.csv'
    FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
    LINES TERMINATED BY '\n'
    FROM DATABASE_NAME.TABLE_NAME;
    mariadb --host HOST --port PORT --user USER --password < schema-backup.sql
    SHOW CREATE TABLE DATABASE_NAME.TABLE_NAME\G
    SELECT COUNT(*) FROM DATABASE_NAME.TABLE_NAME;

    Prerequisites

    Step 1: Backup/Export Schemas and Data

    Step 2: Install New Major Release

    Step 3: Restore/Import Data

    Step 4: Test

    SELECT * FROM DATABASE_NAME.TABLE_NAME LIMIT 100;
    spinner
    spinner
    MaxScale's REST API
    MaxCtrl
    MaxScale's REST API
    MaxCtrl
    MaxScale's REST API
    MaxCtrl
    gtid_strict_mode
    mariadb_es_repo_setup
    gtid_strict_mode
    MariaDB Client
    SHOW GLOBAL STATUS
    MariaDB Client
    version
    SHOW GLOBAL VARIABLES
    Versions
    MariaDB Package Repository Setup and Usage
    Versions
    MariaDB Package Repository Setup and Usage
    statement
    statement
    MariaDB Topologies
    mariadb client
    SELECT