Problem/Motivation

New LTS is out and it should be supported https://mariadb.org/mariadb-server-12-3-lts-released/

Proposed resolution

add new image

Remaining tasks

User interface changes

API changes

Data model changes

Comments

andypost created an issue. See original summary.

andypost’s picture

Adding a db/mariadb-12.3/ container for the new MariaDB 12.3 LTS series (GA 12.3.2, May 2026, supported through June 2029). Templated off the existing mariadb-10.11 container, pinned to docker.io/mariadb:12.3.2. While doing this I had to address a few 12.x deprecations/removals, and there are some worthwhile CI performance wins. Notes below for review before I push.

Deprecations / removals to respect (12.x)

These aren't optional cosmetics — several are fatal on MariaDB 12:

  • mysql* CLI symlinks → canonical mariadb*. startup.sh currently calls mysql_install_db, mysqld_safe, and mysql -e .... On 11.x+ these emit "Deprecated program name … use mariadb… instead", which is treated as a fatal error in several contexts. Switching to:
    • mysql_install_dbmariadb-install-db
    • mysqld_safemariadbd-safe
    • mysql -e ...mariadb -e ...

    (The pgrep -x mariadbd in the SIGTERM trap is already correct.)

  • Drop default_authentication_plugin=mysql_native_password from my.cnf. It's a MySQL-only option; MariaDB loads the mysql_native_password plugin by default, and the line risks an "unknown variable" abort.
  • utf8utf8mb3 (explicit). character_set_server = utf8 / collation_server = utf8_general_ci use the deprecated utf8 alias; writing them as utf8mb3 / utf8mb3_general_ci keeps identical behavior and silences the deprecation notice.
  • Query cache + big_tables + large_page_size are removed in 12.x. Our my.cnf doesn't set any of them, so nothing to delete — just flagging so we don't reintroduce them.
  • Behavioral change: innodb_snapshot_isolation now defaults ON in 12.3 (changes REPEATABLE READ semantics). Since this container pins transaction-isolation = READ-COMMITTED the impact is minimal, but I'd set it explicitly OFF for parity with the older MariaDB CI containers and to avoid surprising tests.

Performance improvements

Free, just by being on 12.3 (no config needed):

  • Optimizer gains — Rowid Filtering and Index Condition Pushdown now apply to reverse-ordered scans, and Loose Index Scan (GROUP BY) can use DESC key parts.
  • The headline "4× write performance" (binlog moved into InnoDB) does not apply here because the container runs with skip-log-bin — which is the right call for CI, so we keep binlog off.

Config tuning we can apply, given the DB is a throwaway CI instance (data discarded after each run, so durability can be traded for speed — these are CI-only, never for production):

Setting Current Proposed Rationale
innodb_doublewrite ON 0 Skip doublewrite buffer; crash-safety irrelevant for ephemeral data
innodb_flush_log_at_trx_commit 0 0 (keep) Already no per-commit fsync
innodb_flush_method unset O_DIRECT Avoid double-buffering with the OS page cache
innodb_buffer_pool_size 256M 1G Fit the Drupal test working set in RAM (host tuned for 4 GB)
innodb_log_file_size default 512M Far fewer checkpoint flushes during write-heavy install/test runs
tmp_table_size / max_heap_table_size 32M 128M Drupal tests create many temp tables; keep them in memory
innodb_adaptive_hash_index 0 0 (keep) Already off — best for the many CREATE/DROP TABLE pattern of test runs

Related: security patch bumps for other DB containers

Separate from 12.3, the maintained DB images are a few patch releases behind and have RCE/takeover-class CVEs (June 2026). Suggest bumping in the same effort:

  • PostgreSQL 18.3→18.4, 17.9→17.10, 16.13→16.14, 15.17→15.18 — May 2026 set incl. CVE-2026-6637 (refint stack overflow → RCE) and CVE-2026-6475 (arbitrary file overwrite).
  • MongoDB 7-jammy7.0.34-jammy — CVE-2026-8053 (time-series → server takeover) and MongoBleed (CVE-2025-14847, active exploitation).
  • MariaDB 10.11.16→10.11.18 (Galera high-sev + 2026 CVEs); pin 10.6→10.6.27 (note 10.6 reaches EOL 2026-07-06).
  • Lower priority / deferred: MySQL 9.6 & 8.4 (only CVE-2026-22015, CVSS 4.3); MySQL 8.0 is EOL (April 2026).

I'll build and validate mariadb-12.3 locally (warning-free init, user/grants, graceful shutdown) before pushing.

  • andypost committed bfab1c7e on dev
    DB: mariadb 12.3 LTS #3593556
    
    Add db/mariadb-12.3 container (FROM...

  • andypost committed 93270ec8 on dev
    DB: mariadb 12.3 LTS #3593556
    
    Add db/mariadb-12.3 container (FROM...

  • andypost committed a877c0fe on production
    DB: mariadb 12.3 LTS #3593556
    
    Add db/mariadb-12.3 container (FROM...

  • andypost committed d53b18c1 on dev
    DB: mariadb 10.11.18 security #3593556
    
    Co-Authored-By: Claude Opus 4.8...

  • andypost committed e14db7c3 on dev
    DB: mariadb 10.6.27 security #3593556
    
    Co-Authored-By: Claude Opus 4.8 (...

  • andypost committed 8933c88a on dev
    DB: postgres 18.4 security #3593556
    
    Co-Authored-By: Claude Opus 4.8 (1M...

  • andypost committed e8dc6cdf on dev
    DB: postgres 17.10 security #3593556
    
    Co-Authored-By: Claude Opus 4.8 (...

  • andypost committed af3bf55e on dev
    DB: postgres 16.14 security #3593556
    
    Co-Authored-By: Claude Opus 4.8 (...

  • andypost committed 348c8019 on dev
    DB: postgres 15.18 security #3593556
    
    Co-Authored-By: Claude Opus 4.8 (...

  • andypost committed 729cc030 on dev
    DB: mongo 7.0.34 security #3593556
    
    Co-Authored-By: Claude Opus 4.8 (1M...

  • andypost committed cbdd4666 on production
    DB: mariadb 10.11.18 security #3593556
    
    Co-Authored-By: Claude Opus 4.8...

  • andypost committed 7e2d61c5 on production
    DB: mariadb 10.6.27 security #3593556
    
    Co-Authored-By: Claude Opus 4.8 (...

  • andypost committed a15bee77 on production
    DB: postgres 18.4 security #3593556
    
    Co-Authored-By: Claude Opus 4.8 (1M...

  • andypost committed bc7a59ad on production
    DB: postgres 17.10 security #3593556
    
    Co-Authored-By: Claude Opus 4.8 (...

  • andypost committed 9dbaf217 on production
    DB: postgres 16.14 security #3593556
    
    Co-Authored-By: Claude Opus 4.8 (...
andypost’s picture

Status: Active » Fixed

all images are pushed and tested

Now that this issue is closed, review the contribution record.

As a contributor, attribute any organization that helped you, or if you volunteered your own time.

Maintainers, credit people who helped resolve this issue.

andypost’s picture

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.