Skip to content

v3.0.1

Latest
Compare
Choose a tag to compare
@mirostauder mirostauder released this 13 May 15:08
2c26a42

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 portal
    • 6133 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 via FAST 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 and history_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 on stats database: This enhancement ensures that VACUUM 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 on SET 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 than 255: When collation_ids are bigger than 255 they can’t be set in the handshake, in this case ProxySQL will issue a SET 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 for fast-forward connections - #4819 .
  • Fixed issue with mysql cli STATUS command , where username and schemaname 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 and mirror_hostgroup in query_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