Skip to content

Rate this page
Thanks for your feedback
Thank you! The feedback has been submitted.

Get free database assistance or contact our experts for personalized support.

Percona build of ProxySQL 3.0.6 and ProxySQL admin tools (2026-04-22)

Download Percona’s build of ProxySQL
Install
View the GitHub repository for Percona’s build of ProxySQL

ProxySQL is a high-performance proxy for MySQL and MySQL-compatible database servers such as Percona Server for MySQL and MariaDB. It acts as an intermediary for client requests seeking resources from the database. ProxySQL was created for the database administrator to solve complex replication topology issues. Percona distributes ProxySQL as a repackaged version of the upstream release, without making any code modifications.

You can download the original ProxySQL from GitHub. The ProxySQL documentation provides information on installing and running ProxySQL.

The ProxySQL Admin (proxysql-admin) tool simplifies the configuration of Percona XtraDB Cluster nodes with ProxySQL. ProxySQL Admin supports Percona XtraDB Cluster without custom scripts.

The pxc_scheduler_handler tool can automatically perform a failover due to node failures, service degradation, or maintenance. This tool has features and capabilities that differ from the ProxySQL admin tool, so you should not use options from one tool in the other, as that may cause unintended results.

Release highlights

This release introduces Percona’s build of ProxySQL 3.0.6, incorporating the latest upstream features and improvements.

Instead of releasing a Percona build of ProxySQL 3.0.2, 3.0.3, 3.0.4, and 3.0.5 we are skipping to 3.0.6. This build includes all enhancements and bug fixes from ProxySQL 3.0.2, ProxySQL 3.0.3, ProxySQL 3.0.4, ProxySQL 3.0.5, and ProxySQL 3.0.6.

From ProxySQL 3.0.2

  • Introduced support for MySQL Group Replication (for MySQL 8.4 and 9.x), widening ProxySQL’s high-availability and clustering compatibility.

  • Fixed a memory leak in the global MySQL statistics subsystem (stats_mysql_global), improving stability over long uptimes.

  • Prevented an integer-overflow condition in the SQLite3_memory_bytes field from stats_mysql_global, enhancing robustness of memory/statistics tracking.

  • Corrected handling of binary logging for prepared statements that have zero parameters — ensuring proper log behavior even for empty-parameter statements.

From ProxySQL 3.0.3

  • Resolved a “use-after-free” / memory-safety bug triggered by SHOW PROCESSLIST under MySQL mode, preventing potential crashes or corruption during session-inspection commands.

  • Fixed a “heap-after-use” issue involving internal sessions and SHOW PROCESSLIST, further strengthening memory safety and stability in monitoring/administrative use cases.

  • Added validation for LOAD FROM CONFIG for mysql_users, pgsql_users, mysql_servers, pgsql_servers, and proxysql_servers, checking for duplicates and mandatory fields and returning descriptive error messages.

  • Added the PROXYSQL SET CONFIG FILE admin command to dynamically change the configuration file path.

From ProxySQL 3.0.4

  • Improved MySQL protocol robustness with special handling for unexpected COM_PING packets, preventing potential connection issues and improving overall protocol stability.

  • Fixed incorrect behavior of the cache_empty_result field in query rules when set to “0”. Previously, it prevented caching of any resultsets regardless of row count. Now, it correctly caches non-empty resultsets while skipping empty resultsets, aligning with the documented behavior and improving cache efficiency.

  • Corrected affected rows reporting for DDL queries in the ProxySQL Admin interface. DDL queries now correctly return 0 affected rows instead of showing the previous DML’s count, providing accurate metadata to administrative tools and scripts.

  • Fixed artificially high ping latency in MySQL backend monitoring caused by inefficient task dispatching. The fix introduces batching (batches of 30) with poll() calls between batches and reduces the monitor ping poll() timeout from 100ms to 10ms, providing more responsive monitoring with accurate latency measurements.

  • Fixed a critical SQL injection vulnerability in configuration parsing by replacing sprintf-based SQL query construction with prepared statements using bound parameters. The fix also handles automatic prefix stripping for mysql_variables, pgsql_variables, and admin_variables config parsing, preventing SQL injection attacks when users mistakenly include module prefixes (e.g., “mysql-“) in variable names.

  • Refactored prepared statement cache design with a lock-free hot path for prepared statement cache operations, reducing contention in high-concurrency MySQL environments. The redesign optimizes transaction command parsing to avoid unnecessary tokenization and replaces std::string with char[] to eliminate heap allocation in hot paths, significantly improving performance for high-concurrency workloads.

  • Improved fast forward replication validation for MySQL 8.0+ clients with enhanced CLIENT_DEPRECATE_EOF capability flag handling, preventing protocol mismatches and connection issues in MySQL replication scenarios.

  • Refactored GTID reconnect logic to prevent events_count from being reset during reconnection attempts, preserving MySQL replication state and reducing unnecessary replication restarts, improving replication stability during network interruptions.

From ProxySQL 3.0.5

  • Added mysql-select_version_forwarding global variable to restore SQLAlchemy and ORM compatibility. When enabled, SELECT @@version and SELECT VERSION() queries are forwarded to backend MySQL servers instead of returning ProxySQL’s internal version, fixing the behavior introduced in v3.0.4.

  • Improved MySQL SET statement parser to handle complex timezone configurations, including three-component IANA names (for example, America/Argentina/Buenos_Aires) and hyphenated timezone names, resolving parsing errors for SET time_zone statements with modern timezone formats.

From ProxySQL 3.0.6

  • Added a protocol label to Prometheus metrics so monitoring can distinguish MySQL and PostgreSQL connection pools, query counters, and resource usage in hybrid environments.

  • Added the PROXYSQL FLUSH STATS administrative command to reset internal statistics tables, useful for performance benchmarking and troubleshooting.

  • Fixed a use-after-free race in session cleanup during COM_CHANGE_USER timeout scenarios and corrected an off-by-one error in connection cleanup loops that could remove the wrong connection from the pool.

  • Implemented a more robust, coordinated shutdown sequence for the Admin interface, eliminating race conditions during PROXYSQL KILL and ensuring internal threads are gracefully terminated.

  • Fixed multiple uninitialized memory issues in the query parser and connection management modules, improving stability under MySQL workloads.

No changes

The ProxySQL Admin tool and the pxc_scheduler_handler tool within Percona’s Build of ProxySQL 3.0.6 have not been updated and are the same as in the previous Percona release.

Additional resources


Last update: 2026-04-22