ProxySQL v3.0.1 Release Notes
This release of ProxySQL v3.0.1 marks a significant step in our support for multiple database backends. In this version, the MySQL module is considered stable, building upon years of production use and refinement. The PostgreSQL module is still in beta, and while it includes substantial new features and improvements in this release, users should be aware that it is still undergoing active development and testing.
To make navigating these release notes easier, the changes are organized into three main sections:
- The PostgreSQL section details features, enhancements, and fixes specifically related to the PostgreSQL backend module.
- The MySQL section outlines changes specific to the MySQL backend module.
- The Common section covers improvements, features, and fixes that apply to both the MySQL and PostgreSQL modules, or are related to the core ProxySQL architecture and not tied to a specific database backend.
Major Features
PostgreSQL
In 3.0.0:
- Implemented support for PostgreSQL, enabling ProxySQL to act as a proxy for both MySQL and PostgreSQL databases. The default ports for PostgreSQL protocol are:
6132
for admin portal6133
for PostgreSQL traffic
- Supported authentication methods:
- Plain Text
- MD5
- SCRAM-SHA-256
- Introduced PostgreSQL-specific configuration options and tables.
- SSL connection support for both PostgreSQL frontend and backend connections.
- Multiplexing support for PostgreSQL.
- Enabled connection reuse from the connection pool.
- Added support for executing multiple statements within a single query.
In 3.0.1:
- Added parameter/variable tracking: This change significantly improves multiplexing capabilities allowing for a better connection reuse - #4799.
- Backend monitoring support, capable handling a larger number of backend servers with a small set of worker threads, supporting the following checks - #4726:
- Connect: Availability check and assess connection latency.
- Ping: Responsiveness check with automatic
SHUNNING
and latency tracking. - ReadOnly: Capable of server placement (via
pgsql_replication_hostgroups
) and automatic failover detection.
- Support for tracking variable state through transactions and savepoints (
SAVEPOINT
/ROLLBACK
) - #4929. - Improved support for connection-level parameters: All connection parameters supported by PostgreSQL are now supported by ProxySQL, since parameter validation is now delegated to the server itself - #4899.
- Added support for Notice and Warning messages. Resultsets containing these packets can be cached using the Query Cache - #4770.
- Added support for
COPY … FROM STDIN
(supported viaFAST FORWARD
) - #4762, #4874.
MySQL
- Added dual-password support: ProxySQL now allows the use of two passwords to facilitate password rotation, in the same fashion as MySQL. For more information see official doc.
- Added Enhanced Event and Query Logging , ported from 2.7.2
- Introduced a powerful event logging and analysis feature with real-time insights into application behavior and database performance. It utilizes a circular buffer and SQLite databases (in-memory and on-disk) to optimize data retention and ensure high performance. This feature is configurable and ensures seamless operation without impacting real-time traffic.
- Queries now can be logged in real time and available in
stats_mysql_query_events
andhistory_mysql_query_events
. - MySQL Logger metrics are now exported through
stats_mysql_global
and Prometheus exporter. - More information can be found in the official documentation.
- Logging Parameters of Prepared Statements #4895 and #4922
- ProxySQL now supports logging the parameters of prepared statements. This enhancement improves observability and debugging by including the actual values bound to parameter placeholders in the log output. The feature is currently available for MySQL queries only, and logging is written to event log files.
- Logging of parameters is available in both binary and JSON formats
- This feature is controlled by global variable
mysql-eventslog_stmt_parameters
, disabled by default
- New eventlog event
PROXYSQL_METADATA
#4922- When logging queries in eventlog in binary format, a new event is added when a new file is created. This event contains metadata (currently only ProxySQL version) that allows identifying the format version.
- DNS cache enhancement: Better distribution of DNS resolution attempts to reduce the likelihood of collisions and simultaneous expirations. This prevents sudden bursts that increase the resolution queue size - #4745.
Common
- Use system OpenSSL library: ProxySQL now doesn’t use a statically linked version of OpenSSL, instead the library is now dynamically linked. Additionally, warning messages have been added to the error log when problematic OpenSSL versions are detected - #4740.
- To improve the performance of the Admin module, it avoids unnecessary
VACUUM
operations onstats
database: This enhancement ensures thatVACUUM
operations are only performed when a meaningful amount of memory is going to be free. It is also combined with other optimizations making the Admin interface more responsive and less CPU intensive when querying these tables - #4859.
Minor Features/Enhancements
MySQL
- Add support for specifying MySQL compression level - #4764.
- Variable
session_track_system_variables
is now a ignored for tracking - #4852. - Added support for parsing
@@session
and@@global
onSET
statements for variable tracking- #4852. - It is now possible to read
mysql_hostgroup_attributes
from config file - #4704. - Add support for
SHOW REPLICA STATUS
in MySQL versions bigger than 8.0.23 - #4908.
Common
- Make threads name optional: Introduced variable
set_thread_name
available through the config file to enable/disable the feature - #4810. - Removed support for distros that are either obsolete or do not support OpenSSL 3 - #4749.
- Centos 8
- Debian 10
- Debian 11
- Fedora 38
- Fedora 39
- Ubuntu 18
- Ubuntu 20
- Improved error handling when database file isn’t writable: ProxySQL now exits gracefully in case of permissions issues with the database file, avoiding a crashing loop - #4903.
- [For Debug release only] Improved the performance of debug logging to disk: Entries are now batched into a log buffer, reducing the number of disk operations. Buffer size isn’t configurable, but a sync can be forced via
PROXYSQL FLUSH LOGS
command - #4818.
Fixes
MySQL
- Fix setting invalid collation when
collation_id
is larger than255
: Whencollation_ids
are bigger than255
they can’t be set in the handshake, in this case ProxySQL will issue aSET NAMES … COLLATE
to prepare the backend connection - #4842 - Fix memory leak on SSL caches on auxiliary threads. This leak would affect short lived threads, like for example when ProxySQL requires to kill backend connections (
kill_query_thread
) - #4801. - Fix memory leak on monitoring connections when servers have specific SSL configuration, via
mysql_servers_ssl_params
- #4809. - Fix clients failing to verify SSL certificates when certificate chains hold more than one intermediate certificate. ProxySQL now ensures the exchange of the correct number of certificates to ensure pair verification - #4904.
- Fix crash on malformed packet (with invalid column-count) received from MySQL - #4743.
- Fix query digests for certain commends on queries of certain sizes - #4932.
- Improve
CLIENT_DEPRECATE_EOF
capability match forfast-forward
connections - #4819 . - Fixed issue with mysql cli
STATUS
command , whereusername
andschemaname
were swapped - #4914.
Common
- Fix slow query response time due to overflow in
threshold_resulset_size
- #4744. - Fix halt on
PROXYSQL RESUME
command: Resume logic was timing sensitive and could result in a halt and a crash (watchdog), the new simplified logic ensures this scenario doesn’t take place - #4758. - Fix swap between
mirror_flagOUT
andmirror_hostgroup
inquery_rules
tables (MySQL and PostgreSQL) - #4872. - Fix potential crashes when empty query is received on MySQL and PostgreSQL Admin interfaces - #4717.
Hashes
SHA256s:
c46bb356eb98339c0a7dc2f6cc8fadd2eab06a49d48d965cd36dbaadde6e9023 proxysql-3.0.1-1-almalinux8-clang.x86_64.rpm
468af5a56d69db880c0bf515a8ada1f930ed33ae8226208b6ec55b745d61d4d9 proxysql-3.0.1-1-almalinux8.aarch64.rpm
dcb1be63030b366153f4d01df4812dd6ff37e40c844878c735ccbec3223e86c8 proxysql-3.0.1-1-almalinux8.x86_64.rpm
463280154d5206d472bcae5ef6df4a066d3486d030b26907ee1ab8476e42cfac proxysql-3.0.1-1-almalinux9-clang.x86_64.rpm
da106964469744773819a8ec4e4f7a1aac773d445edf8296b4d28a7fb71955db proxysql-3.0.1-1-almalinux9.aarch64.rpm
bf5dba6668d59fc86a0beac26413ceacf2c5a2ef0184911d9f03c30e650ffddb proxysql-3.0.1-1-almalinux9.x86_64.rpm
2640d3cfe241f29ea98f44bb414966460a2c303e39092ef757e62792acf74270 proxysql-3.0.1-1-centos9-clang.x86_64.rpm
e92dd940c0c5f7699ad84394428fa75546298d912fa441fb1b1eb6e28849cafc proxysql-3.0.1-1-centos9.aarch64.rpm
a5f2c064089311811b4b7a4dc62f1fc3dfe93912db77d9ffe31bbcd502ddfdad proxysql-3.0.1-1-centos9.x86_64.rpm
8223217e76d2f53857bde645551657a36b987ab24411928c40815bd89cf3fbb2 proxysql-3.0.1-1-dbg-almalinux8.x86_64.rpm
bf971a1bc1d9eab0a5e180611cc8c422da2fceef102f0253802dc77c1eb2d69d proxysql-3.0.1-1-dbg-almalinux9.x86_64.rpm
14cce1b6390ce9157cc305e19b71c92c877c2a6e77243d4bf4486caa5b2da222 proxysql-3.0.1-1-dbg-centos9.x86_64.rpm
52a2ed10c9e27795bf631a5c418753278023b8f5c24b1106d0312ec68a20b295 proxysql-3.0.1-1-dbg-fedora40.x86_64.rpm
a15ccf1cbfc88c4b1b4b8e9b45a387a73b11a6c4c4bc04f4251f78e5bd33deb9 proxysql-3.0.1-1-dbg-fedora41.x86_64.rpm
2161201f1de607eb9c13f579dc535d84dfb819ce01b513407d1d1e953d807e35 proxysql-3.0.1-1-dbg-opensuse15.x86_64.rpm
55497eabd81bb2b528cd9507a86d5e9553326c618844f750db16594d62a05169 proxysql-3.0.1-1-fedora40-clang.x86_64.rpm
47329079ce3638e899ec99a4d21db65c9bd800b82dba9e07d3aac377a421671c proxysql-3.0.1-1-fedora40.aarch64.rpm
ebafbcc347a5a18d82854788cd6ffe3b2060318e59028d9a77639c6fbe21315f proxysql-3.0.1-1-fedora40.x86_64.rpm
c12f00145146dae52f86ca3357585a6d1d6184ecf942c469a64359ca8b547133 proxysql-3.0.1-1-fedora41-clang.x86_64.rpm
c9f5318ee93a2b9aed82f15209ba21801d7ec3547399fd6ee15fde76909f19e1 proxysql-3.0.1-1-fedora41.aarch64.rpm
086349e9a18279b89a9fe811de9cc4089a0f8e41583c8de9ef8283841a6d69a0 proxysql-3.0.1-1-fedora41.x86_64.rpm
031d08c48db72f27575d4b163f45d333b4ede5f81c53d9e9af0763bb32720dca proxysql-3.0.1-1-opensuse15-clang.x86_64.rpm
d3d3f5aa0854d8009968d3b45d823ee55efdfdd8a6c2dd56af30b09af37f83f2 proxysql-3.0.1-1-opensuse15.aarch64.rpm
3d8d3420070487c023bdfb70096d26a2e143bdc83c945de0a1c9077116f0f967 proxysql-3.0.1-1-opensuse15.x86_64.rpm
3741bd3a048d8b329c6d9280d577b0d57f8659cfa5a689bb768a024385da0485 proxysql-3.0.1.id-hash
e428b0e98f6657c3c2eb6e9cfd613dfcf33098478c6a85450036266c2f8ab565 proxysql_3.0.1-dbg-debian12_amd64.deb
92dbf11eab02897367cd3a01392650c5bffc7ac2d27f9c0c7fd2ad1ca3c323e6 proxysql_3.0.1-dbg-ubuntu22_amd64.deb
07d5d41997acbdc66e49a23178932b2c184cee807ad2a2618151f31693027b88 proxysql_3.0.1-dbg-ubuntu24_amd64.deb
cab85dbb4cbdac0062d6ed314b95bc437a1436d8725be1f00c76e1f3f5c0ce69 proxysql_3.0.1-debian12-clang_amd64.deb
de02bd9261755500892725033dc268fe5f67c244d512b9e3a040cdbfa0026997 proxysql_3.0.1-debian12_amd64.deb
8f2d42b55629599ae4a05f830318c70c6370422ec1170887c44c53077c02a867 proxysql_3.0.1-debian12_arm64.deb
decd0b94eaa52019b67403c793a49000803b69ddf66d4f4209e6d6d295c67d22 proxysql_3.0.1-ubuntu22-clang_amd64.deb
f860e5f4ec6c083f96145fa96d7ea5e107d9c17d72ae63a6f026f5063bc9f30e proxysql_3.0.1-ubuntu22_amd64.deb
24e473647e89d4dd8e1ecbccfc132f8cbddab08f8faddac59498a77838b260e6 proxysql_3.0.1-ubuntu22_arm64.deb
e9599d5154c898b1e83937ed004efda2a886641690064f5adb3ac62eaa496d07 proxysql_3.0.1-ubuntu24-clang_amd64.deb
adf3ab30da6a887f2a6e473dc46871228d63e646c761cc44fc74883bd25d3e40 proxysql_3.0.1-ubuntu24_amd64.deb
dea65f02a666390442dcb91484d7967ac6998ed71974a3bf11b7cb6acb326044 proxysql_3.0.1-ubuntu24_arm64.deb