Admin Commands
ProxySQL uses a multi-layer configuration system consisting of the Configuration File, Disk Database, Main (Memory) Database, and the Runtime data structures. Moving configuration between these layers is handled via LOAD and SAVE commands.
Table of Contents
- Configuration Layers
- MySQL Commands
- MySQL X Commands (v4.0+)
- PostgreSQL Commands (v3.0+)
- Generative AI & MCP Commands (v4.0+)
- Core Admin & System Commands
- Specialized Commands
Configuration Layers
ProxySQL employs a unique architecture to manage its configuration. For a detailed explanation of why this system exists and how the layers interact, see The Multi-Layer Configuration System.
MySQL Commands
MySQL Servers & Hostgroups
LOAD MYSQL SERVERS TO RUNTIME(orTO RUN)SAVE MYSQL SERVERS TO DISKLOAD MYSQL SERVERS FROM DISKSAVE MYSQL SERVERS TO MEMORY(orTO MEM)LOAD MYSQL SERVERS FROM MEMORY(orFROM MEM)LOAD MYSQL SERVERS FROM CONFIG
See Multi-Layer Configuration for details on how configuration flows between layers.
MySQL Users
LOAD MYSQL USERS TO RUNTIME(orTO RUN)SAVE MYSQL USERS TO DISKLOAD MYSQL USERS FROM DISKSAVE MYSQL USERS TO MEMORY(orTO MEM)LOAD MYSQL USERS FROM MEMORY(orFROM MEM)LOAD MYSQL USERS FROM CONFIG
See Multi-Layer Configuration for details on how configuration flows between layers.
MySQL Query Rules
LOAD MYSQL QUERY RULES TO RUNTIME(orTO RUN)SAVE MYSQL QUERY RULES TO DISKLOAD MYSQL QUERY RULES FROM DISKSAVE MYSQL QUERY RULES TO MEMORY(orTO MEM)LOAD MYSQL QUERY RULES FROM MEMORY(orFROM MEM)LOAD MYSQL QUERY RULES FROM CONFIG
See Multi-Layer Configuration for details on how configuration flows between layers.
MySQL Variables
LOAD MYSQL VARIABLES TO RUNTIME(orTO RUN)SAVE MYSQL VARIABLES TO DISKLOAD MYSQL VARIABLES FROM DISKSAVE MYSQL VARIABLES TO MEMORY(orTO MEM)LOAD MYSQL VARIABLES FROM MEMORY(orFROM MEM)LOAD MYSQL VARIABLES FROM CONFIG
LOAD MYSQL VARIABLES TO RUNTIME and its memory aliases return an OK packet whose information field has
this exact summary shape:
Records: <records> Updated: <updated> Rejected: <rejected> Unknown: <unknown>
Records is the number of MySQL variable rows examined, Updated is the number accepted into runtime,
Rejected is the number of known variables whose values failed validation, and Unknown is the number of
names not supported by the running release. A rejected known value is not activated; ProxySQL restores the
current valid value in the configuration table when one is available. Unsupported rows are removed from the
in-memory variable table. The command can succeed while reporting nonzero Rejected or Unknown, so
automation should inspect the information field instead of relying only on the OK status.
See Multi-Layer Configuration for details on how configuration flows between layers.
MySQL X Commands (v4.0+)
These commands are registered by the MySQL X Protocol plugin. They are available only when the plugin library is configured and loaded successfully. See MySQL X Protocol for table schemas, runtime behavior, and released limitations.
MySQL X Users
LOAD MYSQLX USERS TO RUNTIME- aliases:
LOAD MYSQLX USERS FROM MEMORY,LOAD MYSQLX USERS FROM MEM,LOAD MYSQLX USERS TO RUN
- aliases:
SAVE MYSQLX USERS TO MEMORY- aliases:
SAVE MYSQLX USERS TO MEM,SAVE MYSQLX USERS FROM RUNTIME,SAVE MYSQLX USERS FROM RUN
- aliases:
LOAD MYSQLX USERS FROM DISKSAVE MYSQLX USERS TO DISK
MySQL X Routes
LOAD MYSQLX ROUTES TO RUNTIME- aliases:
LOAD MYSQLX ROUTES FROM MEMORY,LOAD MYSQLX ROUTES FROM MEM,LOAD MYSQLX ROUTES TO RUN
- aliases:
SAVE MYSQLX ROUTES TO MEMORY- aliases:
SAVE MYSQLX ROUTES TO MEM,SAVE MYSQLX ROUTES FROM RUNTIME,SAVE MYSQLX ROUTES FROM RUN
- aliases:
LOAD MYSQLX ROUTES FROM DISKSAVE MYSQLX ROUTES TO DISK
LOAD MYSQLX ROUTES TO RUNTIME also reconciles the plugin’s listeners with the active route set.
MySQL X Backend Endpoints
LOAD MYSQLX BACKEND ENDPOINTS TO RUNTIME- aliases:
LOAD MYSQLX BACKEND ENDPOINTS FROM MEMORY,LOAD MYSQLX BACKEND ENDPOINTS FROM MEM,LOAD MYSQLX BACKEND ENDPOINTS TO RUN
- aliases:
SAVE MYSQLX BACKEND ENDPOINTS TO MEMORY- aliases:
SAVE MYSQLX BACKEND ENDPOINTS TO MEM,SAVE MYSQLX BACKEND ENDPOINTS FROM RUNTIME,SAVE MYSQLX BACKEND ENDPOINTS FROM RUN
- aliases:
LOAD MYSQLX BACKEND ENDPOINTS FROM DISKSAVE MYSQLX BACKEND ENDPOINTS TO DISK
MySQL X Variables
LOAD MYSQLX VARIABLES TO RUNTIME- aliases:
LOAD MYSQLX VARIABLES FROM MEMORY,LOAD MYSQLX VARIABLES FROM MEM,LOAD MYSQLX VARIABLES TO RUN
- aliases:
SAVE MYSQLX VARIABLES TO MEMORY- aliases:
SAVE MYSQLX VARIABLES TO MEM,SAVE MYSQLX VARIABLES FROM RUNTIME,SAVE MYSQLX VARIABLES FROM RUN
- aliases:
LOAD MYSQLX VARIABLES FROM DISKSAVE MYSQLX VARIABLES TO DISK
The MySQL X disk commands have no aliases. Command matching is case-insensitive, normalizes whitespace, and accepts a trailing semicolon.
For each entity, LOAD ... TO RUNTIME and its aliases read the editable mysqlx_* Admin table and install
plugin-owned in-memory state. They do not write runtime_mysqlx_*. SAVE ... TO MEMORY, SAVE ... TO MEM,
SAVE ... FROM RUNTIME, and SAVE ... FROM RUN dump plugin-owned state into the editable Admin table; they do
not read runtime_mysqlx_*. The runtime tables are read-only projections refreshed from plugin state immediately
before an Admin SELECT references them.
LOAD ... FROM DISK replaces the editable Admin table from the disk table, and SAVE ... TO DISK replaces the
disk table from the editable Admin table. These copies are transactional; an empty source clears the destination.
PostgreSQL Commands (v3.0+)
PostgreSQL Servers
LOAD PGSQL SERVERS TO RUNTIME(orTO RUN)SAVE PGSQL SERVERS TO DISKLOAD PGSQL SERVERS FROM DISKSAVE PGSQL SERVERS TO MEMORY(orTO MEM)LOAD PGSQL SERVERS FROM MEMORY(orFROM MEM)LOAD PGSQL SERVERS FROM CONFIG
See Multi-Layer Configuration for details on how configuration flows between layers.
PostgreSQL Users
LOAD PGSQL USERS TO RUNTIME(orTO RUN)SAVE PGSQL USERS TO DISKLOAD PGSQL USERS FROM DISKSAVE PGSQL USERS TO MEMORY(orTO MEM)LOAD PGSQL USERS FROM MEMORY(orFROM MEM)LOAD PGSQL USERS FROM CONFIG
See Multi-Layer Configuration for details on how configuration flows between layers.
PostgreSQL Query Rules
LOAD PGSQL QUERY RULES TO RUNTIME(orTO RUN)SAVE PGSQL QUERY RULES TO DISKLOAD PGSQL QUERY RULES FROM DISKSAVE PGSQL QUERY RULES TO MEMORY(orTO MEM)LOAD PGSQL QUERY RULES FROM MEMORY(orFROM MEM)LOAD PGSQL QUERY RULES FROM CONFIG
See Multi-Layer Configuration for details on how configuration flows between layers.
PostgreSQL Variables
LOAD PGSQL VARIABLES TO RUNTIME(orTO RUN)SAVE PGSQL VARIABLES TO DISKLOAD PGSQL VARIABLES FROM DISKSAVE PGSQL VARIABLES TO MEMORY(orTO MEM)LOAD PGSQL VARIABLES FROM MEMORY(orFROM MEM)LOAD PGSQL VARIABLES FROM CONFIG
LOAD PGSQL VARIABLES TO RUNTIME and its memory aliases return the same information-field format:
Records: <records> Updated: <updated> Rejected: <rejected> Unknown: <unknown>
The fields have the same meaning as for MySQL: examined rows, accepted updates, known variables with invalid values, and unsupported names. Rejected or unknown PostgreSQL variables are not installed at runtime even though the load command itself returns an OK packet.
See Multi-Layer Configuration for details on how configuration flows between layers.
Generative AI & MCP Commands (v4.0+)
MCP Query Rules
LOAD MCP QUERY RULES TO RUNTIME(orTO RUN)SAVE MCP QUERY RULES TO DISKLOAD MCP QUERY RULES FROM DISKSAVE MCP QUERY RULES TO MEMORY(orTO MEM)LOAD MCP QUERY RULES FROM MEMORY(orFROM MEM)
See Multi-Layer Configuration for details on how configuration flows between layers.
MCP Variables
LOAD MCP VARIABLES TO RUNTIME(orTO RUN)SAVE MCP VARIABLES TO DISKLOAD MCP VARIABLES FROM DISKSAVE MCP VARIABLES TO MEMORY(orTO MEM)LOAD MCP VARIABLES FROM MEMORY(orFROM MEM)LOAD MCP VARIABLES FROM CONFIG
See Multi-Layer Configuration for details on how configuration flows between layers.
GENAI Variables
LOAD GENAI VARIABLES TO RUNTIME(orTO RUN)SAVE GENAI VARIABLES TO DISKLOAD GENAI VARIABLES FROM DISKSAVE GENAI VARIABLES TO MEMORY(orTO MEM)LOAD GENAI VARIABLES FROM MEMORY(orFROM MEM)LOAD GENAI VARIABLES FROM CONFIG
See Multi-Layer Configuration for details on how configuration flows between layers.
Core Admin & System Commands
ClickHouse Users and Variables
These commands exist only in builds compiled with PROXYSQLCLICKHOUSE; user commands additionally require the
ClickHouse server to be enabled:
| Direction | Exact ClickHouse user spellings | Exact ClickHouse variable spellings |
|---|---|---|
| Memory → runtime | LOAD CLICKHOUSE USERS TO RUNTIMELOAD CLICKHOUSE USERS FROM MEMORYLOAD CLICKHOUSE USERS FROM MEMLOAD CLICKHOUSE USERS TO RUN | LOAD CLICKHOUSE VARIABLES TO RUNTIMELOAD CLICKHOUSE VARIABLES FROM MEMORYLOAD CLICKHOUSE VARIABLES FROM MEMLOAD CLICKHOUSE VARIABLES TO RUN |
| Runtime → memory | SAVE CLICKHOUSE USERS TO MEMORYSAVE CLICKHOUSE USERS TO MEMSAVE CLICKHOUSE USERS FROM RUNTIMESAVE CLICKHOUSE USERS FROM RUN | SAVE CLICKHOUSE VARIABLES TO MEMORYSAVE CLICKHOUSE VARIABLES TO MEMSAVE CLICKHOUSE VARIABLES FROM RUNTIMESAVE CLICKHOUSE VARIABLES FROM RUN |
| Disk → memory | LOAD CLICKHOUSE USERS FROM DISKLOAD CLICKHOUSE USERS TO MEMORYLOAD CLICKHOUSE USERS TO MEM | LOAD CLICKHOUSE VARIABLES FROM DISKLOAD CLICKHOUSE VARIABLES TO MEMORYLOAD CLICKHOUSE VARIABLES TO MEM |
| Memory → disk | SAVE CLICKHOUSE USERS TO DISKSAVE CLICKHOUSE USERS FROM MEMORYSAVE CLICKHOUSE USERS FROM MEM | SAVE CLICKHOUSE VARIABLES TO DISKSAVE CLICKHOUSE VARIABLES FROM MEMORYSAVE CLICKHOUSE VARIABLES FROM MEM |
See ClickHouse Configuration for schemas, variable validation, and the compile/startup gates.
Admin Variables
LOAD ADMIN VARIABLES TO RUNTIME(orTO RUN)SAVE ADMIN VARIABLES TO DISKLOAD ADMIN VARIABLES FROM DISKSAVE ADMIN VARIABLES TO MEMORY(orTO MEM)LOAD ADMIN VARIABLES FROM MEMORY(orFROM MEM)LOAD ADMIN VARIABLES FROM CONFIG
See Multi-Layer Configuration for details on how configuration flows between layers.
ProxySQL Servers (Cluster Nodes)
LOAD PROXYSQL SERVERS TO RUNTIME(orTO RUN)SAVE PROXYSQL SERVERS TO DISKLOAD PROXYSQL SERVERS FROM DISKSAVE PROXYSQL SERVERS TO MEMORY(orTO MEM)LOAD PROXYSQL SERVERS FROM MEMORY(orFROM MEM)LOAD PROXYSQL SERVERS FROM CONFIG
See Multi-Layer Configuration for details on how configuration flows between layers.
Scheduler
LOAD SCHEDULER TO RUNTIME(orTO RUN)SAVE SCHEDULER TO DISKLOAD SCHEDULER FROM DISKSAVE SCHEDULER TO MEMORY(orTO MEM)LOAD SCHEDULER FROM MEMORY(orFROM MEM)LOAD SCHEDULER FROM CONFIG
See Multi-Layer Configuration for details on how configuration flows between layers.
REST API
LOAD RESTAPI TO RUNTIME(orTO RUN)SAVE RESTAPI TO DISKLOAD RESTAPI FROM DISKSAVE RESTAPI TO MEMORY(orTO MEM)LOAD RESTAPI FROM MEMORY(orFROM MEM)LOAD RESTAPI FROM CONFIG
See Multi-Layer Configuration for details on how configuration flows between layers.
SQLite3 Server
LOAD SQLITESERVER VARIABLES TO RUNTIME(orTO RUN)SAVE SQLITESERVER VARIABLES TO DISKLOAD SQLITESERVER VARIABLES FROM DISKSAVE SQLITESERVER VARIABLES TO MEMORY(orTO MEM)LOAD SQLITESERVER VARIABLES FROM MEMORY(orFROM MEM)
See Multi-Layer Configuration for details on how configuration flows between layers.
Specialized Commands
Exact released aliases
The sections above use parenthetical shorthand for the common memory/runtime aliases. The following compact inventory records the additional exact spellings accepted by the released command dispatcher. They perform the same layer transfer as their canonical command; command matching remains case-insensitive.
| Module | Additional exact spellings |
|---|---|
| Admin variables | LOAD ADMIN VARIABLES TO MEMLOAD ADMIN VARIABLES TO MEMORYSAVE ADMIN VARIABLES FROM MEMSAVE ADMIN VARIABLES FROM MEMORYSAVE ADMIN VARIABLES FROM RUNSAVE ADMIN VARIABLES FROM RUNTIME |
| LDAP variables | LOAD LDAP VARIABLES FROM DISKLOAD LDAP VARIABLES FROM MEMLOAD LDAP VARIABLES FROM MEMORYLOAD LDAP VARIABLES TO MEMLOAD LDAP VARIABLES TO MEMORYLOAD LDAP VARIABLES TO RUNLOAD LDAP VARIABLES TO RUNTIMESAVE LDAP VARIABLES FROM MEMSAVE LDAP VARIABLES FROM MEMORYSAVE LDAP VARIABLES FROM RUNSAVE LDAP VARIABLES FROM RUNTIMESAVE LDAP VARIABLES TO DISKSAVE LDAP VARIABLES TO MEMSAVE LDAP VARIABLES TO MEMORY |
| MCP profiles | LOAD MCP PROFILES FROM DISKLOAD MCP PROFILES FROM MEMLOAD MCP PROFILES FROM MEMORYLOAD MCP PROFILES TO MEMORYLOAD MCP PROFILES TO RUNLOAD MCP PROFILES TO RUNTIMESAVE MCP PROFILES FROM RUNSAVE MCP PROFILES FROM RUNTIMESAVE MCP PROFILES TO DISKSAVE MCP PROFILES TO MEMSAVE MCP PROFILES TO MEMORY |
| MCP query rules | LOAD MCP QUERY RULES TO MEMORYSAVE MCP QUERY RULES FROM RUNSAVE MCP QUERY RULES FROM RUNTIME |
| MCP variables | LOAD MCP VARIABLES TO MEMLOAD MCP VARIABLES TO MEMORYSAVE MCP VARIABLES FROM MEMSAVE MCP VARIABLES FROM MEMORYSAVE MCP VARIABLES FROM RUNSAVE MCP VARIABLES FROM RUNTIME |
| GenAI variables | SAVE GENAI VARIABLES FROM RUNSAVE GENAI VARIABLES FROM RUNTIME |
| MySQL firewall | LOAD MYSQL FIREWALL FROM CONFIGLOAD MYSQL FIREWALL FROM MEMLOAD MYSQL FIREWALL FROM MEMORYSAVE MYSQL FIREWALL FROM RUNSAVE MYSQL FIREWALL FROM RUNTIMESAVE MYSQL FIREWALL TO MEMSAVE MYSQL FIREWALL TO MEMORY |
| PostgreSQL firewall | LOAD PGSQL FIREWALL FROM CONFIGLOAD PGSQL FIREWALL FROM MEMLOAD PGSQL FIREWALL FROM MEMORYSAVE PGSQL FIREWALL FROM RUNSAVE PGSQL FIREWALL FROM RUNTIMESAVE PGSQL FIREWALL TO MEMSAVE PGSQL FIREWALL TO MEMORY |
| MySQL modules | SAVE MYSQL DIGEST TO DISKSAVE MYSQL QUERY RULES FROM RUNSAVE MYSQL QUERY RULES FROM RUNTIMESAVE MYSQL SERVERS FROM RUNSAVE MYSQL SERVERS FROM RUNTIMESAVE MYSQL USERS FROM RUNSAVE MYSQL USERS FROM RUNTIMESAVE MYSQL VARIABLES FROM RUNSAVE MYSQL VARIABLES FROM RUNTIME |
| PostgreSQL modules | SAVE PGSQL DIGEST TO DISKSAVE PGSQL QUERY RULES FROM RUNSAVE PGSQL QUERY RULES FROM RUNTIMESAVE PGSQL SERVERS FROM RUNSAVE PGSQL SERVERS FROM RUNTIMESAVE PGSQL USERS FROM RUNSAVE PGSQL USERS FROM RUNTIMESAVE PGSQL VARIABLES FROM RUNSAVE PGSQL VARIABLES FROM RUNTIME |
| ProxySQL servers, REST API, and scheduler | SAVE PROXYSQL SERVERS FROM RUNSAVE PROXYSQL SERVERS FROM RUNTIMESAVE RESTAPI FROM RUNSAVE RESTAPI FROM RUNTIMESAVE SCHEDULER FROM RUNSAVE SCHEDULER FROM RUNTIME |
| SQLite3 server variables | LOAD SQLITESERVER VARIABLES FROM CONFIGLOAD SQLITESERVER VARIABLES TO MEMLOAD SQLITESERVER VARIABLES TO MEMORYSAVE SQLITESERVER VARIABLES FROM MEMSAVE SQLITESERVER VARIABLES FROM MEMORYSAVE SQLITESERVER VARIABLES FROM RUNSAVE SQLITESERVER VARIABLES FROM RUNTIME |
| TSDB variables | LOAD TSDB VARIABLES FROM CONFIGLOAD TSDB VARIABLES FROM MEMLOAD TSDB VARIABLES FROM MEMORYLOAD TSDB VARIABLES TO RUNLOAD TSDB VARIABLES TO RUNTIMESAVE TSDB VARIABLES FROM RUNSAVE TSDB VARIABLES FROM RUNTIMESAVE TSDB VARIABLES TO MEMSAVE TSDB VARIABLES TO MEMORY |
The 11 additional DEBUG LOAD/SAVE aliases in the source dispatcher are diagnostic-only spellings and are
intentionally not presented as public administration commands. The conditional canonical forms are identified
under Debugging & Coredump below.
Selective Query-Digest Purge
The following released forms selectively purge MySQL or PostgreSQL query-digest entries. Commands are
case-insensitive; <unix_timestamp> is a Unix realtime timestamp in seconds.
PURGE stats_mysql_query_digest TO <unix_timestamp>;
PURGE TABLE stats_mysql_query_digest TO <unix_timestamp>;
PURGE stats.stats_mysql_query_digest TO <unix_timestamp>;
PURGE stats_pgsql_query_digest TO <unix_timestamp>;
PURGE TABLE stats_pgsql_query_digest TO <unix_timestamp>;
PURGE stats.stats_pgsql_query_digest TO <unix_timestamp>;
ProxySQL removes each digest whose last_seen is less than or equal to the cutoff. A digest observed both
before and after the cutoff survives with its accumulated statistics because its latest last_seen is newer.
The OK packet’s affected-row count is the number of digest entries purged. A positive timestamp older than
process boot is a successful no-op, and a future timestamp removes all current entries.
Selective purge runs through the asynchronous digest purge path. When purges overlap or are issued repeatedly
while traffic is updating the digest map, ProxySQL merges the pending purge windows and safely reconciles
concurrent updates; newly observed digests outside the cutoff remain available. The value must be a complete,
positive integer. Zero, negative values, nonnumeric text, or trailing garbage return an Invalid timestamp
error and do not purge entries.
Firewall Management
LOAD MYSQL FIREWALL TO RUNTIME(orTO RUN)SAVE MYSQL FIREWALL TO DISKLOAD PGSQL FIREWALL TO RUNTIME(orTO RUN)SAVE PGSQL FIREWALL TO DISK
Debugging & Coredump
The LOAD DEBUG and SAVE DEBUG command family exists only in binaries compiled with DEBUG; normal release
builds do not expose it.
LOAD DEBUG TO RUNTIME(orTO RUN)SAVE DEBUG TO DISKLOAD COREDUMP TO RUNTIME(aliases:LOAD COREDUMP FROM MEMORY,LOAD COREDUMP FROM MEM, andLOAD COREDUMP TO RUN)
There is no released SAVE COREDUMP command and no disk/config copy of coredump_filters. Insert or provision
rows in the main-memory table after every restart, then use one of the four LOAD forms above to replace the
active runtime_coredump_filters set.
System Commands
PROXYSQL RELOAD TLS: Reloads SSL/TLS certificates for the Admin and Proxy interfaces.SAVE CONFIG TO FILE: (v4.0+) Attempts to export the current configuration back to a.cnffile format.
Checksum Verification
Verify consistency between layers using the CHECKSUM command:
CHECKSUM DISK <MODULE>(e.g.,CHECKSUM DISK MYSQL SERVERS)CHECKSUM MEMORY <MODULE>CHECKSUM <MODULE>(defaults to current memory state)