Reference¶
Scope
Look-up facts for MySQL Community Server: release and support matrix, version-specific removals, default values that changed in 8.4, limits, authentication and privilege tables, replication/HA options, and the production hardening checklist. For procedures see How-to Guides. For internals see Explanation.
Release and Support Matrix¶
Status as of 2026-09-25. Dates are Oracle GA dates where known; the endoflife.date tracker records git tag dates, which can be a few days earlier.
| Series | Track | First GA | Latest (date) | Premier support ends | Extended support ends |
|---|---|---|---|---|---|
| 26.7 | Innovation (first CalVer release) | 2026-07-28 | 26.7.0 (2026-07-28) | Superseded by 26.10 (planned 2026-10) | Same |
| 9.7 | LTS | 2026-04-21 | 9.7.2 (2026-07) | ~2031-04 (5 years, estimate) | ~2034-04 (8 years, estimate) |
| 8.4 | LTS | 2024-04-30 | 8.4.11 (2026-07) | 2029-04-30 | 2032-04-30 |
| 9.0 to 9.6 | Innovation | 2024-07 to 2026-01 | 9.6.x | Ended when the next release shipped | Same |
| 8.0 | Bugfix (legacy) | 2018-04-19 | 8.0.46 (2026-04, final) | 2025-04-30 | 2026-04-30 (EOL) |
| 5.7 | Legacy | 2015-10 | 5.7.44 (2023-10) | 2020-10-31 | 2023-10-31 |
8.0 is end of life
MySQL 8.0 left Extended Support on 2026-04-30. 8.0.46 is the last release. Community builds get no further security fixes. Move to 8.4 LTS first. There is no direct 8.0 to 9.x upgrade path (see Upgrade Paths).
Sources: endoflife.date/mysql, MySQL EOL notices, MySQL July 2026 GA releases, MYSQL_VERSION files on the 8.4, 9.7 and trunk branches of mysql/mysql-server (trunk reads 26.10.0 Innovation, previous LTS 9.7.0).
Release Model¶
| Rule | Detail |
|---|---|
| Innovation cadence | About quarterly. Each Innovation release is supported only until the next one ships. Production-grade, but you must keep upgrading. |
| LTS cadence | About every two years. The last release of a major series becomes LTS (8.4, 9.7). |
| LTS support | 5 years Premier + 3 years Extended (Oracle Lifetime Support Policy). Quarterly patch releases. |
| Feature changes in LTS | Features are added or removed only in the first LTS release (x.y.0). Later patches are fixes only. |
| Versioning (to 9.7) | Sequential MAJOR.MINOR.PATCH (8.1 ... 8.4, 9.0 ... 9.7). There is no 9.8. |
| Versioning (from 26.7) | Calendar YY.M.P: 26.7.0 = July 2026. Month has no leading zero. Next Innovation: 26.10.0. |
Sources: A More Predictable MySQL Release Model, MySQL 26.7 manual: Innovation and LTS.
Upgrade Paths¶
| From | To | Supported? | Methods |
|---|---|---|---|
| 8.0.x | 8.0.y (later) | Yes | In-place, dump/load, replication, Clone |
| 8.0.37+ | 8.4.x LTS | Yes (in-place needs 8.0.37 or later) | In-place, dump/load, replication |
| 8.0.x | 9.7 LTS or 26.x | No | Upgrade to 8.4 first |
| 8.4.x | 9.7 LTS | Yes (LTS to next LTS) | In-place, dump/load, replication |
| 8.4.x | 9.0 to 9.6 Innovation | Yes | In-place, dump/load, replication |
| 9.7 LTS | 26.x Innovation | Yes | In-place, dump/load, replication |
| Innovation (for example 9.3) | 9.7 LTS | Yes | In-place, dump/load, replication |
| Any | Older version (downgrade) | Only within an LTS series, or via dump/load | Dump/load |
Source: MySQL 9.7 Upgrade Paths, Percona: MySQL upgrade paths.
What Changed by Version¶
| Version | Notable additions | Notable removals / default changes |
|---|---|---|
| 8.0.30 | innodb_redo_log_capacity, dynamic redo resizing |
innodb_log_file_size / innodb_log_files_in_group deprecated |
| 8.0.34 | Bugfix-only series begins | mysql_native_password, binlog_format deprecated |
| 8.4.0 LTS | New InnoDB defaults (table below) | mysql_native_password disabled by default. CHANGE MASTER TO, START/STOP SLAVE, SHOW SLAVE STATUS, SHOW MASTER STATUS, RESET MASTER removed. keyring_file / keyring_encrypted_file plugins removed (use components). default_authentication_plugin, expire_logs_days, binlog_transaction_dependency_tracking, transaction_write_set_extraction removed. group_replication_consistency default becomes BEFORE_ON_PRIMARY_FAILOVER (was EVENTUAL). |
| 9.0 | VECTOR data type, STRING_TO_VECTOR(), VECTOR_TO_STRING(), VECTOR_DIM() |
mysql_native_password plugin removed |
| 9.7.0 LTS | Hypergraph optimizer in Community (off by default). JSON Duality View DML in Community. Replication applier metrics, GR flow-control statistics, GR resource manager, GR primary election and telemetry moved from Enterprise to Community. Enterprise: dynamic data masking, OpenID Connect authentication. | Features deprecated during 9.0 to 9.6 can be removed |
| 26.7.0 | Calendar versioning. Change Stream Applier (opt-in multithreaded applier, up to 1,024 workers per channel). Thread Pool plugin in Community. Post-quantum TLS (needs OpenSSL 3.5+). Upgrade-check progress reporting. | group_replication_communication_stack default XCOM changes to MYSQL. thread_pool_max_unused_threads default 2 changes to 32. |
Vector search is still not in Community
Community Server has the VECTOR type and conversion functions, but the DISTANCE() similarity function is available only in HeatWave on OCI and MySQL AI. Oracle's February 2026 pledge mentioned vector functions for 9.7, but they did not ship in Community 9.7. Percona Server for MySQL 9.7.2-2 adds its own DISTANCE() / VECTOR_DISTANCE().
Sources: MySQL 8.4 What Is New, MySQL 9.7 LTS announcement, Changes in MySQL 26.7.0, MySQL 9.7 vector functions, Percona: DISTANCE() in Percona Server 9.7.
Removed Replication Statements (8.4+)¶
| Removed in 8.4 | Use instead (available since 8.0.22/8.0.23) |
|---|---|
CHANGE MASTER TO |
CHANGE REPLICATION SOURCE TO |
START SLAVE / STOP SLAVE |
START REPLICA / STOP REPLICA |
SHOW SLAVE STATUS |
SHOW REPLICA STATUS |
SHOW SLAVE HOSTS |
SHOW REPLICAS |
RESET SLAVE |
RESET REPLICA |
SHOW MASTER STATUS |
SHOW BINARY LOG STATUS |
RESET MASTER |
RESET BINARY LOGS AND GTIDS |
PURGE MASTER LOGS / SHOW MASTER LOGS |
PURGE BINARY LOGS / SHOW BINARY LOGS |
WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS() |
WAIT_FOR_EXECUTED_GTID_SET() |
log_slave_updates (variable name) |
log_replica_updates (default ON) |
The REPLICATION SLAVE privilege keeps its name. Source: Percona: breaking changes in 8.4.
InnoDB Defaults: 8.0 vs 8.4+¶
| Variable | 8.0 default | 8.4 / 9.7 / 26.x default |
|---|---|---|
innodb_adaptive_hash_index |
ON | OFF |
innodb_change_buffering |
all | none |
innodb_io_capacity |
200 | 10000 |
innodb_io_capacity_max |
2000 | 2 x innodb_io_capacity (20000) |
innodb_flush_method (Linux) |
fsync | O_DIRECT if supported |
innodb_log_buffer_size |
16 MiB | 64 MiB |
innodb_doublewrite_pages |
4 | 128 |
innodb_doublewrite_files |
innodb_buffer_pool_instances x 2 |
2 |
innodb_numa_interleave |
OFF | ON |
innodb_parallel_read_threads |
4 | logical CPUs / 8 (min 4) |
temptable_max_ram |
1 GiB | 3% of RAM (1 to 4 GiB) |
group_replication_consistency |
EVENTUAL | BEFORE_ON_PRIMARY_FAILOVER |
Sources: Percona: defaults and tuning for 8.4, lefred: new production-ready defaults, MTR result files and sql/sys_vars.cc on mysql-server trunk.
Key Configuration Parameters¶
| Parameter | Default (8.4+) | Purpose |
|---|---|---|
innodb_buffer_pool_size |
128 MiB | Page cache. Set 50 to 80% of RAM on a dedicated server. Resizable online. |
innodb_redo_log_capacity |
100 MiB | Total redo space (8.0.30+). Replaces innodb_log_file_size. |
innodb_flush_log_at_trx_commit |
1 | Redo durability. 1 = fsync per commit (ACID). 2 = write per commit, fsync about once a second. 0 = write and fsync about once a second. |
sync_binlog |
1 | Binlog fsync per commit group. Keep 1 with innodb_flush_log_at_trx_commit=1. |
binlog_format |
ROW | Deprecated since 8.0.34. ROW is the only format for new designs. |
binlog_expire_logs_seconds |
2592000 (30 days) | Binlog retention. |
gtid_mode / enforce_gtid_consistency |
OFF / OFF | Set both ON for GTID replication and Group Replication. |
replica_parallel_workers |
4 | Multithreaded applier workers (default 4 since 8.0.27). |
max_connections |
151 | Maximum 100,000. Use pooling or the Thread Pool plugin for many clients. |
authentication_policy |
*,, |
Replaces default_authentication_plugin (removed in 8.4). |
require_secure_transport |
OFF | ON rejects non-TLS TCP connections. |
local_infile |
OFF | Keep OFF to block LOAD DATA LOCAL abuse. |
Limits¶
| Limit | Value |
|---|---|
| Max tablespace size (16 KiB pages) | 64 TiB |
| InnoDB page size | 4, 8, 16 (default), 32 or 64 KiB, fixed at initialization |
| Max row size (excluding off-page BLOB/TEXT) | 65,535 bytes (server), about half a page for InnoDB in-page data |
| Max columns per InnoDB table | 1,017 |
| Max secondary indexes per InnoDB table | 64 |
| Index key prefix (DYNAMIC / COMPRESSED rows) | 3,072 bytes |
max_connections |
1 to 100,000 |
| Group Replication members | 9 per group |
| Change Stream Applier workers (26.7) | Up to 1,024 per channel |
Source: InnoDB Limits (8.4), sql/sys_vars.cc (max_connections range).
Replication and HA Options¶
| Option | Consistency | Failover | Tooling | Notes |
|---|---|---|---|---|
| Asynchronous replication | Eventual | Manual or external (Orchestrator, MHA) | CHANGE REPLICATION SOURCE TO |
Default. Replicas can lag. |
| Semi-synchronous | No acknowledged-commit loss if 1+ replica ACKs | Manual or external | rpl_semi_sync_source / rpl_semi_sync_replica plugins |
Falls back to async on timeout. |
| Group Replication | Certified, virtually synchronous. Consistency level set per session. | Automatic primary election | GR plugin | Majority quorum. Single-primary (default) or multi-primary. |
| InnoDB Cluster | As Group Replication | Automatic, client routing through MySQL Router | MySQL Shell AdminAPI + GR + Router | Oracle's recommended HA stack. Read replicas since 8.1. |
| InnoDB ReplicaSet | Eventual (async) | Manual switchover or failover through Shell | MySQL Shell + Router | Simple primary with replicas. |
| InnoDB ClusterSet | Async between clusters | Manual or emergency failover to a replica cluster | MySQL Shell + Router | Multi-region DR (8.0.27+). |
| NDB Cluster | Synchronous (2PC) | Automatic | ndbd/ndbmtd, ndb_mgmd |
Separate product line with its own engine. |
Group Replication Requirements¶
- InnoDB tables only, each with a primary key (or a non-null unique key).
gtid_mode=ON,enforce_gtid_consistency=ON.- Binary logging on with
log_replica_updates=ON(defaults in 8.0+). Row-based logging. - Unique
server_id.binlog_checksumcan be CRC32 since 8.0.21. - With the
MYSQLcommunication stack (default since 26.7), the recovery account needs theGROUP_REPLICATION_STREAMprivilege, and GR traffic uses normal server TLS settings. transaction_write_set_extractionno longer exists in 8.4+. Write-set extraction is always XXHASH64.
Authentication Plugins¶
| Plugin | Algorithm | Status | Notes |
|---|---|---|---|
caching_sha2_password |
SHA-256, salted, server-side cache | Default since 8.0 | First login needs TLS, a Unix socket, or RSA key exchange. |
mysql_native_password |
SHA-1 | Deprecated 8.0.34, disabled by default 8.4, removed 9.0 | Enable on 8.4 only with --mysql-native-password=ON. |
sha256_password |
SHA-256 | Deprecated since 8.0.16 | Still present in current source. Use caching_sha2_password. |
auth_socket |
OS peer UID over Unix socket | Community | Local admin logins without a password. |
authentication_ldap_simple / authentication_ldap_sasl |
LDAP bind / SASL | Enterprise | AD / LDAP integration. |
authentication_pam |
PAM | Enterprise | OS PAM stack. |
authentication_kerberos |
Kerberos | Enterprise | 8.0.26+. |
authentication_webauthn |
FIDO2 / WebAuthn | Enterprise | Replaced authentication_fido (removed in 8.4). |
| OpenID Connect | OIDC tokens | Enterprise, new in 9.7 | Announced with 9.7 LTS. |
Privilege Levels¶
| Level | Example privileges |
|---|---|
Global (*.*) |
CREATE USER, PROCESS, RELOAD, SHUTDOWN, REPLICATION SLAVE, dynamic privileges such as SYSTEM_VARIABLES_ADMIN, BINLOG_ADMIN, CONNECTION_ADMIN |
Database (db.*) |
CREATE, DROP, EVENT, CREATE ROUTINE, GRANT OPTION |
Table (db.table) |
SELECT, INSERT, UPDATE, DELETE, ALTER, INDEX, TRIGGER |
Column (db.table(col)) |
SELECT, INSERT, UPDATE, REFERENCES |
Routine (db.routine) |
EXECUTE, ALTER ROUTINE |
Avoid SUPER
SUPER is deprecated. Grant the specific dynamic privilege (for example BINLOG_ADMIN or REPLICATION_SLAVE_ADMIN) instead.
validate_password Component Variables¶
| Variable | Default | Purpose |
|---|---|---|
validate_password.policy |
MEDIUM | LOW = length only. MEDIUM adds digits, mixed case and special characters. STRONG adds a dictionary check. |
validate_password.length |
8 | Minimum length. |
validate_password.mixed_case_count |
1 | Minimum upper and lower case characters. |
validate_password.number_count |
1 | Minimum digits. |
validate_password.special_char_count |
1 | Minimum special characters. |
Keyring Options (Encryption at Rest)¶
| Keyring | Type | Edition | Notes |
|---|---|---|---|
component_keyring_file |
Component | Community | Replaces the keyring_file plugin (removed in 8.4). Configured through a manifest and a JSON config file. |
component_keyring_encrypted_file |
Component | Enterprise | Password-protected key file. |
component_keyring_oci |
Component | Enterprise | OCI Vault. |
component_keyring_hashicorp |
Component | Enterprise | HashiCorp Vault (component form as of 8.4, unverified). |
component_keyring_aws |
Component | Enterprise | AWS KMS (component form as of 8.4, unverified). |
keyring_okv |
Plugin | Enterprise | Oracle Key Vault (KMIP). |
Verify keyring availability for your version
Oracle moved keyrings from plugins to components between 8.0 and 8.4. The Community source tree for 8.4 contains components/keyrings/keyring_file and no plugin/keyring. Check the keyring chapter of your version's manual before planning Enterprise keyrings.
Security Hardening Checklist¶
Production security checklist
- Run
mysql_secure_installation(or the equivalent SQL) after initialization: remove anonymous accounts and thetestdatabase. - Keep
caching_sha2_passwordfor every account. Migrate anymysql_native_passwordaccount before moving to 9.x. - Set
require_secure_transport=ON. Use TLS 1.2 or 1.3 only (TLS 1.0/1.1 were removed in 8.0.28). - Use
REQUIRE X509(orREQUIRE SUBJECT) for admin and replication accounts. - Enable the
validate_passwordcomponent at MEDIUM or STRONG. - Use a keyring component and
ENCRYPTION='Y'for tables with sensitive data. Enable redo and undo log encryption. - Grant least privilege. Avoid
SUPER,GRANT OPTIONand global*.*grants for application users. - Keep
local_infile=OFFand setsecure_file_privto a dedicated directory (orNULL). - Enable audit logging for regulated workloads (Enterprise Audit, or Percona / MariaDB audit plugins).
- Rotate replication credentials and TLS certificates. Rotate the InnoDB master key (
ALTER INSTANCE ROTATE INNODB MASTER KEY). - Stay on a supported series: 8.4 LTS, 9.7 LTS, or the current Innovation release.
Benchmarks and Capacity Figures¶
Unsourced performance data
Do not plan capacity from these numbers. They were estimated from vendor documentation, community benchmarks and engineering judgment. They are not controlled benchmarks: hardware, software versions and test method were not recorded. Run your own sysbench or workload replay for capacity planning.
sysbench (rough guidance)¶
| Hardware | Threads | Read QPS | Write QPS | Read/Write QPS |
|---|---|---|---|---|
| 4 vCPU, 16 GiB | 16 | 25,000 | 5,000 | 15,000 |
| 8 vCPU, 32 GiB | 32 | 60,000 | 12,000 | 35,000 |
| 16 vCPU, 64 GiB | 64 | 120,000 | 25,000 | 70,000 |
Buffer Pool Efficiency (rough guidance)¶
| Pool size vs data | Read hit ratio | Random I/O |
|---|---|---|
| Pool > data | > 99.9% | Minimal |
| Pool = 50% of data | 95 to 99% | Moderate |
| Pool = 10% of data | 60 to 80% | Heavy |
Group Replication (rough guidance)¶
| Metric | 3 nodes | 5 nodes | 9 nodes |
|---|---|---|---|
| Certification latency | < 1 ms | 1 to 2 ms | 2 to 5 ms |
| Write throughput vs standalone | about 90% | about 80% | about 70% |
| Failover time | 5 to 30 s | 5 to 30 s | 10 to 60 s |
Practical Scale Guidance¶
| Dimension | Guidance | Notes |
|---|---|---|
| Table size | Up to about 1 TB is routine | Consider partitioning or archiving well before the 64 TiB tablespace limit |
| Concurrent connections | Hundreds to low thousands per instance | Hard cap 100,000. Use pooling (ProxySQL, Router) or the Thread Pool plugin. |
| Point-read QPS | 100k+ on large instances | Depends on working set vs RAM |
Sources¶
- MySQL 8.4 Reference Manual
- MySQL 9.7 Reference Manual: Innovation and LTS
- MySQL 26.7 What Is New
- Changes in MySQL 26.7.0 (2026-07-28)
- MySQL 9.7 Upgrade Paths
- MySQL 8.4 Native Pluggable Authentication
- InnoDB Limits (8.4)
- endoflife.date: MySQL
- Percona Server 8.4: breaking changes
- Percona Server 8.4: defaults and tuning
- mysql/mysql-server on GitHub