The ScyllaDB team is pleased to announce the release of ScyllaDB 2025.3, a production-ready Short Term Support (STS) Minor Feature Release.
More information on ScyllaDB’s Long Term Support (LTS) policy is available here.
The 2025.3 release adds new features like native backup and RHEL 10 support.
Related Links
ScyllaDB Enterprise customers are encouraged to upgrade to ScyllaDB 2025.3, and are welcome to contact our Support Team with questions.
To get the most from ScyllaDB 2025.3, use ScyllaDB Manager 3.6 and later, and ScyllaDB Monitoring Stack 4.10 and later.
New features
Native Backup
The native backup feature delivers up to 15x faster backup performance compared to the previous rclone-based approach, with no impact on user queries.#24793
Introduced as experimental in ScyllaDB 2025.2, native backup is now production-ready.
Previously, SSTable backups to S3 used the Scylla Manager Agent with rclone, managed via the Scylla Manager server. This release adds direct backup infrastructure between ScyllaDB and S3 while keeping the scheduling logic and API in Scylla Manager. Native restore support will be provided in a future release.
To enable native backup in 2025.3, set up the S3 connectivity, by adding to each node scylla.yaml:
- 
S3 target bucket - you can use different bucket per region 
- 
A max upload bandwidth upper limit stream_io_throughput_mb_per_sec, safe guards the backup rate from getting too high. The recommendation is to set it up as 75% of the max network throughput. 
A new method is added in Scylla Manager for the native backup. The available methods are:
- 
Rclone: use legacy rclone backup. 
- 
Native: Backup directly from Scylla server to S3. 
- 
Auto: try to use Native if possible: supported by scyllaDB version and back target (see bullet below) 
Note:
- 
Rclone agent is always used to upload backup meta data. You should still configure the manager agent when using Native backup and restore. 
- 
Native backup is only available for AWS. For other backup targets (such as GCP Cloud Storage and Azure Storage), ScyllaDB will continue to rely on the Manager Agent. 
Alternator
- 
Alternator, ScyllaDB’s implementation of the DynamoDB API, now supports a set of per-table metrics. #19824 
- 
Alternator, now supports time-to-live (TTL) attributes on tables running with tablets. #16567 
Deployment options
- 
AWS: This release adds support for the following I7i and I7ie instance types: i7i.large, i7i.xlarge, i7i.2xlarge and all and i7ie instances. The I7i and I7ie families are the next-generation successors to the i4i and i3en instances, delivering an improved price-to-performance ratio compared to earlier generations. Larger i7i instances will be supported in upcoming releases. image#709 
- 
GCP: The latest Z3 instances are now supported #728 image#728. Read more about ScyllaDB on Z3 in New Google Cloud Z3 Instances: Early Performance Benchmarks on ScyllaDB Show up to 24% Better Throughput, and Big ScyllaDB Performance Gains on Google Cloud’s New Smaller Z3 Instances 
- 
ScyllaDB now tested on RHEL 10 scylla-pkg/#5222 
- 
Support for Ubuntu 20.04, which has reached end-of-life, has been removed. #24564 
More updates
Correctness
- 
LWT: possible stale data read #24630. The issue is limited to rare cases where Replication Factor >= 4 , the most recent commit is stored (“learned”) only on one replica, and other replicas must have failed to receive an update last time LWT was executed for this partition key. 
- 
An edge case with DECIMAL type parsing was fixed. #24581. For example, the following should have fail, but prior to this fix have not: CREATE TABLE IF NOT EXISTS test_table (pk int PRIMARY KEY, val decimal); INSERT INTO test_table (pk,val) values (12, 1.1e-2147483647); 
- 
The data structure used for building mutations now has additional sanity checks for row clustering keys. 
- 
Restore: Native restore does not finish after altering batch size #25262, #25453 
- 
S3 client: Refinement in how credential renewal and expiration #25044 
CQL
- 
The maximum length of keyspace, table, and view names was extended from 48 characters to 192 characters. #4480 
- 
Fixed an issue where the default role was re-created after a node restart. The role is now only re-created if no other superuser role exists. #24469 
Stability
- 
An issue in mapreduce_service caused by a possible race condition, where parallel aggregation may fail to include all values. #20662 
- 
ScyllaDB tracks the amount of memory in memtables that was spooled to an SSTable and tries to ensure new writes don’t consume memory faster than it is written to disk. A crash due to a rare edge case when tracking this memory caused an assertion `_mt._flushed_memory <= _mt.occupancy().total_space()’ failed during bulk ingestion #21413 
- 
There is now a queue for topology requests. Requests that cannot be processed in parallel will be queued one after the other. #16822 
- 
Empty clustering keys generated and spread freely in the system #24506 
- 
ScyllaDB now avoids large contiguous allocations during DESCRIBE statements with tables that have many (possibly deleted) columns. #24018 
- 
The repair small table optimization is used to speed up repairs on tables that are empty or almost empty (like many tables in system_distributed). On large clusters, the optimization could lead to an out-of-memory condition. #22244 
- 
A new schema application framework was merged, which will allow to improve atomicity when managing cluster metadata. #19649 #24531 
- 
The CQL binary protocol server now avoids exceptions when rejecting protocol versions it does not support. Unsupported protocol versions are common when drivers probe for server capability, and preventing exceptions improves robustness during connection storms. #24738 
- 
Background writes are now cancelled when a node is shut down, so shutdown completes more quickly. #23665 
- 
Remove throwing (some) protocol_exceptions when handling new connections #24567 #25272. avoid negative side effects of throwing these exceptions during a connection storm. 
- 
Coredump during truncate: Data written after truncation time was incorrectly truncated #25013 
- 
Node crashes at shutdown with “Assertion this->_con->get()->sink_closed() failed” while restore in progress #25165 
- 
Tablets Repair: A node may crash If a node has many shards and many tablets on each shard #23632 
- 
Upgrade to raft topology may cause reads from system_distributed, leading to timeouts and defuncting group0 fiber #24963 
Performance
- 
HTTP TLS support now reuses credentials across connections, minimizing repeated disk loads. #24447 
- 
There is now support for converting CQL3 data type representations to a new byte-comparable representation. This is a step towards implementation of Trie sstable indexes in a follow-up release. #23541 
- 
Some stalls when managing schemas with thousands of tables were eliminated. #24815 
- 
Alternator, ScyllaDB’s implementation of the DynamoDB API, is now more careful to avoid large contiguous allocations during query/scan operations, as these can cause stalls. #23535 
- 
Tablets: After replacing a node, the load balancer will immediately check available space, to avoid the up to 60-second delay from regularly scheduled checks that can delay load balancing. #25163 
- 
Slow replace in the presence of a table with tablets #25163 
Tablets
- 
ScyllaDB can automatically parallelize some aggregation queries via an internal map/reduce service. This automatic parallelization is now optimized for tablets #21831 
- 
Lightweight transactions (LWT) now synchronize with tablet migrations. This is a step towards enabling LWT with tablets, which is yet not available in 2025.3. #24495 
- 
Repair: Tablet repair does not exclude global topology operations #24195. The fix delays repair until topology updates are completed. 
- 
ScyllaDB now supports co-locating tablets of different tables. Co-located tablets are migrated, split, and merged. They will be used, in a follow-up release, for lightweight transactions, change data capture, and local materialized views. #17043 
- 
Tablet metadata can grow very large in large clusters. Its creation already avoided reactor stalls, and now its destruction as well. #24814 
Tooling
- 
The nodetool refresh command gained a –skip-reshape switch. Reshaping can be an expensive operation and one may want to defer it. #24365 
- 
The nodetool repair command now rejects tablet keyspaces; those are repaired via a different command. #23660. To repair tablet keyspaces use nodetool cluster repair. 
- 
Native Backup: The nodetool backup command learned the --move-files option which moves files instead of copying them. #24372 
- 
Using scylla sstable, the tool may crash in case of disengaged row #25325 
Storage
- UUID SSTable generations (introduced in ScyllaDB 5.4 / 2024.1) are now mandatory. #24554
Raft
- 
Simplify the new Raft recovery procedure: simplify rolling restart with recovery_leader #25015 
- 
Introduced a queue for global topology requests, enabling multiple requests to run in parallel. #24293 
Log and trace
- 
An internal error in truncate was relaxed into a warning, after it was determined the condition can legitimately happen. #25173 #25013 
- 
Change severity of Failed force_keyspace_cleanup - gate_closed_exception error to WARNING #16732 
Optimization
- 
seastar_memory - oversized allocation: in a cluster with 5000 tables #25040 
- 
S3 clients memory improvements, allowing operations to be cancelled when waiting for memory resources #25454 
Monitoring
- Progress reporting in the internal task manager (exposed by nodetool tasks) now uses consistent units. #24650