doc/MCP/MCP_Stats_Tools_Spec.md
This document specifies the MCP tools available on the /stats endpoint for monitoring and analyzing ProxySQL statistics.
The /stats endpoint provides tools for monitoring ProxySQL performance, health, and operational metrics. Tools are organized into three categories:
All tools support both MySQL and PostgreSQL where applicable, controlled by a db_type parameter.
flush_query_log and flush_queries are write-capable operations and should be protected via endpoint authentication.
All tools follow the MCP JSON-RPC response format with success/error wrappers.
Success Response:
{
"success": true,
"result": {
// Tool-specific result data
}
}
Error Response:
{
"success": false,
"error": "Error message describing what went wrong"
}
All tools follow consistent naming conventions for time-related fields:
| Suffix | Unit | Example Fields |
|---|---|---|
_us | Microseconds | sum_time_us, min_time_us, max_time_us, latency_us, ping_time_us |
_ms | Milliseconds | time_ms, idle_ms |
| (none) | Unix timestamp (seconds since epoch) | first_seen, last_seen, timestamp, dump_time |
Notes:
_us) unless milliseconds provide more natural values (e.g., session duration)| Tool | Description |
|---|---|
show_status | Global status variables and metrics |
show_processlist | Currently active sessions |
show_queries | Query digest performance statistics |
show_commands | Command execution counters with latency histograms |
show_connections | Backend connection pool metrics |
show_errors | Error tracking and frequency |
show_users | User connection statistics |
show_client_cache | Client host error cache |
show_query_rules | Query rule hit counts |
show_prepared_statements | Prepared statement information |
show_gtid | GTID replication status (MySQL only) |
show_cluster | ProxySQL cluster node health |
| Tool | Description |
|---|---|
show_system_history | CPU and memory trends over time |
show_query_cache_history | Query cache performance trends |
show_connection_history | Connection metrics history |
show_query_history | Query digest snapshots over time |
| Tool | Description |
|---|---|
flush_query_log | Flush query events from buffer to tables |
show_query_log | View query event audit log |
flush_queries | Save query digest statistics to disk |
Returns global status variables and metrics from ProxySQL. Similar to MySQL's SHOW STATUS command.
Parameters:
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
db_type | "mysql" | "pgsql" | No | "mysql" | Database type |
category | string | No | (none) | Filter by category: connections, queries, commands, pool_ops, monitor, query_cache, prepared_stmts, security, memory, errors, logger, system, mirror |
variable_name | string | No | (none) | Filter by variable name pattern (supports SQL LIKE with % wildcards) |
Note: If neither category nor variable_name is provided, returns all variables grouped by category.
Response:
{
"success": true,
"result": {
"db_type": "mysql",
"variables": [
{
"variable_name": "Client_Connections_connected",
"value": "245"
},
{
"variable_name": "Client_Connections_created",
"value": "15432"
},
{
"variable_name": "Questions",
"value": "156789"
}
]
}
}
For complete documentation of all available variables including descriptions and types, see:
PostgreSQL Notes: Some variable names differ between MySQL and PostgreSQL (e.g., pgsql_backend_buffers_bytes instead of mysql_backend_buffers_bytes).
Shows all currently active sessions being processed by ProxySQL.
Parameters:
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
db_type | "mysql" | "pgsql" | No | "mysql" | Database type |
username | string | No | (none) | Filter by username |
hostgroup | int | No | (none) | Filter by hostgroup ID |
min_time_ms | int | No | (none) | Only show sessions running longer than N milliseconds |
limit | int | No | 100 | Maximum number of sessions to return |
offset | int | No | 0 | Skip first N results |
Response:
{
"success": true,
"result": {
"db_type": "mysql",
"total_sessions": 156,
"sessions": [
{
"session_id": 12345,
"thread_id": 67,
"user": "app_user",
"database": "production_db",
"client_host": "10.0.1.50",
"client_port": 54321,
"hostgroup": 10,
"backend_host": "db-server-01",
"backend_port": 3306,
"command": "Query",
"time_ms": 234,
"info": "SELECT * FROM orders WHERE status = 'pending' LIMIT 1000"
}
],
"summary": {
"by_user": {
"app_user": 120,
"admin_user": 25,
"report_user": 11
},
"by_hostgroup": {
"10": 100,
"20": 45,
"30": 11
},
"by_command": {
"Query": 145,
"Sleep": 8,
"Connect": 3
}
}
}
}
PostgreSQL Notes: PostgreSQL processlist includes additional columns backend_pid and backend_state.
Returns aggregated query performance statistics by digest pattern.
Parameters:
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
db_type | "mysql" | "pgsql" | No | "mysql" | Database type |
sort_by | "count" | "avg_time" | "sum_time" | "max_time" | "rows_sent" | No | "count" | Sort order |
limit | int | No | 100 | Maximum number of results |
offset | int | No | 0 | Skip first N results |
min_count | int | No | (none) | Only show queries executed at least N times |
min_time_us | int | No | (none) | Only show queries with avg time >= N microseconds |
database | string | No | (none) | Filter by database name |
username | string | No | (none) | Filter by username |
hostgroup | int | No | (none) | Filter by hostgroup ID |
digest | string | No | (none) | Filter by specific query digest |
Response:
{
"success": true,
"result": {
"db_type": "mysql",
"total_digests": 1234,
"queries": [
{
"digest": "0x3A2B4C5D6E7F8A9B",
"digest_text": "SELECT * FROM orders WHERE status = ?",
"hostgroup": 10,
"database": "production_db",
"username": "app_user",
"client_address": "10.0.1.50",
"count_star": 15234,
"first_seen": 1737440000,
"last_seen": 1737446400,
"sum_time_us": 45678900,
"min_time_us": 1200,
"max_time_us": 234500,
"avg_time_us": 2998,
"sum_rows_affected": 0,
"sum_rows_sent": 15234000
}
],
"summary": {
"total_queries": 156789,
"total_time_us": 987654321
}
}
}
PostgreSQL Notes: MySQL uses the schemaname column while PostgreSQL uses the database column internally. The tool normalizes both to the database field in responses for consistency.
Returns command execution statistics with latency distribution histograms.
Parameters:
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
db_type | "mysql" | "pgsql" | No | "mysql" | Database type |
command | string | No | (none) | Filter by specific command (SELECT, INSERT, etc.) |
limit | int | No | 100 | Maximum number of commands to return |
offset | int | No | 0 | Skip first N results |
Response:
{
"success": true,
"result": {
"db_type": "mysql",
"commands": [
{
"command": "SELECT",
"total_count": 98765,
"total_time_us": 234567890,
"avg_time_us": 2375,
"latency_histogram": {
"cnt_100us": 1000,
"cnt_500us": 5000,
"cnt_1ms": 15000,
"cnt_5ms": 40000,
"cnt_10ms": 25000,
"cnt_50ms": 10000,
"cnt_100ms": 2500,
"cnt_500ms": 200,
"cnt_1s": 50,
"cnt_5s": 10,
"cnt_10s": 5,
"cnt_INFs": 0
},
"percentiles": {
"p50_us": 6500,
"p90_us": 35000,
"p95_us": 75000,
"p99_us": 120000
}
},
{
"command": "INSERT",
"total_count": 45678,
"total_time_us": 123456789,
"avg_time_us": 2702,
"latency_histogram": {
"cnt_100us": 500,
"cnt_500us": 2000,
"cnt_1ms": 8000,
"cnt_5ms": 20000,
"cnt_10ms": 10000,
"cnt_50ms": 4000,
"cnt_100ms": 1000,
"cnt_500ms": 150,
"cnt_1s": 25,
"cnt_5s": 3,
"cnt_10s": 0,
"cnt_INFs": 0
},
"percentiles": {
"p50_us": 5200,
"p90_us": 28000,
"p95_us": 55000,
"p99_us": 95000
}
}
],
"summary": {
"total_commands": 245000,
"total_time_us": 567890123
}
}
}
Returns backend connection pool metrics per server.
Parameters:
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
db_type | "mysql" | "pgsql" | No | "mysql" | Database type |
hostgroup | int | No | (none) | Filter by hostgroup ID |
server | string | No | (none) | Filter by server (format: host:port) |
status | "ONLINE" | "SHUNNED" | "OFFLINE_SOFT" | "OFFLINE_HARD" | No | (none) | Filter by server status |
detail | bool | No | false | Include free connection details |
Response:
{
"success": true,
"result": {
"db_type": "mysql",
"servers": [
{
"hostgroup": 10,
"srv_host": "db-server-01",
"srv_port": 3306,
"status": "ONLINE",
"conn_used": 45,
"conn_free": 55,
"conn_ok": 123456,
"conn_err": 23,
"max_conn_used": 100,
"queries": 456789,
"queries_gtid_sync": 450000,
"bytes_data_sent": 56789012,
"bytes_data_recv": 1234567890,
"latency_us": 1500,
"utilization_pct": 45.0,
"error_rate": 0.00019
}
],
"summary": {
"total_servers": 5,
"online_servers": 4,
"total_conn_used": 180,
"total_conn_free": 320,
"total_queries": 2345678,
"overall_utilization_pct": 36.0,
"by_status": {
"ONLINE": 4,
"SHUNNED": 1,
"OFFLINE_SOFT": 0,
"OFFLINE_HARD": 0
}
}
}
}
Response with detail=true:
When detail=true, includes an additional free_connections array showing individual idle connections:
{
"success": true,
"result": {
"db_type": "mysql",
"servers": [...],
"free_connections": [
{
"fd": 123,
"hostgroup": 10,
"srv_host": "db-server-01",
"srv_port": 3306,
"user": "app_user",
"schema": "production_db",
"init_connect": "SET time_zone='UTC'",
"time_zone": "UTC",
"sql_mode": "STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION",
"autocommit": "1",
"idle_ms": 15000
}
],
"summary": {...}
}
}
PostgreSQL Notes: PostgreSQL does not have the queries_gtid_sync column.
Returns error tracking statistics with frequency analysis.
Parameters:
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
db_type | "mysql" | "pgsql" | No | "mysql" | Database type |
errno | int | No | (none) | Filter by error number (MySQL) |
sqlstate | string | No | (none) | Filter by SQLSTATE (PostgreSQL) |
username | string | No | (none) | Filter by username |
database | string | No | (none) | Filter by database name |
hostgroup | int | No | (none) | Filter by hostgroup ID |
min_count | int | No | (none) | Only show errors with count >= N |
sort_by | "count" | "first_seen" | "last_seen" | No | "count" | Sort order |
limit | int | No | 100 | Maximum number of results |
offset | int | No | 0 | Skip first N results |
Response (MySQL):
{
"success": true,
"result": {
"db_type": "mysql",
"total_error_types": 12,
"total_error_count": 234,
"errors": [
{
"hostgroup": 10,
"hostname": "db-server-01",
"port": 3306,
"username": "app_user",
"client_address": "10.0.1.50",
"database": "production_db",
"errno": 1062,
"count_star": 45,
"first_seen": 1737440000,
"last_seen": 1737446400,
"last_error": "Duplicate entry '123' for key 'PRIMARY'",
"frequency_per_hour": 7.5
}
],
"summary": {
"by_errno": {
"1062": 45,
"1045": 12,
"2003": 5
},
"by_hostgroup": {
"10": 42,
"20": 20
}
}
}
}
Response (PostgreSQL):
PostgreSQL uses sqlstate instead of errno:
{
"success": true,
"result": {
"db_type": "pgsql",
"total_error_types": 8,
"total_error_count": 156,
"errors": [
{
"hostgroup": 10,
"hostname": "pg-server-01",
"port": 5432,
"username": "app_user",
"client_address": "10.0.1.50",
"database": "production_db",
"sqlstate": "23505",
"count_star": 32,
"first_seen": 1737440000,
"last_seen": 1737446400,
"last_error": "duplicate key value violates unique constraint",
"frequency_per_hour": 5.3
}
],
"summary": {
"by_sqlstate": {
"23505": 32,
"28P01": 8,
"08006": 3
},
"by_hostgroup": {
"10": 30,
"20": 13
}
}
}
}
Returns connection statistics per user.
Parameters:
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
db_type | "mysql" | "pgsql" | No | "mysql" | Database type |
username | string | No | (none) | Filter by specific username |
limit | int | No | 100 | Maximum number of users to return |
offset | int | No | 0 | Skip first N results |
Response:
{
"success": true,
"result": {
"db_type": "mysql",
"users": [
{
"username": "app_user",
"frontend_connections": 120,
"frontend_max_connections": 200,
"utilization_pct": 60.0,
"status": "normal"
},
{
"username": "admin_user",
"frontend_connections": 5,
"frontend_max_connections": 10,
"utilization_pct": 50.0,
"status": "normal"
},
{
"username": "batch_user",
"frontend_connections": 48,
"frontend_max_connections": 50,
"utilization_pct": 96.0,
"status": "near_limit"
}
],
"summary": {
"total_users": 15,
"total_connections": 245,
"total_capacity": 500,
"overall_utilization_pct": 49.0
}
}
}
Status Values:
normal - Below 80% utilizationnear_limit - Between 80% and 100% utilizationat_limit - At 100% utilizationReturns client host error cache for connection throttling analysis.
Parameters:
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
db_type | "mysql" | "pgsql" | No | "mysql" | Database type |
client_address | string | No | (none) | Filter by specific client IP |
min_error_count | int | No | (none) | Only show hosts with error count >= N |
limit | int | No | 100 | Maximum number of hosts to return |
offset | int | No | 0 | Skip first N results |
Response:
{
"success": true,
"result": {
"db_type": "mysql",
"hosts": [
{
"client_address": "10.0.1.50",
"error_count": 15,
"last_updated": 1737446400
},
{
"client_address": "10.0.1.51",
"error_count": 3,
"last_updated": 1737445000
}
],
"summary": {
"total_hosts": 12,
"total_errors": 45
}
}
}
Returns query rule hit statistics.
Parameters:
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
db_type | "mysql" | "pgsql" | No | "mysql" | Database type |
rule_id | int | No | (none) | Filter by specific rule ID |
min_hits | int | No | (none) | Only show rules with hits >= N |
include_zero_hits | bool | No | false | Include rules with zero hits |
limit | int | No | 100 | Maximum number of rules to return |
offset | int | No | 0 | Skip first N results |
Response:
{
"success": true,
"result": {
"db_type": "mysql",
"total_rules": 50,
"rules": [
{
"rule_id": 1,
"hits": 45678
},
{
"rule_id": 2,
"hits": 23456
},
{
"rule_id": 5,
"hits": 12345
}
],
"summary": {
"total_hits": 234567,
"rules_with_hits": 35,
"rules_without_hits": 15
}
}
}
Returns prepared statement information.
Parameters:
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
db_type | "mysql" | "pgsql" | No | "mysql" | Database type |
username | string | No | (none) | Filter by username |
database | string | No | (none) | Filter by database name |
Response (MySQL):
{
"success": true,
"result": {
"db_type": "mysql",
"total_statements": 45,
"statements": [
{
"global_stmt_id": 1,
"database": "production_db",
"username": "app_user",
"digest": "0x3A2B4C5D6E7F8A9B",
"ref_count_client": 10,
"ref_count_server": 5,
"num_columns": 8,
"num_params": 2,
"query": "SELECT * FROM orders WHERE id = ? AND status = ?"
}
]
}
}
Response (PostgreSQL):
PostgreSQL uses num_param_types instead of num_columns/num_params:
{
"success": true,
"result": {
"db_type": "pgsql",
"total_statements": 32,
"statements": [
{
"global_stmt_id": 1,
"database": "production_db",
"username": "app_user",
"digest": "0x3A2B4C5D6E7F8A9B",
"ref_count_client": 8,
"ref_count_server": 4,
"num_param_types": 2,
"query": "SELECT * FROM orders WHERE id = $1 AND status = $2"
}
]
}
}
Returns GTID (Global Transaction ID) replication information.
Note: This tool is MySQL-only. GTID is a MySQL-specific replication feature. There is no db_type parameter.
Parameters:
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
hostname | string | No | (none) | Filter by backend server hostname |
port | int | No | (none) | Filter by backend server port |
Response:
{
"success": true,
"result": {
"servers": [
{
"hostname": "db-server-01",
"port": 3306,
"gtid_executed": "3E11FA47-71CA-11E1-9E33-C80AA9429562:1-12345:23456-56789",
"events": 678901
},
{
"hostname": "db-server-02",
"port": 3306,
"gtid_executed": "3E11FA47-71CA-11E1-9E33-C80AA9429562:1-12340",
"events": 678500
}
],
"summary": {
"total_servers": 3,
"total_events": 2036703
}
}
}
Returns ProxySQL cluster node health, synchronization status, and configuration checksums.
Note: This tool does not have a db_type parameter as cluster tables are shared.
Parameters:
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
hostname | string | No | (none) | Filter by specific node hostname |
include_checksums | bool | No | true | Include configuration checksums |
Response:
{
"success": true,
"result": {
"cluster_health": "healthy",
"total_nodes": 3,
"online_nodes": 3,
"master_node": "proxysql-01:6032",
"nodes": [
{
"hostname": "proxysql-01",
"port": 6032,
"weight": 1000,
"master": true,
"global_version": 100,
"check_age_us": 50000,
"ping_time_us": 1234,
"checks_ok": 9998,
"checks_err": 2,
"check_success_rate": 0.9998,
"uptime_s": 8640000,
"queries": 567890,
"client_connections": 245
},
{
"hostname": "proxysql-02",
"port": 6032,
"weight": 1000,
"master": false,
"global_version": 100,
"check_age_us": 48000,
"ping_time_us": 1456,
"checks_ok": 9995,
"checks_err": 5,
"check_success_rate": 0.9995,
"uptime_s": 8640000,
"queries": 534567,
"client_connections": 230
}
],
"checksums": [
{
"hostname": "proxysql-01",
"port": 6032,
"name": "mysql_servers",
"version": 75,
"epoch": 1737446400,
"checksum": "0x1A2B3C4D5E6F",
"changed_at": 1737440000,
"updated_at": 1737446400,
"diff_check": 0
},
{
"hostname": "proxysql-02",
"port": 6032,
"name": "mysql_servers",
"version": 75,
"epoch": 1737446400,
"checksum": "0x1A2B3C4D5E6F",
"changed_at": 1737440000,
"updated_at": 1737446400,
"diff_check": 0
}
],
"summary": {
"config_in_sync": true,
"nodes_in_sync": 3,
"nodes_out_of_sync": 0,
"total_queries_all_nodes": 1703456,
"total_client_connections": 735,
"avg_ping_time_us": 1350
}
}
}
Cluster Health Values:
healthy - All nodes online and in syncdegraded - Some nodes offline or out of syncunhealthy - Majority of nodes have issuesReturns historical CPU and memory usage trends.
Note: This tool does not have a db_type parameter as system metrics are shared.
Parameters:
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
metric | "cpu" | "memory" | "all" | No | "all" | Which metrics to return |
interval | "30m" | "1h" | "2h" | "4h" | "6h" | "8h" | "12h" | "1d" | "3d" | "7d" | "30d" | "90d" | No | "1h" | How far back to look |
Table Selection: Intervals ≤6h use raw tables; intervals ≥8h use hourly aggregated tables.
Response:
{
"success": true,
"result": {
"interval": "1h",
"resolution": "raw",
"cpu": [
{
"timestamp": 1737446400,
"tms_utime": 12345,
"tms_stime": 5678
},
{
"timestamp": 1737446460,
"tms_utime": 12400,
"tms_stime": 5700
}
],
"memory": [
{
"timestamp": 1737446400,
"allocated": 536870912,
"resident": 398458880,
"active": 304087040,
"mapped": 524288000,
"metadata": 10485760,
"retained": 52428800
},
{
"timestamp": 1737446460,
"allocated": 540000000,
"resident": 400000000,
"active": 306000000,
"mapped": 525000000,
"metadata": 10500000,
"retained": 52500000
}
]
}
}
Note: Memory metrics require jemalloc. If ProxySQL was built without jemalloc (NOJEM), the memory array will be empty.
Returns historical query cache performance metrics.
Parameters:
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
db_type | "mysql" | "pgsql" | No | "mysql" | Database type |
interval | "30m" | "1h" | "2h" | "4h" | "6h" | "8h" | "12h" | "1d" | "3d" | "7d" | "30d" | "90d" | No | "1h" | How far back to look |
PostgreSQL Support: Historical query cache data is only available for MySQL. When db_type="pgsql", this tool returns an error.
Response:
{
"success": true,
"result": {
"db_type": "mysql",
"interval": "1h",
"resolution": "raw",
"data": [
{
"timestamp": 1737446400,
"count_GET": 45678,
"count_GET_OK": 38234,
"count_SET": 12345,
"bytes_IN": 45678901,
"bytes_OUT": 234567890,
"entries_purged": 123,
"entries_in_cache": 4567,
"memory_bytes": 52428800,
"hit_rate": 0.837
}
]
}
}
Returns historical connection metrics at global or per-server level.
Parameters:
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
db_type | "mysql" | "pgsql" | No | "mysql" | Database type |
interval | "30m" | "1h" | "2h" | "4h" | "6h" | "8h" | "12h" | "1d" | "3d" | "7d" | "30d" | "90d" | No | "1h" | How far back to look |
scope | "global" | "per_server" | "all" | No | "global" | Level of detail |
hostgroup | int | No | (none) | Filter per_server by hostgroup |
server | string | No | (none) | Filter per_server by server (format: host:port) |
PostgreSQL Support: Historical connection data is only available for MySQL. When db_type="pgsql", this tool returns an error.
Response with scope="global":
{
"success": true,
"result": {
"db_type": "mysql",
"interval": "1h",
"resolution": "raw",
"scope": "global",
"global": {
"connections": [
{
"timestamp": 1737446400,
"Client_Connections_aborted": 5,
"Client_Connections_connected": 245,
"Client_Connections_created": 1500,
"Server_Connections_aborted": 2,
"Server_Connections_connected": 120,
"Server_Connections_created": 800,
"ConnPool_get_conn_failure": 3,
"ConnPool_get_conn_immediate": 500,
"ConnPool_get_conn_success": 1200,
"Questions": 15678,
"Slow_queries": 12,
"GTID_consistent_queries": 100
}
],
"myhgm": [
{
"timestamp": 1737446400,
"MyHGM_myconnpoll_destroy": 50,
"MyHGM_myconnpoll_get": 1200,
"MyHGM_myconnpoll_get_ok": 1197,
"MyHGM_myconnpoll_push": 1150,
"MyHGM_myconnpoll_reset": 10
}
]
}
}
}
Response with scope="per_server":
{
"success": true,
"result": {
"db_type": "mysql",
"interval": "1h",
"resolution": "raw",
"scope": "per_server",
"per_server": [
{
"timestamp": 1737446400,
"hostgroup": 10,
"srv_host": "db-server-01",
"srv_port": 3306,
"status": "ONLINE",
"conn_used": 45,
"conn_free": 55,
"conn_ok": 123456,
"conn_err": 23,
"max_conn_used": 100,
"queries": 5678,
"queries_gtid_sync": 5500,
"bytes_data_sent": 1234567,
"bytes_data_recv": 7654321,
"latency_us": 1500
}
]
}
}
Response with scope="all":
{
"success": true,
"result": {
"db_type": "mysql",
"interval": "1h",
"resolution": "raw",
"scope": "all",
"global": {
"connections": [...],
"myhgm": [...]
},
"per_server": [...]
}
}
Returns historical query digest snapshots for trend analysis.
Parameters:
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
db_type | "mysql" | "pgsql" | No | "mysql" | Database type |
dump_time | int | No | (none) | Filter by specific snapshot timestamp |
start_time | int | No | (none) | Start of time range (Unix timestamp) |
end_time | int | No | (none) | End of time range (Unix timestamp) |
digest | string | No | (none) | Filter by specific query digest |
username | string | No | (none) | Filter by username |
database | string | No | (none) | Filter by database name |
limit | int | No | 100 | Maximum results per snapshot |
offset | int | No | 0 | Skip first N results |
Note: Query history is only populated when SAVE MYSQL DIGEST TO DISK (or the equivalent for PostgreSQL) has been executed, either manually or via the periodic timer.
Response:
{
"success": true,
"result": {
"db_type": "mysql",
"snapshots": [
{
"dump_time": 1737446400,
"queries": [
{
"hostgroup": 10,
"database": "production_db",
"username": "app_user",
"client_address": "10.0.1.50",
"digest": "0x3A2B4C5D6E7F8A9B",
"digest_text": "SELECT * FROM orders WHERE status = ?",
"count_star": 5000,
"first_seen": 1737442800,
"last_seen": 1737446399,
"sum_time_us": 15000000,
"min_time_us": 1200,
"max_time_us": 50000,
"sum_rows_affected": 0,
"sum_rows_sent": 5000000
}
]
},
{
"dump_time": 1737450000,
"queries": [
{
"hostgroup": 10,
"database": "production_db",
"username": "app_user",
"client_address": "10.0.1.50",
"digest": "0x3A2B4C5D6E7F8A9B",
"digest_text": "SELECT * FROM orders WHERE status = ?",
"count_star": 6200,
"first_seen": 1737446400,
"last_seen": 1737449999,
"sum_time_us": 18600000,
"min_time_us": 1100,
"max_time_us": 55000,
"sum_rows_affected": 0,
"sum_rows_sent": 6200000
}
]
}
],
"summary": {
"total_snapshots": 2,
"earliest_snapshot": 1737446400,
"latest_snapshot": 1737450000
}
}
}
Flushes query events from the circular buffer into queryable tables.
Note: This tool is MySQL-only. Query event logging is not available for PostgreSQL. There is no db_type parameter.
Parameters:
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
destination | "memory" | "disk" | "both" | No | "memory" | Where to flush events |
Response:
{
"success": true,
"result": {
"events_flushed": 1234,
"destination": "memory"
}
}
Note: This operation drains the circular buffer. Events are removed from the buffer after flushing.
Returns individual query execution events from the audit log.
Note: This tool is MySQL-only. Query event logging is not available for PostgreSQL. There is no db_type parameter. Query events must be flushed before they become visible. Use flush_query_log first.
Parameters:
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
source | "memory" | "disk" | No | "memory" | Which table to read from |
username | string | No | (none) | Filter by username |
database | string | No | (none) | Filter by database name |
query_digest | string | No | (none) | Filter by digest hash |
server | string | No | (none) | Filter by backend server |
errno | int | No | (none) | Filter by error number |
errors_only | bool | No | false | Only show queries with errors |
start_time | int | No | (none) | Start of time range (Unix timestamp) |
end_time | int | No | (none) | End of time range (Unix timestamp) |
limit | int | No | 100 | Maximum results |
offset | int | No | 0 | Skip first N results |
Response:
{
"success": true,
"result": {
"source": "memory",
"total_events": 1234,
"events": [
{
"thread_id": 67,
"username": "app_user",
"database": "production_db",
"start_time": 1737446400,
"end_time": 1737446401,
"query_digest": "0x3A2B4C5D6E7F8A9B",
"query": "SELECT * FROM orders WHERE id = 12345",
"server": "db-server-01:3306",
"client": "10.0.1.50:54321",
"event_type": 1,
"hostgroup": 10,
"affected_rows": 0,
"rows_sent": 1,
"errno": 0,
"error": null
}
],
"summary": {
"total_errors": 5,
"time_range": {
"earliest": 1737440000,
"latest": 1737446400
}
}
}
}
Saves current query digest statistics to disk and resets the in-memory counters.
Parameters:
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
db_type | "mysql" | "pgsql" | No | "mysql" | Database type |
Response:
{
"success": true,
"result": {
"db_type": "mysql",
"digests_saved": 1234,
"dump_time": 1737446400
}
}
Important: This operation resets the live query digest statistics. After flushing:
show_queries will return empty results until new queries accumulateshow_query_history| Tool | PostgreSQL Support |
|---|---|
show_status | Full |
show_processlist | Full |
show_queries | Full |
show_commands | Full |
show_connections | Full |
show_errors | Full |
show_users | Full |
show_client_cache | Full |
show_query_rules | Full |
show_prepared_statements | Full |
show_gtid | Not applicable (MySQL only) |
show_cluster | N/A (shared tables) |
show_system_history | N/A (shared tables) |
show_query_cache_history | Not supported (MySQL only data) |
show_connection_history | Not supported (MySQL only data) |
show_query_history | Full |
flush_query_log | Not supported (MySQL only) |
show_query_log | Not supported (MySQL only) |
flush_queries | Full |