Mimir Database Server

A whole MySQL in 320 KB.

Mimir is a tiny, MySQL-wire-compatible database server in C: a single ~320 KB static binary that runs unmodified WordPress and WooCommerce, co-located with PHP over a Unix socket. Same app, dramatically less database.

Mimir Database Server: the all-seeing Norse keeper of wisdom amid runes and glowing database cylinders under an aurora sky.
~320 KBsingle static binary
~75 µspoint read (vs ~105 µs MariaDB)
kill -9crash-safe, WAL + recovery
0config files, no my.cnf

WordPress cannot tell it apart. Mimir speaks the real MySQL wire protocol and reports as 8.0.35-Mimir, so WordPress and WooCommerce run unmodified. Same mysqli driver, same queries, no plugin.

The problem

A full MySQL server, per site, is overkill

Most WordPress stacks run a complete MySQL or MariaDB server, hundreds of megabytes and a daemon to configure and babysit, with a network port, just to serve queries for one site. Multiply that across hundreds of containers and it is real RAM and real ops cost. Every database is one more thing to patch, tune, and monitor.

  • Hundreds of MB resident, per site, before a single visitor
  • A my.cnf to tune and a daemon to keep patched
  • A network hop between PHP and its own database
# a full MySQL server, per site, just to run WordPress
$ ps -o rss,comm -C mariadbd
412160 mariadbd     # hundreds of MB resident, idle
$ ls /etc/mysql/
my.cnf  conf.d  mariadb.conf.d   # and a config to tune

By the numbers

Faster on reads, and a fraction of the size

On the point reads that make up the bulk of WordPress traffic, Mimir beats MariaDB on the same machine, while using a fraction of the memory and zero configuration.

Mimir~75 µs
MariaDB~108 µs

Point-read latency over a Unix socket, warm cache, single client. Lower is better, so Mimir is about 30% quicker on the reads that dominate WordPress.

1 clientMimir ahead
~4 clientsmatched
8+ clientsMariaDB ahead

Honest about concurrency: Mimir leads single-client and stays even with MariaDB around four clients on the same socket. Beyond that on a small box, MariaDB pulls ahead. WordPress reads sit at the low end, where Mimir wins.

MariaDB100s of MB
Mimir~320 KB

Container footprint, to scale. A MariaDB image runs to hundreds of MB; Mimir is a ~320 KB static binary. Illustrative, not a benchmark.

CapabilityMimirMariaDB / MySQLSQLite
Speaks MySQL to WordPress● native● native✕ needs a shim
Footprint~320 KB static binaryHundreds of MB~1 MB (in-process)
Runs co-located with PHP● Unix socketPossible, heavier● in-process
ConfigurationNonemy.cnf, tuningNone
Point-read latency (warm, socket)~75 µs~105 µs~4 µs
Concurrent readersLock-free, mid concurrencyScales wellIn-process
Crash-safe (WAL + recovery)●●●
Runs on FROM scratch●✕● (as a library)

Latencies are point reads on a warm cache over a Unix socket, single client, on one 4-core box. Honest notes: at 8 or more concurrent clients on a small box MariaDB pulls ahead, and Mimir is not faster on writes (inserts are competitive, not class-leading). SQLite is faster still, but it cannot speak MySQL to WordPress without a translation shim. Mimir gives you the speed of a local engine with the compatibility of a MySQL server.

Same WordPress, less database

Everything WordPress expects, in one binary

Real MySQL on the wire

Full handshake, mysql_native_password auth, and both the text and binary (prepared-statement) protocols. It reports as 8.0.35-Mimir, so WordPress enables its modern features.

WordPress + WooCommerce, unmodified

The standard mysqli driver, WordPress core, and WooCommerce including Action Scheduler all connect with no code changes. Validated for WordPress and WooCommerce, not as a drop-in for every MySQL app.

~320 KB, FROM scratch

A single static musl binary with no shared-library dependencies, multi-arch for amd64 and arm64. It runs on an empty image, so there is nothing around it to patch.

Lock-free concurrent reads

MVCC snapshot isolation with lock-free readers and a single writer, so the read-heavy queries WordPress runs do not block each other.

Crash-safe by design

A write-ahead log with crash recovery keeps committed transactions intact through a hard crash, verified under kill -9 for durability, atomicity, and integrity.

Zero configuration

No my.cnf, no tuning knobs. It opens instantly, runs, and shuts down gracefully on SIGTERM with a clean checkpoint.

Before: MySQL over the network PHP container your WordPress Network hop a round-trip per query MySQL container hundreds of MB + a daemon
With Mimir: co-located One container PHP + Mimir over a Unix socket ~320 KB binary, one /data volume

Two containers and a network hop become one container talking over a socket.

How it works

In the same container as PHP, over a socket

Mimir runs next to PHP-FPM in the same container and talks to it over a Unix socket, so there is no network hop between WordPress and its database. WordPress uses the ordinary mysqli driver; Mimir answers as a real MySQL server, serves reads from lock-free MVCC snapshots, and commits writes through a write-ahead log.

  • PHP and Mimir in one container, one /data volume
  • Unix socket, so no network round-trip per query
  • Lock-free MVCC snapshots for concurrent reads
  • Write-ahead log for crash-safe commits
WordPress runs a querystandard mysqli driver, unmodified
over a Unix socket, same container, no network hop
Mimir speaks the MySQL wire protocolhandshake, native auth, prepared statements
readsLock-free MVCC snapshotconcurrent readers, no blocking
writesWrite-ahead logsingle writer, crash-safe commit
One container, one /data volumePHP and the database ship together

It just works with WordPress

The database your WordPress thinks is MySQL

There is no plugin to install and no SQLite-style translation layer. Because Mimir is a real MySQL server on the wire, wp-config.php is unchanged: same DB_HOST, same DB_USER, the same mysqli driver. phpMyAdmin and the mysql command-line client work exactly as they do against MySQL.

  • wp-config.php needs no changes
  • phpMyAdmin and the mysql CLI work as usual
  • Reports as 8.0.35-Mimir so modern features turn on
# to the client, it really is MySQL
mysql> SELECT VERSION();
8.0.35-Mimir
mysql> SELECT @@version_comment;
Mimir 1.0.3

# the 8.0.35 wire version lets WordPress enable modern features

Under the hood

Small on the outside, serious on the inside

Single-file storage engine

A B+tree storage engine with 16 KB pages and a buffer pool, all in one data file. The whole database is one volume to back up.

Write-ahead log + recovery

Durability, atomicity, and integrity are verified empirically. A deferred, bounded checkpoint keeps commits cheap and the WAL small.

MVCC snapshot isolation

Readers see a consistent snapshot without locking, and a single writer keeps the model simple and correct under concurrency.

Durability you choose

sync=full survives power loss; sync=normal trades that for faster writes and never corrupts the database. It mirrors SQLite’s synchronous setting.

Graceful, instant restarts

It opens instantly and shuts down on SIGTERM with a clean checkpoint, so container restarts are clean and fast.

Multi-arch musl binary

One static binary for amd64 and arm64, built on musl, with optional auth over a flag or env and a Unix socket or TCP.

Durability

Tested by pulling the plug

The promise is simple: if a transaction committed, it survives. Mimir is verified by committing data and then killing the process outright with kill -9. On restart the write-ahead log replays and every committed row is still there. For write-heavy workloads you can opt into sync=normal for faster commits, which may drop the most recent writes on power loss but never corrupts the file.

  • Committed transactions survive a hard kill -9
  • WAL replay on open restores a consistent state
  • sync=full for power-loss safety, sync=normal for speed
mysql> INSERT INTO orders ...; COMMIT;
$ kill -9 $(pidof mimir)   # hard crash, no clean shutdown
# restart: the write-ahead log replays on open
mysql> SELECT COUNT(*) FROM orders;
every committed row is still there

See the config

The only config is the one you already have

There is no my.cnf and nothing to tune. The wp-config.php you already use points straight at Mimir over its socket. Inside Unicorn Panel even this is wired up for you.

// wp-config.php, unchanged from any MySQL host
define('DB_HOST', 'localhost:/run/mimir.sock');
define('DB_USER', 'app');
define('DB_PASSWORD', '...');
define('DB_NAME', 'wordpress');

// no my.cnf, no tuning, nothing else to configure

Zero lines of WordPress changed. This is the same wp-config.php any MySQL host uses.

Who it is for

Less to run, less to break, lower cost

Hosts and panel operators

Hundreds of sites, one container each. Replacing a full MySQL daemon per site with a 320 KB binary is real RAM and real ops cost reclaimed.

Self-hosters and agencies

WordPress on a small VPS without the heaviest, fiddliest part of the stack. No my.cnf, no OOM kills from the database, simple backups.

Container and edge deployers

A single immutable image. Shipping the database no longer means shipping an OS and a service manager too.

How to get it

Mimir is the database inside Unicorn Panel

Mimir is exclusive to Unicorn Panel. Choose it as the database for a site and the panel runs it co-located with PHP, wires up the socket, and keeps it updated. There is nothing separate to install, tune, or babysit.

Get Unicorn Panel Databases in the panel Explore the Unicorn Stack

Questions

Straight answers

Will my WordPress and WooCommerce work without changes?

Yes. Mimir speaks the MySQL wire protocol and reports as 8.0.35-Mimir, so the standard mysqli driver, WordPress core, and WooCommerce (including Action Scheduler) connect unmodified. No plugin, no translation layer. This is validated for WordPress and WooCommerce specifically, not as a drop-in for every MySQL application.

Is my data safe if the server crashes?

Yes. A write-ahead log plus crash recovery guarantee committed transactions survive a hard crash, and this is tested under kill -9. For maximum write speed you can opt into --sync=normal, which may lose the most recent commits on power loss but never corrupts the database.

Is it faster than MariaDB?

On the point reads that dominate WordPress traffic, yes: about 75 µs versus about 105 µs single-client over a socket, and it stays competitive up to mid concurrency. It is not faster at everything. Writes are competitive rather than class-leading, and at high concurrency on a small box MariaDB pulls ahead. We lead with reads because that is what WordPress does most.

How is it so small?

It is a single static C binary with no shared-library dependencies, around 320 KB, so it runs on an empty FROM scratch image. There is no OS, no service manager, and nothing to patch around it.

Does it support TLS, replication, or multiple simultaneous writers?

Not yet. Mimir is designed for an app co-located over a trusted Unix socket: one writer at a time with concurrent lock-free readers. TLS, replication, and multi-primary are not part of the design today.

Can I inspect it with phpMyAdmin or the mysql CLI?

Yes. Because it is a real MySQL server on the wire, phpMyAdmin and the mysql command-line client work as usual.

Same WordPress. Dramatically less database.

A ~320 KB MySQL-compatible server that runs WordPress unmodified, faster on the reads that matter, crash-safe, and zero-config.