JusDB
Free DB Audit
Database Engineering

ProxySQL 3.0: PostgreSQL Support and What Changed for MySQL Users

Find out which ProxySQL 3.0 release to run, what its PostgreSQL support covers, what changed for MySQL users since 2.7, and how to upgrade a node or a cluster with a rollback point.

JusDB Team
Published November 7, 2026
20 min read

ProxySQL 3.0 is the first ProxySQL series that speaks the PostgreSQL wire protocol as well as MySQL's. The current Stable release, 3.0.12, shipped on 5 November 2026, and the 2.7 series still receives security and severe-bug releases (2.7.4 on 20 October 2026). Teams searching for a "sql proxy" now ask two questions. Can ProxySQL sit in front of PostgreSQL in place of PgBouncer or Pgpool-II? And what changes for an existing MySQL deployment when it moves from 2.x to 3.0? A common first surprise is that apt-get upgrade leaves a 2.7 node on 2.7, because each series has its own package repository. This guide covers the PostgreSQL feature set as of November 2026, the MySQL-side changes, an upgrade runbook with a rollback point, and a factual comparison with PgBouncer and Pgpool-II.

TL;DR
  • Run 3.0.12 (Stable tier) in production. The 3.1.x (Innovative) and 4.0.x (AI/MCP) releases are published as GitHub pre-releases.
  • ProxySQL's release notes called the PostgreSQL module beta up to 3.0.2 (August 2025). Later Stable releases add PostgreSQL features and fixes without restating a label, and we found no GA announcement, so test it as you would new software.
  • PostgreSQL on 3.0.x: SCRAM-SHA-256, MD5 and cleartext authentication, TLS, multiplexing, pgsql_query_rules, read-only detection with pg_is_in_recovery(), lag checks, and cluster sync from 3.0.8.
  • For MySQL, the mysql_* tables, ports 6032 and 6033, and the LOAD/SAVE commands carry over. Packages need an OpenSSL 3 era distribution and the proxysql-3.0.x repository.
  • Upgrade one node at a time, copy proxysql.db while ProxySQL is stopped, and keep the 2.7 package and that copy as your rollback.

Scope and review date: November 2026. This post covers ProxySQL 2.7.x and 3.0.x (Stable tier) on Linux packages, with notes on 3.1.x and 4.0.x. Versions, defaults, table definitions, and commands were checked against the ProxySQL GitHub release notes and proxysql.com documentation on 9 November 2026. They were not run in a lab, so rehearse every step on staging first.


Which ProxySQL 3 version should you run in November 2026?

Run 3.0.12. Since 3.0.6 (March 2026), ProxySQL publishes three tiers from the same release cycle. The multi-tier announcement calls 3.0.x Stable "the gold standard for production", 3.1.x Innovative "for early adopters", and 4.0.x AI/MCP "our experimental playground". On the GitHub releases page, 3.0.12 is marked Latest and 3.1.12 and 4.0.12 are pre-releases, all dated 5 November 2026.

The 3.0.12 release notes fix eight published security advisories (four high, four medium). That is reason enough to move off older 3.0 builds. If you stay on 2.7 for now, the 2.7.4 announcement describes it as a security and severe-bug release for the "2.7 LTS series", with fixes for 15 advisories.

bash
# On each ProxySQL host
proxysql --version

Interpretation: the output starts with the build string, for example ProxySQL version 2.7.4-29-gbc3e363 for the current 2.7 release. Record it for every node before you plan the upgrade.

Some features in the 3.0 release notes are gated to the other tiers. The 3.0.11 notes say frontend RSA full authentication for caching_sha2_password, per-user X.509 policy, and frontend MariaDB ed25519 are 3.1/4.0 features. The 3.0.10 notes say mysql-passthrough_auth_enabled=true is refused on the Stable tier.

Is ProxySQL's PostgreSQL support production ready?

ProxySQL has not said so in a release note we could find. The 3.0.1 release notes (May 2025) say "the MySQL module is considered stable" and "the PostgreSQL module is still in beta". The 3.0.2 notes (August 2025) repeat that. From 3.0.3 onward, the Stable notes add PostgreSQL features and fixes without restating a status. The proxysql.com documentation describes ProxySQL as a proxy for MySQL and PostgreSQL without a beta label.

The 3.0.12 notes show how much is still settling. They fix PostgreSQL transaction recovery so "a disagreement between ProxySQL's tracker and the backend no longer aborts the process". They make prepared statements account for search_path and stop WITH HOLD cursors from leaking to another pooled session. Portal handling and LISTEN/NOTIFY through the proxy are new in 3.1.12 and 4.0.12, per the 3.0.12 announcement, so do not plan on them on 3.0.x.

Treat the PostgreSQL module as newer code than the MySQL one

Replay a capture of your real traffic through staging, including ORM prepared statements, SET and search_path changes, long transactions, and COPY. Keep a direct-to-PostgreSQL path you can switch back to.

What does ProxySQL 3.0 support for PostgreSQL?

PostgreSQL gets its own listeners and its own admin tables. The 3.0.1 notes list port 6132 for the PostgreSQL admin interface and 6133 for PostgreSQL traffic. The MySQL ports stay at 6032 and 6033. Configuration lives in pgsql_servers, pgsql_users, pgsql_query_rules, pgsql_replication_hostgroups, and pgsql_hostgroup_attributes, and you promote it with LOAD PGSQL ... TO RUNTIME.

  • Protocol: simple queries and multiple statements per query since 3.0.0. The extended query protocol (Parse, Bind, Describe, Execute) arrived in 3.0.3. COPY ... FROM STDIN works through fast-forward from 3.0.1.
  • Authentication: cleartext, MD5, and SCRAM-SHA-256. The default pgsql-authentication_method is 3, SCRAM-SHA-256. From 3.0.12, pgsql_users can hold stored SCRAM verifiers or MD5 secrets instead of cleartext passwords, with the restrictions listed in those notes.
  • TLS: frontend and backend. Per-server backend TLS settings arrived in pgsql_servers_ssl_params in 3.0.8.
  • Pooling: multiplexing and connection reuse, with tracking of session parameters, transactions, and savepoints since 3.0.1.
  • Query rules: pgsql_query_rules and pgsql_query_rules_fast_routing match on user, digest, or pattern. A PostgreSQL-specific digest tokenizer arrived in 3.0.4.
  • Monitoring: connect, ping, and read-only checks with pg_is_in_recovery() (3.0.1), and replication lag checks (3.0.6).
  • ProxySQL Cluster: peer sync of the PostgreSQL tables from 3.0.8.

One ProxySQL 3.0 layer for MySQL and PostgreSQL

Each protocol has its own port, users, query rules, and hostgroups; the monitor keeps writers and readers in the right hostgroup

ProxySQL 3.0 routing for MySQL and PostgreSQL Step 1: applications connect to ProxySQL 3.0, MySQL clients on port 6033 and PostgreSQL clients on port 6133. Step 2: query rules send each statement to a hostgroup. MySQL writes go to the writer in hostgroup 10 and MySQL reads go to the readers in hostgroup 20. PostgreSQL writes go to the primary in hostgroup 1 and PostgreSQL reads go to the replicas in hostgroup 2. The monitor moves servers between writer and reader hostgroups when read_only or pg_is_in_recovery() changes. Applications MySQL and PG clients ProxySQL 3.0 query rules MySQL writer hostgroup 10 MySQL readers hostgroup 20 PG primary hostgroup 1 PG replicas hostgroup 2 1 2 6033: MySQL clients 6133: PostgreSQL clients monitor checks read_only and pg_is_in_recovery()

Routing, not promotion: ProxySQL moves servers between hostgroups when a backend changes role. Promoting a replica stays with Patroni, repmgr, Orchestrator, or your cloud provider.

Check which interfaces a node is listening on before you open firewall rules:

sql
-- ProxySQL admin, MySQL protocol: mysql -u admin -p -h 127.0.0.1 -P 6032
SELECT variable_name, variable_value
FROM global_variables
WHERE variable_name IN ('admin-mysql_ifaces', 'admin-pgsql_ifaces',
                        'mysql-interfaces', 'pgsql-interfaces');

Interpretation: expect 6032 and 6033 for MySQL, and 6132 and 6133 for PostgreSQL, unless you changed them. The proxysql.com variable reference shows a different default for pgsql-interfaces than the release notes and configuration guide, so trust what your node returns here.

How do you split PostgreSQL reads and writes in ProxySQL 3.0?

The pattern matches MySQL: define servers, pair a writer and a reader hostgroup, add users, then add query rules. Connect to the PostgreSQL admin interface with psql -h 127.0.0.1 -p 6132 -U admin -d admin, as the PostgreSQL configuration guide shows. Change the default admin credentials first.

sql
-- On PostgreSQL: a login role for the ProxySQL monitor
CREATE ROLE proxysql_monitor LOGIN PASSWORD 'change-me';
GRANT pg_monitor TO proxysql_monitor;

Interpretation: the monitor variables page says the monitor user needs pg_monitor privileges for read-only checks. Allow the role in pg_hba.conf from the ProxySQL hosts.

sql
-- ProxySQL PostgreSQL admin (port 6132)
UPDATE global_variables SET variable_value = 'proxysql_monitor'
  WHERE variable_name = 'pgsql-monitor_username';
UPDATE global_variables SET variable_value = 'change-me'
  WHERE variable_name = 'pgsql-monitor_password';
LOAD PGSQL VARIABLES TO RUNTIME;
SAVE PGSQL VARIABLES TO DISK;

INSERT INTO pgsql_servers (hostgroup_id, hostname, port) VALUES
  (1, '10.0.2.11', 5432),
  (2, '10.0.2.12', 5432),
  (2, '10.0.2.13', 5432);
INSERT INTO pgsql_replication_hostgroups (writer_hostgroup, reader_hostgroup, comment)
  VALUES (1, 2, 'orders cluster');
LOAD PGSQL SERVERS TO RUNTIME;
SAVE PGSQL SERVERS TO DISK;

Interpretation: once pgsql_replication_hostgroups has a row, the monitor runs pg_is_in_recovery() on every server in hostgroups 1 and 2 and places each one by its answer. The PostgreSQL tables reference notes that check_type is unused for PostgreSQL today. pgsql-monitor_writer_is_also_reader defaults to true, so the primary also serves reads in hostgroup 2.

sql
INSERT INTO pgsql_users (username, password, default_hostgroup)
  VALUES ('orders_app', 'app-password', 1);
LOAD PGSQL USERS TO RUNTIME;
SAVE PGSQL USERS TO DISK;

INSERT INTO pgsql_query_rules
  (rule_id, active, username, match_digest, destination_hostgroup, apply)
VALUES
  (10, 1, 'orders_app', '^SELECT .* FOR (UPDATE|SHARE)', 1, 1),
  (20, 1, 'orders_app', '^SELECT ', 2, 1);
LOAD PGSQL QUERY RULES TO RUNTIME;
SAVE PGSQL QUERY RULES TO DISK;

Interpretation: anything without a matching rule goes to the user's default_hostgroup, the primary. Locking reads stay on the primary, and other SELECTs go to replicas. Because transaction_persistent defaults to 1 in pgsql_users, reads inside a transaction stay in the hostgroup where it started. Statements that must see their own writes need a rule that keeps them on hostgroup 1.

sql
-- Did the monitor place the servers, and is traffic arriving?
SELECT hostname, port, read_only, error
FROM monitor.pgsql_server_read_only_log
ORDER BY time_start_us DESC LIMIT 6;

SELECT hostgroup, srv_host, status, ConnUsed, ConnFree, Queries
FROM stats_pgsql_connection_pool;

Interpretation: the primary should log read_only 0 and the replicas 1, with an empty error. In the pool stats, a rising Queries count in hostgroup 2 confirms the read rule is matching. If ConnUsed keeps climbing toward max_connections, something is pinning connections.

Set max_replication_lag per replica

pgsql_servers.max_replication_lag defaults to 0 (off). With a value above 0, ProxySQL shuns a replica whose lag exceeds it, using the lag checks added in 3.0.6.

What changed for MySQL users between ProxySQL 2.7 and 3.0?

Less than the major version number suggests. The 3.0.1 notes call the MySQL module stable, and the mysql_servers, mysql_users, mysql_query_rules, and mysql_replication_hostgroups tables keep the shapes 2.x users know. What changes is packaging, OpenSSL handling, and a list of opt-in features. A few 3.0.12 behaviour changes can also affect existing rules.

ProxySQL 2.7 and 3.0 for a MySQL deployment

Switch series to see what your packaging, tooling, and runbooks will meet

ProxySQL 2.7

AreaProxySQL 2.7
Current release (Nov 2026)2.7.4, 20 Oct 2026, security and severe fixes only
MySQL admin and traffic ports6032 and 6033
PostgreSQL proxyingNot available
Package repository pathproxysql-2.7.x
Oldest distributions with packagesRHEL 7, Ubuntu 16.04, Debian 10, Amazon Linux 2
OpenSSL updatesStatically linked (per the 3.0.1 notes); arrive with a ProxySQL release
MySQL dual passwordsNot available
Release tiersOne series

ProxySQL 3.0

AreaProxySQL 3.0
Current release (Nov 2026)3.0.12, 5 Nov 2026, Stable tier
MySQL admin and traffic ports6032 and 6033
PostgreSQL proxyingAdmin 6132, traffic 6133, pgsql_* tables
Package repository pathproxysql-3.0.x
Oldest distributions with packagesRHEL 9, Ubuntu 22.04, Debian 12, Amazon Linux 2023 (3.0.12 also ships AlmaLinux 8 packages)
OpenSSL updatesOpenSSL 3.5.7 embedded in 3.0.12; host OpenSSL updates do not patch it
MySQL dual passwordsAvailable from 3.0.1 for password rotation
Release tiers3.0.x Stable; 3.1.x and 4.0.x as pre-releases

Main blocker: 3.0 packages exist only for OpenSSL 3 era distributions. A node on Ubuntu 20.04, Debian 11, or RHEL 7 needs an OS upgrade or replacement before ProxySQL can move.

The distribution list comes from the installation page, which marks RHEL 7 and 8, Debian 10 and 11, Ubuntu 16.04 to 20.04, and Amazon Linux 2 as "ProxySQL v2.7.x and older releases only". The MySQL features added across 3.0.x are mostly opt-in:

  • 3.0.1: dual passwords, prepared-statement parameter logging (mysql-eventslog_stmt_parameters, off by default), and SHOW REPLICA STATUS for MySQL newer than 8.0.23.
  • 3.0.2: Group Replication support for MySQL 8.4 and 9.x.
  • 3.0.7 and 3.0.8: zstd protocol compression, with mysql-zstd_compression_level defaulting to 3, and mysql-session_track_system_variables (default DISABLED).
  • 3.0.10: per-hostgroup query timeouts and AWS RDS Blue/Green monitoring. LOAD ... VARIABLES TO RUNTIME now reports rejected and unknown variables.
  • 3.0.11: mysql-user_variable_tracking and mysql-update_gtid_from_ok, both off by default.
  • 3.0.12: CIDR prefixes in client_addr and proxy_addr query-rule conditions, and MariaDB GTIDs for causal reads.

Authentication changes for MySQL 8.4 accounts are covered in our separate post on MySQL 8.4 authentication errors and caching_sha2_password.

sql
-- ProxySQL admin, port 6032: list rules that rely on regular expressions
SELECT rule_id, match_digest, match_pattern, negate_match_pattern, destination_hostgroup
FROM mysql_query_rules
WHERE active = 1 AND (match_digest IS NOT NULL OR match_pattern IS NOT NULL)
ORDER BY rule_id;

Interpretation: the 3.0.12 upgrade notes say recursive regex matching now has a limit, and "a rule that reaches a match or recursion limit is skipped, including a negated rule". Review long or nested patterns, especially negated ones, and test them against your real digests on staging.

Retries behave differently in 3.0.12

If a backend fails after the application has received part of a multi-statement batch's results, ProxySQL now fails the batch instead of replaying it on another backend. Applications that send multi-statement batches should handle that error and decide whether a retry is safe.

How do you upgrade a ProxySQL node from 2.7 to 3.0?

Treat it as a package swap with a backup, one node at a time, behind a load balancer or DNS name that can drain the node. The installation guide describes it: stop ProxySQL, take a raw copy of the executable, configuration, plugins, and /var/lib/proxysql/proxysql.db, install, then start and verify. Its rollback advice is direct: "do not assume a database written by a newer version is backward compatible."

bash
# Before the window: save what runtime looks like now (contains credentials)
mysql -u admin -p -h 127.0.0.1 -P 6032 -e "
  SELECT * FROM runtime_mysql_servers;
  SELECT * FROM runtime_mysql_query_rules;
  SELECT * FROM runtime_mysql_users;" > /root/proxysql-runtime-2.7.txt
chmod 600 /root/proxysql-runtime-2.7.txt

Interpretation: you compare this file with the same queries after the upgrade. Keep it on the host or in a secrets store, because runtime_mysql_users includes password hashes.

bash
# Debian or Ubuntu, as root: point APT at the 3.0 series (commands from the ProxySQL install guide)
wget -nv -O /etc/apt/trusted.gpg.d/proxysql-3.0.x-keyring.gpg \
  'https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/repo_pub_key.gpg'
echo deb https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/$(lsb_release -sc)/ ./ \
  | tee /etc/apt/sources.list.d/proxysql.list
apt-get update
apt-cache policy proxysql

Interpretation: the candidate version should now be a 3.0.x build. If it still shows 2.7.x, the old source file is still active. On RHEL-family systems, change proxysql-2.7.x to proxysql-3.0.x in the baseurl and gpgkey lines of /etc/yum.repos.d/proxysql.repo.

Runbook: one ProxySQL node from 2.7 to 3.0.12

Seven steps; steps 3 to 6 are this node's outage window, so drain it first and keep the other nodes serving

  1. Record the version and runtime state

    Save the runtime tables as shown above, and freeze configuration changes on every node until the rollout ends.

    proxysql --version
  2. Drain the node

    Remove it from the load balancer or DNS record and wait for client connections to fall to zero.

    mysql -u admin -p -h 127.0.0.1 -P 6032 \ -e "SELECT COUNT(*) FROM stats_mysql_processlist"
  3. Stop ProxySQL and copy its files

    Node out of service

    Copy while stopped, as the install guide says. Restrict access to the copies; they hold credentials.

    systemctl stop proxysql cp -a /var/lib/proxysql/proxysql.db \ /var/lib/proxysql/proxysql.db.pre-3.0 cp -a /etc/proxysql.cnf /etc/proxysql.cnf.pre-3.0
  4. Install the 3.0 package

    Node out of service

    Uses the proxysql-3.0.x repository configured above.

    apt-get install proxysql
  5. Start with the existing database

    Node out of service

    Use the normal service. proxysql-initial.service applies --initial, which rebuilds the database from the config file.

    systemctl start proxysql proxysql --version
  6. Compare runtime with the 2.7 capture

    Node out of service

    Servers, rules, and users should match. Send test traffic straight to port 6033 before rejoining.

    mysql -u admin -p -h 127.0.0.1 -P 6032 \ -e "SELECT * FROM runtime_mysql_servers"
  7. Return the node to service

    Add it back, watch error rates and stats_mysql_connection_pool, then move to the next node.

Rollback point: until step 7, stop ProxySQL, point the repository back at proxysql-2.7.x, install the 2.7.4 package, restore proxysql.db.pre-3.0, and start. Do not start 2.7 on the database file that 3.0 has written.

bash
# Rollback on Debian or Ubuntu, as root, after restoring the 2.7.x APT source
systemctl stop proxysql
apt-get update
apt-cache policy proxysql            # note the exact 2.7.4 package version
apt-get install --allow-downgrades proxysql=<2.7.4 package version>
cp -a /var/lib/proxysql/proxysql.db.pre-3.0 /var/lib/proxysql/proxysql.db
systemctl start proxysql

Interpretation: after the restart, proxysql --version should report 2.7.4 and the runtime tables should match your 2.7 capture. Changes made on 3.0 after the backup are lost, which is why configuration stays frozen until every node is done.

How do you upgrade a ProxySQL Cluster without config drift?

ProxySQL Cluster is pull-based. Each node compares configuration checksums with its peers. After a mismatch persists for admin-cluster_*_diffs_before_sync checks (default 3), it pulls the module from the peer and, with the default save_to_disk settings, saves it locally. We found no ProxySQL statement on running mixed 2.7 and 3.0 nodes in one cluster, so keep the mixed period short and make no configuration changes during it. With no new LOAD ... TO RUNTIME, no node has a newer version to pull.

sql
-- Run on each node before the rollout and after each node is upgraded
SELECT hostname, port, name, version, epoch, diff_check
FROM stats_proxysql_servers_checksums
WHERE name IN ('mysql_servers', 'mysql_users', 'mysql_query_rules', 'mysql_variables')
ORDER BY name, hostname;

Interpretation: diff_check counts consecutive checks where a peer's configuration differed. If it climbs on any module while you are mid-rollout, stop and find out which node changed before more nodes pull from it. PostgreSQL modules (pgsql_servers, pgsql_users, pgsql_query_rules, pgsql_variables) sync only between nodes on 3.0.8 or later, so add PostgreSQL configuration after the whole cluster runs 3.0.12.

runtime_mysql_servers after the upgrade

Illustrative output: column layout from the ProxySQL documentation, hosts and states invented

admin@proxysql-01:6032
mysql> SELECT hostgroup_id, hostname, port, status, weight -> FROM runtime_mysql_servers ORDER BY hostgroup_id;+--------------+-----------+------+---------+--------+| hostgroup_id | hostname | port | status | weight |+--------------+-----------+------+---------+--------+| 10 | 10.0.1.11 | 3306 | ONLINE | 1 || 20 | 10.0.1.11 | 3306 | ONLINE | 1 || 20 | 10.0.1.12 | 3306 | ONLINE | 1 || 20 | 10.0.1.13 | 3306 | SHUNNED | 1 |+--------------+-----------+------+---------+--------+4 rows in set (0.00 sec)

Compare, do not assume: every row should match the 2.7 capture. A SHUNNED replica that was ONLINE before points to monitor credentials, TLS, or lag, not to the upgrade itself; check monitor.mysql_server_ping_log next.

ProxySQL vs PgBouncer vs Pgpool-II: which fits PostgreSQL?

They solve overlapping but different problems. PgBouncer is a lightweight pooler. Pgpool-II adds load balancing, failover, and its own HA layer. ProxySQL routes by query rule and serves MySQL and PostgreSQL from one layer. The table uses each project's own documentation as of November 2026.

QuestionProxySQL 3.0PgBouncerPgpool-II
Latest stable release3.0.12 (5 Nov 2026)1.26.1 (14 Oct 2026)4.7.3 (29 Sep 2026)
Connection poolingMultiplexing with session-state trackingSession, transaction, or statement poolingReuses connections with the same user, database, and parameters
Read/write splitQuery rules by user, digest, or patternNo per-statement routingAutomatic read/write distinction and read load balancing
Primary detectionpg_is_in_recovery() moves servers between hostgroupsNoneDetects failed nodes and runs automatic failover
Promotes a replicaNoNoThrough its failover scripts
HA of the proxy layerProxySQL Cluster config syncRun several; rolling restarts with so_reuseportWatchdog with a virtual IP
Also proxies MySQLYesNoNo

Sources: the PgBouncer changelog and features page, the Pgpool-II 4.7 introduction, and ProxySQL's PostgreSQL failover primer, which states plainly that ProxySQL "does not promote".

  • Choose PgBouncer when you only need to cut connection counts, especially with transaction pooling. PgBouncer 1.26 also tracks search_path on PostgreSQL 18 and default_transaction_read_only on PostgreSQL 14 and above by default.
  • Choose Pgpool-II when you want the proxy itself to run failover and you are prepared to operate its watchdog. Pgpool-II recommends at least three nodes to avoid split brain.
  • Choose ProxySQL when you need rule-based routing, query digests, or one proxy layer for MySQL and PostgreSQL, and you already have Patroni, repmgr, or a managed service for promotion.

Some teams chain them. The 3.0.9 notes fix a startup options bug that broke client → ProxySQL → PgBouncer → PostgreSQL setups, so that layout is in real use. Each extra hop adds latency and another place where session state must be right, so measure it first.

Frequently asked questions

Does ProxySQL support PostgreSQL?

Yes, from the 3.0 series. ProxySQL 3.0 accepts PostgreSQL clients on port 6133 by default, with a PostgreSQL admin interface on 6132 and its own pgsql_* tables. It supports SCRAM-SHA-256, MD5, and cleartext authentication, TLS, multiplexing, query rules, read-only detection with pg_is_in_recovery(), and lag checks. ProxySQL 2.x has no PostgreSQL support.

Is ProxySQL PostgreSQL support production ready?

ProxySQL has not published a GA statement that we could find. The 3.0.1 and 3.0.2 release notes call the PostgreSQL module beta, and later Stable releases add PostgreSQL features and correctness fixes without restating a label. As of November 2026, run 3.0.12, replay your real traffic on staging, and keep a direct path to PostgreSQL you can switch back to.

Can ProxySQL replace PgBouncer?

For many applications, yes, if you want query-rule routing as well as pooling. ProxySQL multiplexes backend connections and tracks session state, while PgBouncer offers session, transaction, and statement pooling with a smaller footprint. If you only need fewer connections, PgBouncer is simpler to run. If you need read/write splitting or one proxy for MySQL and PostgreSQL, ProxySQL covers both.

Do I need to change my MySQL configuration to upgrade to ProxySQL 3.0?

Usually not. The mysql_* admin tables, ports 6032 and 6033, and the LOAD and SAVE commands carry over, and most new MySQL features are off by default. Check three things: your OS has 3.0 packages, your repository points at proxysql-3.0.x, and complex or negated regex rules still match under the 3.0.12 recursion limit.

Can I downgrade from ProxySQL 3.0 to 2.7?

Yes, if you kept a copy of proxysql.db taken while 2.7 was stopped. Reinstall the 2.7 package from the proxysql-2.7.x repository and restore that copy before starting. ProxySQL's install guide warns not to assume a database written by a newer version is backward compatible, so never start 2.7 on the file 3.0 has used.

Key takeaways

  • ProxySQL 3.0.12 (5 November 2026) is the Stable release. 3.1.x and 4.0.x are pre-releases with extra PostgreSQL and plugin features.
  • PostgreSQL support covers authentication, TLS, pooling, query rules, read-only and lag monitoring, and cluster sync, but no release note declares it GA. Test with real traffic.
  • For MySQL, configuration carries over. Packaging, the repository path, embedded OpenSSL, regex limits, and batch retry behaviour are what change.
  • Upgrade one drained node at a time with configuration frozen, and keep the stopped-state proxysql.db copy and the 2.7 package as your rollback.
  • ProxySQL routes but does not promote. Pair it with Patroni, repmgr, or a managed service, or choose Pgpool-II if you want the proxy to run failover.

Planning a ProxySQL 3.0 upgrade with JusDB

JusDB's ProxySQL engineers can review your current 2.x configuration and query rules, check which nodes need an OS change first, and plan a node-by-node upgrade with a tested rollback. For PostgreSQL, we can help you compare ProxySQL with PgBouncer or Pgpool-II against your own traffic before you change the connection path.

See our ProxySQL architecture and query routing page for the patterns we work with.

Share this article

Database engineering notes

Articles like this one, in your inbox. No spam, unsubscribe anytime.

JusDB Team

Official JusDB content team

Keep reading

Kafka 4.0 Without ZooKeeper: KRaft Migration for CDC Pipelines

Move a ZooKeeper-mode Kafka cluster to Kafka 4.x through the 3.9 bridge: controller quorum design, migration phases, rollback points, and what to check in Debezium and Connect.

Kafka19 minNov 8, 2026
Read

Percona Operators for MySQL, PostgreSQL, and MongoDB Compared

Compare the four Percona Kubernetes operators as of November 2026: current versions, GA and tech preview features, failover, proxies, backups and PITR, upgrades, TLS, and PMM.

PostgreSQL20 minNov 4, 2026
Read

SQL Server 2016 Is Out of Support: Upgrade Path to 2022 or 2025

SQL Server 2016 lost support on 14 July 2026. Weigh ESUs, pick SQL Server 2022 or 2025, check the upgrade path, and run a side-by-side cutover with a safe compatibility level plan.

SQL Server19 minNov 2, 2026
Read