Upgrading ClickHouse versions more than a year old

A ClickHouse cluster more than a year behind is outside the supported version list and carries accumulated breaking changes. This page explains how to choose an intermediate path or a downtime upgrade and what the work requires.

On this page

Why a ClickHouse upgrade more than a year old needs a plan

A self-managed ClickHouse cluster that is more than a year behind is most likely running a version outside the supported list, so the upgrade is a planned multi-step path, not a single package change. The ClickHouse security policy currently lists 26.9, 26.8, 26.7 and 26.3 as supported with security updates, and every other version is unsupported. Any cluster on an older line has no security fixes until it moves onto a supported release, which makes the first task confirming exactly which version each node runs, including Keeper and any ClickHouse Keeper hosts that may have been upgraded separately or not at all.

The release cadence explains why the gap grows quickly. According to the ClickHouse production FAQ, stable releases ship roughly monthly, with the three latest stable releases receiving diagnostics and bug fix backports. LTS releases ship twice a year and are supported for a year after release. A cluster that skipped several stable lines and several LTS lines therefore faces many accumulated changes, and the production FAQ's advice is to read the changelog before each upgrade because minor backward-incompatible changes can occur. Your team should pull the changelog for every release between the current version and the target, and list the settings, query behaviors and table engine changes that affect your workloads.

Testing is where most of the risk sits. The production FAQ recommends a pre-production environment with representative data and queries, and that recommendation carries more weight after a long gap. Build a test cluster from a copy of your schema, a sample of recent data and the actual dashboard and ingestion queries, then run the upgrade path there first. Confirm with your vendor or your own environment which intermediate versions your cluster can pass through, and agree on a rollback and backup point before production work starts.

Which breaking changes accumulate across a year of releases

This table lists the categories of change that build up when a ClickHouse cluster skips several releases, with the impact of each and the action to take. Use it as a checklist against every changelog between your current version and your target, since minor releases can contain backward-incompatible changes. The main takeaway is that the mandatory analyzer in 26.9 is only one item, and the rest are found by reading each release, not by assuming a newer line is safe.

Change categoryImpact on an outdated clusterAction needed
Mandatory analyzer in 26.9The old query analysis is removed, so queries that relied on it may fail or return different results on 26.9 and later.Test representative queries on 26.x first. See the sibling page on preparing for the mandatory analyzer.
Minor backward-incompatible changesThe production FAQ notes these can occur between releases, including minor ones, so a jump across many releases accumulates them.Read every changelog from your current version to the target, not only the latest one.
Changed default settingsApplications that depend on old defaults may change behavior after the server upgrade.Compare settings defaults across the range and decide whether to pin them. See the sibling page on the compatibility setting.
Unsupported source versionThe security policy lists 26.9, 26.8, 26.7 and 26.3 as supported. Older lines receive no security updates.Confirm your version against the supported list and plan a route into a supported line.
LTS line changesLTS releases (v26.8.29.10-lts and v26.3.53.4-lts, published October 16, 2026) follow their own line, which can differ from the stable track.Choose the target line deliberately and confirm which intermediate releases you must pass through.
Keeper and replication behaviorReplica and Keeper compatibility can shift across versions, which matters when nodes run mixed releases during a rolling upgrade.Confirm Keeper upgrade requirements for your target and see the sibling page on upgrading Keeper.
Feature use that blocks downgradeUsing newer features in data or settings can make returning to an older release impossible.Take a tested backup before upgrading and confirm the rollback path for your target.

Choosing intermediate versions or a downtime upgrade

The first decision in a jump of more than a year is whether to step through intermediate releases or move directly to a supported line. The target should be a version on the security policy's supported list, which currently names 26.9, 26.8, 26.7 and 26.3. Any cluster still on a version outside that list receives no security updates, so staying on it while you plan is a risk in its own right. Use the ClickHouse security policy as the reference for which lines are current on the day you start, because the list changes as new releases ship.

Whether a direct jump is workable depends on three things: your current version, your cluster topology and how much mixed-version operation you can tolerate. A single replica group with a Keeper ensemble and a clear rollback point is a different problem from a multi-shard cluster with Distributed tables that must stay queryable during the change. Read the release notes for every version between your current release and the target, and confirm with ClickHouse which direct jumps they support. Do not assume a compatibility window length from memory or from another team's experience. If the notes do not state a supported jump, treat the step as unsupported until your own pre-production test proves otherwise.

A downtime upgrade is the safer option when the cluster cannot run mixed versions for the time a staged path would take, when the jump crosses several releases with breaking changes that touch your queries, or when your topology is a single node where a rolling sequence adds risk without adding availability. Plan the window with a tested backup and a restore check in place, and write down the condition that ends the window. For a replicated cluster that can run both versions safely, a rolling path usually keeps queries available, but it multiplies the number of checks you run at each step.

What to prepare before touching a production replica

Preparation decides whether an upgrade across more than a year of releases is reversible and verifiable. The four cards below cover the recovery point, the proof that it restores, the inventory of what the new version must still serve, and the cluster health you should confirm before any replica is touched.

Take a verified backup first

Run BACKUP to local disk, S3-compatible storage or Azure Blob Storage before the first change, and keep it outside the cluster that is being upgraded. Replication does not protect against human error or corruption, so a replicated copy of a bad delete is still a bad delete. Record the backup name, its location, the tables and databases it covers, and who can start a restore.

Rehearse the restore on a spare cluster

A backup that has never been test-restored will probably not restore when you need it. Restore the backup onto a spare cluster built from the current version, then check row counts, checksums on key tables and that replicated tables come back with their Keeper paths intact. Time the restore so you know how long recovery would take if the upgrade fails.

Inventory queries, profiles and authentication

List the queries your applications and dashboards run, the settings profiles, quotas and row policies in use, and the configuration files you have customized. Include every external authenticator in use, whether LDAP, Kerberos, X.509 certificates, the HTTP authenticator or JWT. Older releases may behave differently with these, so confirm each item against the changelog for every version you cross.

Build a pre-production copy

Stand up a pre-production environment on the target version with representative data volumes and your real query set. Run the inventory queries against it and compare results with production, paying attention to aggregation, HAVING clauses, JOINs and aliases. Problems found here cost far less than problems found on a live replica.

Check Keeper health before starting

Confirm that the ClickHouse Keeper ensemble has at least three nodes, that it has a quorum and that each node reports healthy. Check that no replica is already lagging or read-only, and that the replication queue is draining. Do not start a replica restart while the ensemble is degraded, because a second failure during a mixed-version window leaves little room to recover.

The upgrade sequence with checks and rollback points

This sequence moves a cluster that is more than a year behind to a supported version in controlled stages, with a verified backup and a tested copy at each decision point. Each stage has a check that must pass before the next one starts, so the team knows where it can still roll back.

  1. Confirm current and target versions

    Record the running ClickHouse version on every server and Keeper node, then check it against the supported version list in the ClickHouse security policy. Choose a target from the supported lines, and decide whether to step through intermediate releases or use a downtime upgrade. Read the changelog for every release between the current and target versions, listing breaking changes that touch your queries, settings and table engines. The output is a written version path and an inventory of breaking changes signed off by the platform owner.

  2. Take and test-restore backups

    Take a full backup of every database and table with BACKUP to storage that is separate from the cluster, and record the backup identifiers and checksums. Restore the backup to a spare cluster and run row counts and sample queries against the restored data. A backup that has never been restored is not yet a rollback point, so this restore test is required before any production change. The output is a successful restore report that the team can cite if rollback is needed.

  3. Upgrade a pre-production copy

    Build a pre-production cluster from the restored backup, running the same topology as production where possible, and upgrade it to the target version. Run representative queries, inserts, materialized views and scheduled jobs, and compare results and timings with production output. Pay particular attention to queries affected by the analyzer, aliases and HAVING clauses. The output is a list of failing queries with fixes applied, and a sign-off that the application team has tested the target version.

  4. Plan Keeper and server order

    Decide the upgrade order before touching production: ClickHouse Keeper nodes are upgraded separately and must keep quorum throughout, and server replicas are upgraded one shard and one replica at a time. Confirm that every ReplicatedMergeTree table has healthy replicas and that the Keeper ensemble has a leader and an in-sync quorum. The output is a written runbook with the node order, the health checks between nodes and the named person who can halt the process.

  5. Upgrade one replica at a time

    Stop one replica, upgrade its binary or package, start it and wait for it to rejoin. A recovered replica automatically syncs missing data from a healthy replica without manual intervention, so the check is that replication queues drain and the replica reports the expected version and no readonly tables. Do not move to the next node until the current node passes these checks and the cluster serves reads and writes as before. The output is a per-node record of version, replication status and time to convergence.

  6. Run post-upgrade query and replication checks

    After every node runs the target version, run the query suite from the pre-production stage against production, compare results with the backup baseline, and check replication lag, Keeper health and error logs across all replicas. Confirm that no tables are left in read-only mode and that scheduled inserts succeed. The output is a signed post-upgrade report covering query results, replication state and any open issues.

  7. Decide rollback points and their limits

    Mark the rollback points explicitly. Before the first node is upgraded, the rollback point is the verified backup and the untouched old binaries, and rollback is a restore or a binary reversal. Once the cluster has run on the new version, a downgrade is generally not available if the new version wrote data in formats or used features the old version cannot read, so confirm this in the release notes for each step. Once new features such as new table settings or new data types are used, the rollback point moves to the verified backup alone. The output is a rollback table listing each stage, what can be reversed, and who authorizes each reversal.

Risks of mixed versions beyond the compatibility window

A cluster that runs different ClickHouse versions on its replicas for longer than planned is the state most likely to turn a routine upgrade into an incident. Replicated tables keep working across a mixed fleet only within the compatibility behavior that the release notes describe for that specific jump, so the danger is not a single broken query but an accumulating set of unknowns: replication formats that one side writes and the other reads differently, settings whose defaults changed between the two versions, and behavior that differs on the newer node only. The longer the mixed state lasts, the more of your traffic lands on code paths you have not validated together. Treat the window as a budget you set in advance, with a named owner and a date by which every replica must be on the target version.

The larger risk for a cluster more than a year behind is the multi-step path itself. Each intermediate release you install is a version you must be able to point to in the ClickHouse security policy, which lists the versions that still receive security updates. If the route passes through a line that falls off that list while you are partway through, you may be running a version that no longer gets fixes at the moment you need them. Before you schedule any step, check the supported list on the day of the change, confirm the release you are moving to is listed, and record the version of every node in a spreadsheet or inventory so the state of the fleet is never a guess.

Confirm mixed-version behavior for your exact source and target releases in the changelog and release notes before you assume a rolling step is safe. Look for statements about replication protocol changes, default setting changes, removed or renamed features, and anything that says a node must be upgraded before others. Where the notes are silent, do not infer compatibility from the fact that the upgrade ran in a test environment, because mixed-version traffic only appears when real replicas and real queries overlap. Shorten the window by batching replicas into a single change plan, by keeping the Keeper and server steps in the same sequence, and by stopping the rollout immediately if replicas disagree on row counts or checksums after the first node moves. A rollback decision point should be defined before the first replica is touched.

What makes an outdated ClickHouse upgrade take longer

How does the number of versions between current and target affect upgrade effort?

Each version skipped adds release notes to read, breaking changes to test and possibly an intermediate step to plan. ClickHouse ships stable releases roughly monthly and LTS releases twice a year, so a cluster that has fallen behind may cross several LTS lines before it reaches a supported version. The production FAQ asks operators to read the changelog before upgrading because minor backward-incompatible changes can occur. The work grows with the number of changelogs your team or partner must review, and with how many of those changes touch queries, settings or table definitions your workloads use. Ask for the exact path, including any intermediate versions, before agreeing on scope. Check the current supported list in the ClickHouse security policy when you decide the target.

Do more shards and replicas make an outdated ClickHouse upgrade slower?

Yes, because every node must be upgraded, verified and returned to service, and the order matters. The number of shards and replicas sets how many rolling steps the upgrade needs and how much time each step adds for checks. Replicated tables depend on ClickHouse Keeper coordination, so you must confirm that replicas catch up before moving to the next one. The replication guide describes how a recovered replica syncs missing data from a healthy one, which keeps the process manageable, but the sync still has to finish. Mixed versions during the rolling window also need testing. Ask for a per-node runbook, the sequence of shards and replicas, and how Keeper is handled.

How do data volume and backup restore time change the upgrade plan?

Data volume decides how long a safety backup takes, how long a restore test takes and how long a rollback would take if it is needed. The ClickHouse backup documentation supports full and incremental backups to local disk, S3-compatible storage or Azure Blob Storage, and it warns that a backup never test-restored will probably not restore properly. Before a major jump, you need a verified full backup and a restore into a spare cluster that is measured against your recovery expectations. Larger datasets lengthen both steps and raise storage and transfer needs. Ask whether the plan includes a timed restore test, where the backups are stored and who approves the rollback point.

Which custom queries and settings are most likely to break after the analyzer change?

Queries that depend on behavior the old query analysis allowed are the main risk, especially those using HAVING, JOIN and aliases in ways the new analyzer handles differently. Dashboards, scheduled reports, materialized views and application SQL all need review, because each can fail silently or return different results. Custom settings and profiles that were pinned to older defaults also need checking. Your engineers should inventory the query sources, run them against a representative copy of the data and compare results. The more bespoke SQL you have, the longer this takes. Ask the partner for the query inventory method and the comparison approach before scope is fixed.

How do external authenticators and access control settings add effort?

They add effort because each authentication path must keep working through the upgrade and be re-tested afterward. ClickHouse supports LDAP, Kerberos, SSL X.509 certificates, an HTTP authenticator and JWT authentication as external authenticators, and access control covers users, roles, row policies, settings profiles and quotas. The more of these you run, the more login paths, role grants and policies you must verify on the new version. Older clusters often still have a default user with broad permissions, which the access control documentation recommends restricting. Plan to test each client and service account and to review grants before and after the change.

How do Kafka and PostgreSQL integrations affect the upgrade?

Each integration is a separate system that must be tested against the new server, and each can have its own compatibility limits. Kafka-fed tables and PostgreSQL-connected tables rely on engine behavior and connection settings that may change between releases. Ingestion pipelines can also back up during a rolling upgrade, so you need to measure lag and confirm that consumers resume cleanly. The number of connected systems, their owners and their change windows set the coordination work. Ask for an integration test list, a lag check after each step and a named owner for each upstream or downstream system.

How do availability requirements change the way an outdated cluster is upgraded?

Stricter availability requirements push the work toward rolling upgrades with replicas, longer validation windows and more rehearsal. A downtime upgrade is simpler to execute but needs an agreed maintenance window that your business accepts. A rolling approach keeps the service up but requires mixed-version operation, which must stay within what ClickHouse documents as supported. Teams must also decide how long they will tolerate reduced redundancy and who can stop the rollout. Ask the partner to state which option fits your recovery and uptime targets, how many rehearsals are planned and what the stop criteria are.

How much does it cost to upgrade ClickHouse, and can our team do it?

What drives the cost of upgrading a ClickHouse cluster that is more than a year old?

The main driver is how far the cluster has fallen behind and how much of your query and ingestion code depends on behavior that changed in between. A cluster that is one or two supported lines behind usually needs less analysis than one that skipped several LTS releases, because every skipped release adds changelog review, compatibility testing and possible rewrites. Other cost factors include the number of shards and replicas, the number of tables and materialized views, how many applications query the cluster, whether Keeper also needs work, and how much pre-production capacity you must build. Ask any partner to split the quote into discovery, testing, the upgrade runs and post-upgrade checks, so you can see which part grows with your environment.

How long does a ClickHouse upgrade across several versions take?

No duration can be stated here without knowing your topology and workload, so treat any single number with caution. The timeline is set by the number of intermediate versions you must visit, the time needed to test representative queries and ingestion on a pre-production cluster, and the change windows your business allows for each replica group. Breaking changes that require query rewrites add time before the first production run. Confirm with the vendor's current release notes which versions are still supported, since the security policy lists which lines receive security updates, and build the plan around that list rather than an assumed path.

What does our team need to provide for an upgrade engagement?

Expect to provide a few things before any work starts. You need administrative access to the cluster hosts, the ClickHouse Keeper ensemble, your configuration management and the monitoring stack. You need a pre-production environment and a copy of representative data and queries, because the production FAQ recommends testing on both before upgrading. You also need named owners for the data platform, the applications that query ClickHouse, and the security or compliance function, plus agreed change windows and an escalation contact who can approve a rollback. Without a current backup and a tested restore path, the upgrade plan is incomplete, so confirm those early.

Can an internal team upgrade a long-outdated ClickHouse cluster on its own?

Often yes, if the team has Linux administration experience, has run ReplicatedMergeTree clusters before and can dedicate time to reading changelogs and testing queries. The hardest part is usually not the binary swap but the accumulated breaking changes, particularly around query analysis, and the need to prove that results match before production. Teams that lack a pre-production cluster, have no restore test history or have many undocumented queries tend to struggle. A useful self-check is whether you can name every application that queries the cluster and reproduce its queries on a copy. If you cannot, a partner can help with discovery and testing while your team keeps operational control.

What should we ask for in a fixed-scope quote for a ClickHouse upgrade?

Ask for the scope in writing before work starts, covering the starting and target versions, the intermediate releases included, and the list of clusters, shards, replicas and Keeper nodes in scope. The quote should name the deliverables, such as an inventory of breaking changes, a test report on representative queries, a runbook for rolling upgrades, a rollback plan and post-upgrade verification steps. Ask which items are one-time and which recur, such as retainer support after the upgrade. Confirm what is excluded, including application code changes, hardware, cloud accounts and licensing. Ask how the timeline depends on your change windows and on client-side testing. DeployOpen agrees scope, deliverables and timelines in writing before work starts, and quotes follow from that written scope.

What happens if we need to roll back a ClickHouse upgrade?

Rollback depends on what the new version has written to disk and whether the cluster now uses features the older binary cannot read. Downgrades are not always possible once new features are in use, so the rollback plan has to be decided before the upgrade starts. Take a backup with BACKUP before each step, and test that the backup restores on a spare cluster, since the backup documentation warns that an untested backup will probably not restore when needed. Replication alone does not protect against human error or corruption. Agree in advance who can approve a rollback, what triggers it, and how long your service can tolerate it. A dedicated rollback planning engagement can cover this in more depth.

Does a partner handle ClickHouse compliance evidence for the upgrade?

A partner can document the upgrade steps, change records, test results and post-upgrade configuration so your compliance team has evidence to review. DeployOpen prepares systems, controls and evidence for compliance assessments but does not issue audit reports, attestations or certifications, so independent auditors or certification bodies make those determinations. Confirm with your assessor which records they expect, such as change approvals, access changes for the upgrade period and restore test results, and include producing them in the written scope.

Official ClickHouse sources to read before planning

Start with the ClickHouse production FAQ on choosing a version before you pick any target release. It recommends stable releases for most production use, a pre-production environment with representative data and queries, and reading the changelog before every upgrade because minor backward-incompatible changes can occur. For a cluster more than a year behind, that changelog reading is the bulk of the planning work, since every release between your current version and the target can carry a change that breaks a query or setting. Confirm with your own team which version line your applications were last tested against, and record it before anything else changes.

Next, check the ClickHouse security policy and the ClickHouse releases page. The security policy lists the versions that currently receive security updates, and at the time of the supplied facts those were 26.9, 26.8, 26.7 and 26.3, with all other versions unsupported. If your cluster sits on an unlisted line, you are already running without security fixes, which raises the urgency of the upgrade. The releases page shows the latest stable build and the current LTS lines, so you can decide whether to jump to an LTS release or to a newer stable release. Confirm the exact versions on the day you plan, because the list changes as new releases ship.

Finally, read the ClickHouse backup documentation and the ClickHouse access control documentation before the change window opens. The backup guide warns that a backup never test-restored will probably not restore properly, so schedule a restore onto a spare cluster as a gate before the first production node is touched. The access control guide covers users, roles, row policies, settings profiles and quotas, and it recommends restricting the default user. Upgrades can change how privileges and profiles behave, so export and review your current access definitions alongside the backup.

How DeployOpen scopes and delivers a ClickHouse upgrade

DeployOpen plans, implements, documents and supports self-hosted open-source platforms inside the client's own infrastructure, including self-managed ClickHouse. For an upgrade that spans more than a year, we start by establishing the current version, the cluster topology and the path forward, then agree the scope in writing before any change is made to production.

How we scope

  • Inventory the current ClickHouse version, replicas, Keeper ensemble and tables that rely on older defaults.
  • Map the changelog entries between your current release and the target, flagging breaking changes that touch your queries.
  • Agree in writing whether the path uses intermediate releases or a planned downtime window, with deliverables and timelines fixed in the scope.

How we build

  • Reproduce production schemas and representative queries in a pre-production cluster before the first upgrade step.
  • Test each intermediate version against your application queries, including the analyzer behavior your workloads depend on.
  • Prepare a rollback plan with verified backups taken before each step, and confirm restores on a spare cluster.

How we hand over

  • Deliver a runbook covering replica order, health checks between steps, and the criteria for pausing or reverting.
  • Document each breaking change found, the query or setting affected, and the change made or accepted.
  • Walk your operators through post-upgrade checks, including replication status, Keeper health and version consistency across nodes.

How we support

  • Engagements are fixed-scope, and the written scope defines what is covered and what is handed back to your team.
  • Ongoing support, upgrades and continuous testing are available as a retainer for clusters that need regular maintenance.
  • Confirm with DeployOpen during scoping which vendor support windows and security policy versions apply to your target release.

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.