v4.0.11
Pre-releaseProxySQL 4.0.11 Release Notes
Release date: 2026-08-27
ProxySQL 4.0.11 is the Plugin Chassis / AI-tier release. It contains every
Stable 3.0.11 and Innovative 3.1.11 change, and adds a concentrated reliability
update for the GenAI plugin, MCP endpoints, RAG and vector tooling, runtime
configuration reloads, and the shared TSDB metrics store.
This release is primarily about making the plugin ecosystem predictable under
real operational pressure. Fresh installations receive a complete set of MCP
and GenAI defaults, existing installations keep their configured values, live
reloads coordinate with active tool calls, and shutdown waits for plugin client
threads before unloading shared state. Authentication and readiness checks now
follow the same MCP endpoint contract, while statistics and metric discovery no
longer race with configuration or TSDB activity.
Why upgrade
- A fresh plugin database receives every missing
mcp-*andgenai-*default,
so valid settings such asmcp-enabledcan be changed immediately. - Existing operator values are preserved during startup seeding and runtime
reload; defaults fill gaps rather than resetting the configuration. - MCP endpoints consistently require their configured bearer token, including
health/readiness probes used by automation. LOAD MCP VARIABLES TO RUNTIMEandLOAD GENAI VARIABLES TO RUNTIMEreplace
shared dependencies safely while Admin, status, query-hook, MCP AI, and RAG
work may be active.- Plugin teardown drains client threads before destroying their modules,
reducing shutdown and unload races. - TSDB metric discovery, ingestion, and downsampling use synchronized access to
the shared SQLite connection and tolerate transient locks.
Before upgrading
mcp-enabledremains disabled by default. Startup creates missing rows but
does not silently enable the listener or overwrite an existing value.- Review all endpoint authentication variables before enabling MCP. An endpoint
whose correspondingmcp-*_endpoint_authvalue is empty refuses requests;
this is a fail-closed security policy, not an anonymous mode. - Readiness clients must send the same bearer authentication required by the
endpoint they probe. Update external health checks that previously assumed an
unauthenticated request. - Runtime reloads are safer, but they are still configuration changes. Validate
the values inglobal_variables, load the intended variable family, and
verify the runtime view before persisting to disk. - ProxySQL 4.0.11 inherits the 3.1 authentication changes. In particular, an
existingmysql_users.attributesvalue of"require_x509": trueis enforced
in this tier even though Stable 3.0.x ignores it.
Complete defaults without destroying operator configuration
The GenAI plugin reads its settings from main.global_variables. On a fresh or
partially upgraded database, missing canonical rows could leave the plugin only
partly initialized: a valid SET mcp-enabled=true might be rejected because the
runtime did not know the variable, or the runtime projection could contain an
incomplete configuration.
ProxySQL 4.0.11 collects the canonical defaults from the MCP and GenAI runtime
handlers and transactionally inserts only the rows that are missing. Existing
values win. If seeding fails, the transaction rolls back rather than leaving a
half-populated configuration. The complete MCP set is then validated and
published as one runtime snapshot, so readers do not observe a mixture of old
and new values.
Operators can inspect the stored configuration before and after an upgrade with:
SELECT variable_name, variable_value
FROM global_variables
WHERE variable_name LIKE 'mcp-%'
OR variable_name LIKE 'genai-%'
ORDER BY variable_name;The same preservation rule applies to the LLM cache setting and other GenAI
runtime values: reloads use the operator's current configuration rather than
reverting a working value to an internal default. (#6107)
Runtime reloads coordinate with active consumers
MCP, RAG, AI tools, query hooks, status collection, and Admin commands share
runtime objects. Replacing those objects while another thread was still using
them could expose stale pointers, mismatched variables, or an inconsistent
combination of old and new dependencies.
The reload path now quiesces shared consumers before replacing their runtime
dependencies. It republishes a complete variable snapshot, refreshes the RAG
and AI tool dependencies, and only then resumes normal work. This applies to
the standard Admin commands:
LOAD MCP VARIABLES TO RUNTIME;
LOAD GENAI VARIABLES TO RUNTIME;The corresponding FROM DISK, FROM CONFIG, and save-to-memory flows use the
same ownership boundaries, so configuration round-tripping no longer leaves the
running plugin with stale values. The listener is recreated only when relevant
settings such as enablement, port, or TLS mode require it; otherwise the active
server is retained. (#6107)
Safer MCP authentication and health checks
Each MCP endpoint has a corresponding bearer-authentication variable. ProxySQL
now applies that contract consistently to real tool calls, test clients, and
readiness checks. If a token is empty, the endpoint refuses the request and logs
which mcp-<endpoint>_endpoint_auth setting must be configured. This avoids the
ambiguous state where an enabled endpoint appears healthy but is unintentionally
unauthenticated.
For operators, the practical change is that monitoring must behave like a real
client: use HTTPS verification as configured, supply the correct bearer token,
and honor bounded request timeouts. A readiness failure can now indicate missing
authentication rather than a dead listener, so health-check diagnostics should
retain the HTTP response and ProxySQL log message. (#6107)
Predictable plugin shutdown and live operation
Plugin unload and process shutdown now drain client threads before module
destruction. Shared AI/RAG bridges are detached in an ordered sequence, and MCP
workers stop using a dependency before it is replaced or freed. This prevents a
late client, status query, or query hook from observing a partially destroyed
runtime.
The PostgreSQL processlist snapshot exposed to MCP is now bounded, avoiding an
unlimited copy when a busy proxy has many frontend sessions. Discovery-schema
resources are released on all relevant paths, closing leaks that became visible
during long-running sanitizer tests. Statistics tests and runtime counters no
longer depend on execution order or mutable state left by a previous operation.
(#6107)
TSDB and metric discovery no longer race
Metric ingestion, MCP/GenAI discovery, statistics queries, and hourly
downsampling all touch the TSDB SQLite database. Previously, these callers could
use the shared connection concurrently. A transient SQLITE_BUSY, discovery
request, or hour rollover could therefore interfere with another operation and,
in the worst case, terminate ProxySQL.
Access is now serialized with the same pthread-backed lock across every shared
caller, including REST metric discovery. Hour rollover and downsampling happen
inside that coordinated lifecycle, and a temporary SQLite lock is handled
without aborting the daemon. The result is especially important for deployments
where monitoring systems query discovery endpoints while metrics are being
written continuously. (#6004, #6107)
Innovative-tier capabilities included in 4.0.11
Because the 4.0 tier includes the 3.1 feature set, it also receives the complete
Innovative 3.1.11 authentication and observability update:
- non-TLS
caching_sha2_passwordfull authentication for clients that request
ProxySQL's RSA public key or pin it locally, with validated key generation and
rotation-safe snapshots (#6017, #6032); - frontend MariaDB
client_ed25519authentication, including
COM_CHANGE_USER, plus backended25519support when a cleartext upstream
credential is available (#6033); - per-user
{"require_x509": true}frontend certificate policy, enforced before
password or row-backed pass-through authentication (#6028); - independent Admin/Stats and frontend credential scopes, allowing the same
username to carry different credentials on different interfaces (#5993); - accurate MySQL and PostgreSQL FFTO accounting for deprecated EOF, multi-result
responses, prepared-statement fetches, and pipelined extended queries (#6047,
#6021).
Stable improvements included in 4.0.11
ProxySQL 4.0.11 also carries every Stable 3.0.11 improvement, including:
- opt-in literal MySQL user-variable tracking and replay across multiplexed
backends (#6043); - opt-in endpoint-wide GTID learning from successful OK packets (#6035);
- hardened authentication response bounds and OpenSSL handshake randomness
(#5998, #6104); - safe
--idle-threadsshutdown and single-flight soft-TTL cache refreshes
(#6087, #6015); - MySQL/Admin/SQLite3 compatibility fixes and visible client connection
attributes (#5994, #6079, #6076, #5978, #6077); - cleanup of the temporary PostgreSQL termination connection and the PostgreSQL
user-synchronization Scheduler sample (#6130, #6045); - portable Linux tarballs with bundled OpenSSL and FreeBSD portability work
(#6105, #6030).
Release commit: 7c91137a465454dfc1a62b56f8c188c1ce59c130
SHA256s:
62919209cda56eb115005ed1cf4471ada886377d7a38d3559be372db5c134807 proxysql-4.0.11-1-almalinux10-clang.x86_64.rpm
b979805037d75481b284ab61bf1173135c5d51fc73424062edc9786e73ca75d0 proxysql-4.0.11-1-almalinux10.aarch64.rpm
e6b97047b640929a4280849563bcca31d435f3c3bcc1cebd822aac9515ff4220 proxysql-4.0.11-1-almalinux10.x86_64.rpm
9ac4fc56b102ef532a34e797c5517b002335400455efa2c00e906d52361037db proxysql-4.0.11-1-almalinux9-clang.x86_64.rpm
8a0dcc86615bce5bbb4c5688d95bc709ea05c3262bedc3e247fbe30d3d572a38 proxysql-4.0.11-1-almalinux9.aarch64.rpm
431e21cdf5509375874d62d71b3e314692e99e49679a6bb4386d6fcd5e0c35d2 proxysql-4.0.11-1-almalinux9.x86_64.rpm
0c548739c5676d4766161504984b866f36ea238f964ecd5cc256fb76fffa2c2f proxysql-4.0.11-1-centos10-clang.x86_64.rpm
209271e7907c80d55cc3ea186fd23c1ad16b3a9825e9fa4f2302bf570a64ded9 proxysql-4.0.11-1-centos10.aarch64.rpm
f9560034a2a2fc588bc7bc078b521c23ae90120b2a98680b377fbae83ffa73e0 proxysql-4.0.11-1-centos10.x86_64.rpm
0a418e75616a59bc7d4f3a26294b0dcdd5174e5825765cd7c357e1ffcfe2a646 proxysql-4.0.11-1-centos9-clang.x86_64.rpm
eac6e2e9092b746a3e47f84f7af100a3e8140d1636a5816ae89a1727d855b663 proxysql-4.0.11-1-centos9.aarch64.rpm
0ee5a7f9101994b5c429e00f03cae3effa512e8df5e7a9c4c5623bb65d7993ef proxysql-4.0.11-1-centos9.x86_64.rpm
59a28d20d8d8f68df8d9359e91853412556ab1cc1d7a71acf0a2f4b0bfcafda4 proxysql-4.0.11-1-dbg-almalinux10.x86_64.rpm
504e7820be8f3f3933cc6880d764967c140d46a1263484beae52d01120f5805c proxysql-4.0.11-1-dbg-almalinux9.x86_64.rpm
955d27bd55fa424d2422739bef7f6a7f750a6b9e195590ec3cbe66b85a8e93b3 proxysql-4.0.11-1-dbg-centos10.x86_64.rpm
b409e42ad9c45744ecbd30a9f4fc4c3422683fd0e561ec39b5dc2bab4d75b856 proxysql-4.0.11-1-dbg-centos9.x86_64.rpm
f1c545767ad0121a2ed45720b25ecf71ae9494f4835dbf679c0a6cbcd2c25ef4 proxysql-4.0.11-1-dbg-fedora42.x86_64.rpm
446aaa29c9274bc7f509f4214276d4f3809a33620d2fac30609facc5eaef92d8 proxysql-4.0.11-1-dbg-fedora43.x86_64.rpm
901036bb33ae11db6ecd20f1b5effa0c4ac8b8a492069965ec6eddce6dbab50f proxysql-4.0.11-1-dbg-fedora44.x86_64.rpm
724ad787507f48dac5ba9b8b4807b170731528dc284c403a8f504bd28fa7a983 proxysql-4.0.11-1-dbg-opensuse16.x86_64.rpm
9fa19452eee1cb7669500422a234ff913874463071e220a28dfad50f20e81147 proxysql-4.0.11-1-fedora42-clang.x86_64.rpm
a193b033ecdb6c56cdb6a7c964c95c69d91f2318b614ff0570537d267cf50b0e proxysql-4.0.11-1-fedora42.aarch64.rpm
c7ff1b90282faeed7a649766be63f61854b7dfaf8f696a5b32f5dc293af77529 proxysql-4.0.11-1-fedora42.x86_64.rpm
9b4237f6aa9bd1cdd73029a6d70382fd0c5d7461d16f25352dc90c38eed2af0e proxysql-4.0.11-1-fedora43-clang.x86_64.rpm
5daa2b0d5443357346490213e5ed4e69ef838bbcf988bb16f8bb84451a3074d5 proxysql-4.0.11-1-fedora43.aarch64.rpm
fbed89a952d3b40fd0e5d12009a607406017813711a7b92615dc0b41357aeb51 proxysql-4.0.11-1-fedora43.x86_64.rpm
db051e008dc143f70a7868972d3093994697b08a6e247d79b902bc37f8e1d221 proxysql-4.0.11-1-fedora44-clang.x86_64.rpm
f262a351715d6864b8a586b9ad6ab1e34092e67f778a022dbf522654fd087f36 proxysql-4.0.11-1-fedora44.aarch64.rpm
f11248c94bd283f9a426acd0a0fadff337debba23b6c79ef862aaa2c5c1ceed0 proxysql-4.0.11-1-fedora44.x86_64.rpm
700977b8786e1b9959b335c80386824de746f7f2b489f04663f78ff41f8e48de proxysql-4.0.11-1-opensuse16-clang.x86_64.rpm
92f4bbeab0456569cf47678be74dee15c494fdf5c781f039bb8e3953e0e36b26 proxysql-4.0.11-1-opensuse16.aarch64.rpm
4f29d1172232aeff44a8e9bb8724d61e04064b1ed2ac33b3690fa342b5e415d1 proxysql-4.0.11-1-opensuse16.x86_64.rpm
635f0eb0385c61b205562b9226aa64abb0a3ebd0286c66748ffe4f88a0aa65cb proxysql-4.0.11-linux-amd64.tar.gz
c9c12c4f0a4ac7c7e01cde06a37a225248bc688fea145d9360e2d1878901be95 proxysql-4.0.11-linux-amd64.tar.gz.asc
c27874e0eda91088b6641a0c985d56a5ff077babdca206c02132d39fa2cda4c2 proxysql-4.0.11-linux-amd64.tar.gz.sha256
0487e1b7ceb6c49fff15e66dd4a8c4199dab1b67edc2e9b7f0a9ee666a4a767d proxysql-4.0.11-linux-arm64.tar.gz
bf55dc58bbfebe578b9980bf5e4932f7b3fb5fba2dc9a81b3efdf010f4f572c8 proxysql-4.0.11-linux-arm64.tar.gz.asc
dc04ba02cfad921ef10118720771ab347384b5d0667ed69fc80012ec5b38a8d7 proxysql-4.0.11-linux-arm64.tar.gz.sha256
87c56779b38a1bc78bf9eb65676f749720a6dbdaa38bf026f0beeb2827c2b4d9 proxysql-4.0.11.id-hash
2ada3c642ceac4879ab128b30884a1b6a9b78babe3441d6fddd7a7694dc99a85 proxysql_4.0.11-dbg-debian12_amd64.deb
6aad29ae856dc6db14bb73d0205657209b4728f9d0a5cb82e19ff41ab34b7523 proxysql_4.0.11-dbg-debian13_amd64.deb
823b0be5f125d00bbaa3ff6d40c7581a00ed2ed7511dfd67c952783dc516e824 proxysql_4.0.11-dbg-ubuntu22_amd64.deb
e7b78acb0d98032c33b6f5550a068764d94fc9eb5e2fade00c1bff34f1968918 proxysql_4.0.11-dbg-ubuntu24_amd64.deb
c2ec78a3b58b847e6f13be3207732b36c9d1482ad3ff98392bbe9250557507f3 proxysql_4.0.11-debian12-clang_amd64.deb
972a6741a0a70a6a3093ec51c5d7ded41fb3950a33e2cca55ec954d2a6b19e46 proxysql_4.0.11-debian12_amd64.deb
a11bf0b3b47b05c6de46611f719f09c41e4362ff46a63f817063cfa492fa4e72 proxysql_4.0.11-debian12_arm64.deb
c98087c682f14dbf78535916cc21e22aad8b105609c9231b2fa2c77e51eb5de4 proxysql_4.0.11-debian13-clang_amd64.deb
37d443e250f2c0864fe8205921eec78f5f0e84442cf7b4a061d9fcf6d13e01cd proxysql_4.0.11-debian13_amd64.deb
ac46114ddf8844ad4fa3305b274df98b99efa6cea5220965c85072bf65e1cc40 proxysql_4.0.11-debian13_arm64.deb
36e0540b4b992e9e6e81e6192e75ba295e7f1bc11c7c69f1e497f0cd1374fc27 proxysql_4.0.11-ubuntu22-clang_amd64.deb
cac1d6bbb44476eda3b4ff30b9c5ada4cff485cf94b6f684a473177de0b07ad8 proxysql_4.0.11-ubuntu22_amd64.deb
8eb811cf271655b6fd11a0f492f7ff69aeb4fc9b5ab76a03a961a30730697214 proxysql_4.0.11-ubuntu22_arm64.deb
8f5d90a0fd68471d7b2b1505cc9c483fc69cabdc8e3458f2c485b0bf09e55f8f proxysql_4.0.11-ubuntu24-clang_amd64.deb
ca9b051bf7495f05a9f7199cb711f715576836f10871561434e5bebeea79c108 proxysql_4.0.11-ubuntu24_amd64.deb
cc057214f60d3b89f968a21c71994e7a42a4abc7a7b8187c93a80dd7444fd49a proxysql_4.0.11-ubuntu24_arm64.deb