Cloud Parts

MySQL

The long-standing open-source SQL database behind much of the web, built on the InnoDB engine.

Type
Open source
Made by
Oracle
License
GPLv2 or commercial
Facts checked
5 October 2026

What it is

MySQL is a client-server SQL database whose storage is handled by a pluggable engine; the default, and the one almost everyone uses, is InnoDB. InnoDB stores each table as a clustered index on its primary key, so rows sit in key order and a primary-key lookup goes straight to the data. It gives ACID transactions with row-level locking, and consistent reads through MVCC, so readers don’t wait for writers.

Replication is MySQL’s classic scaling tool. The primary records every change in its binary log, and replicas copy and replay it, which spreads read traffic across machines. Replication is asynchronous by default; semisynchronous mode makes a commit wait until at least one replica has the change, and GTIDs let replicas track position without log file offsets. Oracle ships two tracks: LTS series (8.4 and 9.7) that get only fixes for years, and Innovation releases with new features, each supported only until the next.

Why teams pick it

  • Mature, widely known, and offered as a managed service on every major cloud
  • Simple, well-understood replication for read scaling and failover
  • Primary-key lookups are fast because InnoDB stores rows in key order
  • LTS series change little, which keeps upgrades predictable

Watch out for

  • With default asynchronous replication, a failover can lose the last commits that hadn’t reached a replica
  • Random primary keys such as UUIDv4 scatter inserts across the clustered index, which can leave its pages only half full
  • Innovation releases are supported only until the next one, so production usually stays on LTS
  • GPLv2: distributing it inside closed-source software needs a commercial licence from Oracle

Alternatives

What all relational databases have in common →
Alibaba Cloud PolarDBCommercialAlibaba Cloud’s cloud-native relational databases: MySQL- and PostgreSQL-compatible clusters whose compute nodes share one copy of the data on distributed storage, plus PolarDB-X, a distributed MySQL-compatible edition.CedarDBCommercialA PostgreSQL-compatible database rebuilt from scratch at TU Munich, running transactions and analytics on one copy of the data on a single server.Cloudflare D1CommercialCloudflare’s serverless SQL database that speaks SQLite, runs each database inside a Durable Object, and bills by rows read and written rather than by the hour.CloudNativePGOpen sourceA Kubernetes operator that runs highly available PostgreSQL with no Patroni and no StatefulSets: the Kubernetes API itself holds the cluster’s state.CockroachDBCommercialA distributed SQL database that speaks the PostgreSQL wire protocol, replicates every slice of data with Raft and keeps transactions serializable across nodes and regions.NeonCommercialServerless Postgres that keeps data in a shared storage layer, so compute can scale to zero and a branch of the database is a pointer, not a copy.PatroniOpen sourceA Python agent beside each Postgres server that elects one primary through etcd, Consul, ZooKeeper or Kubernetes, and fails over when it dies.Percona OperatorsOpen sourceFour free Kubernetes operators from Percona that run its builds of MySQL, PostgreSQL and MongoDB, each using the engine’s own replication and backup tools.PGO (Crunchy Postgres for Kubernetes)Open sourceCrunchy Data’s Postgres operator: Patroni in every pod for failover, pgBackRest for backups, and a declarative `PostgresCluster` resource on top.PlanetScaleCommercialManaged MySQL on Vitess and managed Postgres, with schema changes shipped through branches and deploy requests.PostgreSQLOpen sourceThe open-source relational database that most new projects start on, extensible enough to grow into many niches.ScramDBCommercialA brand-new, closed-source database that speaks the PostgreSQL protocol and promises transactions, analytics and vector search on one copy of the data; first builds shipped in summer 2026.SQLiteOpen sourceA complete SQL database in a library and a single file, with no server to run.TursoOpen sourceA from-scratch Rust rewrite of SQLite with concurrent writes, plus libSQL (an open-contribution SQLite fork) and Turso Cloud, which hosts many small databases on S3.VitessOpen sourceA proxy layer, born at YouTube, that shards MySQL across many servers while the app still sees one database.

How it fits with other technologies

What uses MySQL

Point a replica at its source using GTID auto-positioning · sql

-- my.cnf on both servers: gtid_mode=ON, enforce_gtid_consistency=ON

-- on the source
CREATE USER 'repl'@'10.0.%' IDENTIFIED BY 'change-me';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'10.0.%';

-- on the replica
CHANGE REPLICATION SOURCE TO
  SOURCE_HOST = 'db-primary.internal',
  SOURCE_USER = 'repl',
  SOURCE_PASSWORD = 'change-me',
  SOURCE_AUTO_POSITION = 1,
  SOURCE_SSL = 1;
START REPLICA;

See it in a real stack

No architecture uses MySQL yet. Drop it into the playground and wire it up yourself.Open playground →

Benchmarks

How to read a benchmark →
Where it came from1995–2026

Michael “Monty” Widenius and David Axmark wanted a SQL interface on top of their own fast, low-level ISAM table routines. They tried mSQL, a small database of the time, but found it neither fast enough nor flexible enough. So they wrote their own SQL layer, keeping almost the same API as mSQL so that code written for it could be ported easily. MySQL, named after Widenius’s daughter My, counts May 23, 1995 as its birthday, and with Allan Larsson they founded MySQL AB in Sweden to develop it.

MySQL AB released it under the GPL and sold commercial licences to companies that didn’t want the GPL’s terms. Fast, simple and free, it became the M in the LAMP stack (Linux, Apache, MySQL and PHP, Perl or Python), and by the end of 2004 the company claimed more than 5 million active installations. Its default engine, MyISAM, had no transactions; users who needed them could choose InnoDB, a transactional engine from the Finnish company Innobase.

Then ownership moved fast. Oracle bought Innobase in October 2005, Sun Microsystems agreed in January 2008 to buy MySQL AB for about $1 billion, and Oracle completed its purchase of Sun in January 2010. Worried about Oracle’s stewardship, Widenius forked MySQL as MariaDB, named after his second daughter, Maria. Oracle still develops MySQL today.

Why it’s built this way

Speed and simplicity before completeness
MySQL began as a quick SQL front end for fast ISAM routines. Its early default engine, MyISAM, skipped transactions, so full ACID guarantees had to come from another engine.
An API that mirrored mSQL
Third-party code written for mSQL could be ported to MySQL easily.
Pluggable storage engines
The SQL layer is separate from how tables are stored, so a third party’s transactional engine, InnoDB, could slot in. It became the default in MySQL 5.5 in 2010.
GPL for everyone, a paid licence for the rest
Dual licensing kept MySQL free under the GPL, while companies shipping it inside closed products bought commercial licences, one of MySQL AB’s three main sources of revenue.

Timeline

  1. 1995

    MySQL’s official birthday, May 23

  2. 2005

    Oracle buys Innobase, maker of the InnoDB engine

  3. 2008

    Sun Microsystems buys MySQL AB for about $1 billion

  4. 2009

    Widenius forks MySQL as MariaDB after Oracle announces it will buy Sun

  5. 2010

    Oracle completes the Sun deal; InnoDB becomes the default engine in 5.5

  6. 2026

    MySQL 9.7 LTS moves several Enterprise-only features into Community Edition

Sources12 · facts checked 5 October 2026

Improve this page on GitHub