MariaDB Server 12.3 LTS Released

A few days ago, the MariaDB Server 12.3 LTS was released!

MariaDB 12.3 is the new Long-Term Support release in the MariaDB 12 series and will be maintained for several years. The first GA version of the 12.3 series is 12.3.2. For users running production systems, this is the kind of release that matters: not just new features, but a stable base you can plan around, test properly, and deploy with confidence.

As usual with an LTS, MariaDB 12.3 includes the work done in the rolling releases leading to it, plus new improvements introduced in the 12.3 series itself. In other words, it is not only “one more release”; it is the version many DBAs, developers, and distributions will now start evaluating seriously.

MariaDB Server 12.3 LTS is available from the MariaDB download pages [1], [2] and package repositories.

Let’s have a look at what makes MariaDB 12.3 LTS interesting; all the changes and improvements are also available here.

A new binary log implementation

For me, one of the most exciting changes in MariaDB 12.3 is the new binary log implementation.

MariaDB 12.3 introduces a new option to store binary log events in InnoDB-managed storage, rather than relying solely on traditional separate binlog files. I already covered this feature in this article.

For a long time, binary logs have been a performance bottleneck, but this new implementation finally resolves it. I really encourage you to test it.

More SQL standard and compatibility features

MariaDB 12.3 also continues the work on SQL standard support and compatibility.

Among the additions are the SQL standard IS JSON predicate, SET PATH, support for cursors on prepared statements, and the ability for UPDATE and DELETE to read from a CTE. We also included a basic XML data type.

For users migrating applications or maintaining applications that need to run across multiple database systems, these details matter. They may not always be the shiny features you demo first, but they reduce friction.

MariaDB 12.3 also improves Oracle compatibility with functions such as TO_DATE(), TO_NUMBER(), and TRUNC(), Oracle-style outer join syntax in Oracle mode, associative arrays, and several stored routine improvements.

MySQL compatibility: caching_sha2_password

Another feature that will be very visible for people working in the MySQL ecosystem is support for the caching_sha2_password authentication plugin for MySQL compatibility.

This is a small line in a release overview, but a big practical improvement for people migrating from the latest MySQL 8.4 or 9.x to MariaDB Server. I covered it in this article.

Optimizer hints and optimizer improvements

MariaDB 12.3 also brings a significant set of optimizer-related improvements.

The release notes list support for optimizer hints such as QB_NAME, NO_RANGE_OPTIMIZATION, NO_ICP, BKA, NO_BKA, JOIN_FIXED_ORDER, JOIN_ORDER, JOIN_PREFIX, JOIN_SUFFIX, MAX_EXECUTION_TIME, and several index-related hints.

This is another DBA-friendly area.

Most of the time, we want the optimizer to do the right thing automatically. But when you are troubleshooting a specific query, stabilizing a plan, testing an application upgrade, or dealing with a heavy workload, being able to precisely influence the optimizer is very valuable.

MariaDB 12.3 also includes improvements around reverse-ordered scans, loose index scan with descending key parts, virtual columns, derived tables with GROUP BY, and optimizer trace information.

This is good news for people concerned about query performance,

Replication and Galera improvements

Replication is also addressed in MariaDB 12.3. I already mentioned the InnoDB-based binlogs, but there is more.

We now have the possibility to configure defaults or MASTER_SSL_* settings for CHANGE MASTER, fragmentation of large row replication events, and improvements to binary logging performance.

MariaDB 12.3 also improves asynchronous replication between two Galera clusters by allowing parallel replication, and Galera Incremental State Transfers avoid unnecessary foreign key checks.

Again, these are the kind of improvements that may not look spectacular on a slide, but they matter for real deployments.

Replication is one of those areas where small details can have large consequences. Better defaults, better behavior with large events, and better performance all help reduce operational surprises.

It’s also important to remember that Galera is still present in MariaDB 12.3, as announced, a great win for the community.

Security and audit improvements

Security also gets several useful additions.

MariaDB 12.3 adds support for passphrase-protected keys, SHA2 support for the file_key_management plugin used with TDE, and the SET SESSION AUTHORIZATION statement for performing actions as another user.

The audit plugin also gets improvements, including logging HOST:PORT for incoming connections and adding a tls_version field for connection audit plugins.

These features are essential for most of the people I meet who work at large companies during my presentations. They are part of the deployment requirements and make MariaDB easier to operate in large environments.

GIS, JSON, triggers, and other changes

MariaDB 12.3 includes several other improvements that are worth mentioning.

GIS gets new functions, including ST_Validate, ST_Simplify, ST_GeoHash, ST_LatFromGeoHash, ST_LongFromGeoHash, ST_PointFromGeoHash, ST_IsValid, and ST_Collect.

JSON functions no longer have the previous depth limit of 32 and triggers can now fire on multiple events.

There are also many smaller DBA and developer conveniences: mariadb-dump supports wildcards with -L or --wildcards, foreign key constraint names no longer need to be unique per database but only per table, and mariadb-check / CHECK TABLE support sequence tables.

I always like these “small” improvements. They are often the result of real users hitting real limitations.

One important behavioral change: InnoDB snapshot isolation

There is also an important behavioral change to be aware of: innodb_snapshot_isolation now defaults to ON, while it was previously OFF. The documentation notes that this changes repeatable-read behavior.

This deserves attention during testing, as MariaDB is now doing the right things but might break some production workloads. But of course, there is probably no better moment than when we release a new LTS to make such a change to the defaults.

As always, don’t just upgrade production and hope for the best. Test your applications, check your transaction behavior, review your replication topology, and validate your backup and restore procedures.

You know the drill 😉

Upgrading to MariaDB 12.3 LTS

If you are already running MariaDB 11.8 LTS, MariaDB 12.3 LTS is the next major LTS to evaluate.

That does not mean everybody must upgrade today. Production databases deserve planning. But it does mean that 12.3 is now the release to start testing if you want the new LTS line, the latest compatibility improvements, and the operational enhancements introduced in the MariaDB 12 series.

For development and test environments, now is the right time to try it. For production, start by reading the release notes, checking the changes and improvements, and running your own workload against it.

Conclusion

MariaDB Server 12.3 LTS is a very interesting release.

It brings deep server work with the new binary log implementation, important compatibility improvements, more optimizer control, replication and Galera enhancements, security and audit improvements, and many smaller changes that make life better for DBAs and developers.

This is exactly what I expect from an LTS: not only new features but also a release that gives the community a strong, stable base for the coming years.

So download it, test it, break it in your lab before production does, and share your feedback with the MariaDB community.

Happy testing, and enjoy MariaDB 12.3 LTS!

Subscribe to Blog via Email

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

2 Comments

Leave a Reply

Your email address will not be published. Required fields are marked *