MySQL 数据库管理与运维操作命令大全

0 阅读16分钟

说明:MySQL管理与运维涉及数据库的日常监控、备份恢复、日志管理、性能调优、复制维护等方面。本指南涵盖 DBA 日常工作中最常用的运维命令,附详细语法和实用示例。


一、监控与诊断命令

1.1 SHOW STATUS:服务器状态监控

SHOW STATUS 用于查看 MySQL 服务器的运行状态变量,这些变量是服务器从启动开始累计的计数器,而非瞬时值。

语法

-- 查看所有会话级别状态变量
SHOW STATUS;

-- 查看全局级别状态变量(推荐使用)
SHOW GLOBAL STATUS;

-- 使用 LIKE 模式过滤
SHOW GLOBAL STATUS LIKE 'Threads%';
SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool%';

示例

-- 查看连接数
SHOW GLOBAL STATUS LIKE 'Threads_connected';

-- 查看服务器运行时间(秒)
SHOW GLOBAL STATUS LIKE 'Uptime';

-- 查看总查询次数
SHOW GLOBAL STATUS LIKE 'Queries';

-- 查看 InnoDB 缓冲池相关指标
SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool_read%';

常用监控指标

指标说明判断建议
Threads_connected当前打开的连接数接近 max_connections 时需扩容
Threads_running当前正在执行的线程数过高说明并发压力大
Uptime服务器运行时间(秒)可评估稳定性
Queries从启动至今的总查询次数结合 Uptime 计算 QPS
Slow_queries慢查询总数与阈值比较判断慢查询配置
Innodb_buffer_pool_read_requests逻辑读请求次数
Innodb_buffer_pool_reads物理读次数物理读比例越低越好
Handler_read_rnd_next全表扫描时读下一行的次数数值过大说明存在全表扫描

重置会话计数器

FLUSH STATUS;   -- 将会话级别计数器清零
-- 执行待分析查询
SELECT * FROM large_table WHERE condition;
-- 查看相关计数器
SHOW STATUS WHERE Variable_name LIKE 'Handler%';

执行后可通过 Handler_read_rnd_next 等指标分析查询是否执行了全表扫描。

1.2 SHOW VARIABLES:查看配置参数

语法

SHOW VARIABLES;
SHOW GLOBAL VARIABLES;
SHOW VARIABLES LIKE 'max_connections';
SHOW GLOBAL VARIABLES LIKE 'innodb%';

示例

-- 查看最大连接数
SHOW VARIABLES LIKE 'max_connections';

-- 查看缓冲池大小
SHOW VARIABLES LIKE 'innodb_buffer_pool_size';

-- 查看所有与超时相关的配置
SHOW VARIABLES LIKE '%timeout%';

1.3 SHOW PROCESSLIST:查看当前连接和查询

语法

SHOW PROCESSLIST;
SHOW FULL PROCESSLIST;   -- 显示完整 SQL 语句

示例

-- 查看所有正在运行的查询
SHOW FULL PROCESSLIST;

-- 在终端中自动刷新(Linux 命令行)
mysqladmin -u root -p processlist

诊断思路:通过 Time 列查看执行时长,通过 State 列(如 LockedCopying to tmp table)判断异常状态。

终止长时间运行的查询

-- 先找到连接 ID(Id 列)
SHOW PROCESSLIST;
-- 终止指定连接
KILL CONNECTION 123;   -- 礼貌关闭连接
KILL QUERY 123;        -- 仅终止当前查询,不关闭连接

1.4 SHOW ENGINE:查看存储引擎状态

语法

SHOW ENGINE INNODB STATUS\G

说明:该命令输出 InnoDB 存储引擎的详细运行状态,包括事务列表、锁信息、缓冲池统计、I/O 活动等。

示例

-- 查看 InnoDB 状态
SHOW ENGINE INNODB STATUS\G

-- 查看事务信息(较简洁的替代方式)
SELECT * FROM information_schema.INNODB_TRX;

1.5 EXPLAIN:分析查询执行计划

语法

EXPLAIN SELECT 查询语句;
EXPLAIN FORMAT=JSON SELECT 查询语句;   -- JSON 格式输出

示例

-- 基本用法
EXPLAIN SELECT * FROM users WHERE age > 30;

-- 分析多表连接查询
EXPLAIN SELECT u.name, o.order_id 
FROM users u 
INNER JOIN orders o ON u.id = o.user_id 
WHERE u.status = 'active';

EXPLAIN 关键字段解读

字段含义优化建议
type访问类型(ALL → index → range → ref → eq_ref → const → system,从左到右性能提升)应避免 ALL(全表扫描)
possible_keys可能使用的索引
key实际使用的索引若为 NULL,需考虑添加索引
rows预估扫描行数数值越小越好
Extra额外信息(如 Using filesortUsing temporary出现 Using filesortUsing temporary 时需优化查询或索引

1.6 Performance Schema:内置性能监控框架

Performance Schema 是 MySQL 原生的性能监控框架,用于收集数据库运行时的低级指标(如 SQL 执行、锁等待等)。

启用 Performance Schema(需 SUPER 权限):

# 在 my.cnf 中添加
performance_schema = ON

示例查询

-- 查看当前活跃连接及执行的查询
SELECT * FROM performance_schema.events_statements_current;

-- 统计慢查询 TOP10(按总执行时间排序)
SELECT DIGEST_TEXT, COUNT_STAR, SUM_TIMER_WAIT / 1000000000000 AS total_sec
FROM performance_schema.events_statements_summary_by_digest
ORDER BY SUM_TIMER_WAIT DESC
LIMIT 10;

-- 查看全局锁等待时间
SELECT * FROM performance_schema.events_waits_summary_global_by_event_name;

1.7 SHOW PROFILE:单条 SQL 性能剖析

语法

SET profiling = 1;        -- 启用 profiling
SELECT * FROM users WHERE age > 30;
SHOW PROFILES;            -- 显示已记录的查询列表
SHOW PROFILE FOR QUERY 1; -- 查看指定查询的详细剖析
SET profiling = 0;        -- 关闭 profiling

MySQL 8.0 中 SHOW PROFILE 标记为 deprecated,推荐使用 Performance Schema 作为替代。

1.8 mysqladmin:轻量级命令行工具

mysqladmin 是 MySQL 自带的命令行管理工具,可在操作系统终端直接运行。

常用命令

# 查看服务器状态摘要
mysqladmin -u root -p status

# 查看扩展状态(每分钟刷新)
mysqladmin -u root -p extended-status

# 查看服务器版本
mysqladmin -u root -p version

# 查看当前连接数
mysqladmin -u root -p processlist

# 检查服务器是否存活
mysqladmin -u root -p ping

# 关闭 MySQL 服务
mysqladmin -u root -p shutdown

# 重新加载权限表
mysqladmin -u root -p reload

# 刷新所有日志(日志切换)
mysqladmin -u root -p flush-logs

二、备份与恢复命令

2.1 mysqldump:逻辑备份

mysqldump 是 MySQL 官方提供的逻辑备份工具,将数据库导出为 SQL 语句。

语法

mysqldump -u 用户名 -p [选项] [数据库名] [表名] > 备份文件.sql

示例

# 备份单个数据库
mysqldump -u root -p mydb > mydb_backup.sql

# 备份多个表
mysqldump -u root -p mydb users orders > users_orders_backup.sql

# 备份所有数据库
mysqldump -u root -p --all-databases > all_databases_backup.sql

# 仅备份表结构(不备份数据)
mysqldump -u root -p --no-data mydb > mydb_structure.sql

# 仅备份数据(不备份表结构)
mysqldump -u root -p --no-create-info mydb > mydb_data.sql

# 备份时包含存储过程和事件
mysqldump -u root -p --routines --events mydb > mydb_full.sql

# 备份时使用事务保证一致性
mysqldump -u root -p --single-transaction mydb > mydb_consistent.sql

# 备份时锁表(适用于 MyISAM)
mysqldump -u root -p --lock-all-tables mydb > mydb_locked.sql

常用 mysqldump 选项

选项说明
--single-transaction使用事务保证一致性,适用于 InnoDB
--lock-all-tables锁所有表,适用于 MyISAM
--no-data仅导出表结构
--no-create-info仅导出数据
--routines包含存储过程和函数
--events包含事件调度器
--where='condition'按条件导出部分数据
--compress传输时压缩数据
--master-data[=1/2]在备份中添加 CHANGE MASTER

2.2 数据恢复:mysql 命令

语法

mysql -u 用户名 -p [数据库名] < 备份文件.sql

示例

# 恢复整个数据库(备份文件中包含 CREATE DATABASE)
mysql -u root -p < all_databases_backup.sql

# 先创建数据库再恢复
mysql -u root -p -e "CREATE DATABASE newdb;"
mysql -u root -p newdb < mydb_backup.sql

# 恢复时显示执行进度
pv backup.sql | mysql -u root -p mydb

在 MySQL 客户端内恢复

USE target_db;
SOURCE /path/to/backup.sql;

2.3 物理备份工具简介

工具说明特点
Percona XtraBackup开源物理备份工具支持热备,不锁表,适用于 InnoDB
MySQL Enterprise Backup官方企业版备份工具支持增量备份、压缩、加密
cp / rsync直接复制数据文件需停止服务,适用于冷备

XtraBackup 基本用法

# 全量备份
xtrabackup --backup --target-dir=/backup/full --datadir=/var/lib/mysql

# 准备备份(应用重做日志)
xtrabackup --prepare --target-dir=/backup/full

# 恢复备份
xtrabackup --copy-back --target-dir=/backup/full

2.4 表维护操作

检查表

CHECK TABLE 表名;
CHECK TABLE 表名 QUICK;   -- 快速检查

修复表

REPAIR TABLE 表名;
REPAIR TABLE 表名 QUICK;

优化表

OPTIMIZE TABLE 表名;

分析表(更新索引统计信息):

ANALYZE TABLE 表名;

三、日志管理命令

3.1 错误日志(Error Log)

错误日志记录 MySQL 启动、运行和关闭过程中的错误信息、警告信息,是问题排查的首要依据。

查看错误日志路径

SHOW VARIABLES LIKE 'log_error';

查看日志内容(在操作系统终端):

tail -f /var/log/mysql/error.log

3.2 二进制日志(Binary Log)

二进制日志记录所有数据变更操作,用于数据恢复和主从复制。

查看二进制日志状态

-- 查看二进制日志是否启用
SHOW VARIABLES LIKE 'log_bin';

-- 查看所有二进制日志文件列表
SHOW BINARY LOGS;
SHOW MASTER LOGS;   -- 与 SHOW BINARY LOGS 等价

查看主库当前状态

SHOW MASTER STATUS;

输出示例:

+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000005 | 120      |              |                  |
+------------------+----------+--------------+------------------+

清理二进制日志

-- 删除指定文件之前的所有日志
PURGE BINARY LOGS TO 'mysql-bin.000010';

-- 删除指定时间之前的所有日志
PURGE BINARY LOGS BEFORE '2026-01-01 00:00:00';

-- 删除所有二进制日志,重置编号为 000001
RESET MASTER;

PURGE BINARY LOGS 在从库正在复制时也可安全执行,但需确保目标日志文件未被从库读取。

查看二进制日志内容

使用 mysqlbinlog 命令行工具:

# 查看日志内容
mysqlbinlog /var/lib/mysql/mysql-bin.000001

# 按时间范围查看
mysqlbinlog --start-datetime="2026-01-01 00:00:00" \
            --stop-datetime="2026-01-02 00:00:00" \
            mysql-bin.000001

# 按位置范围查看
mysqlbinlog --start-position=120 --stop-position=500 mysql-bin.000001

# 重放日志到数据库
mysqlbinlog mysql-bin.000001 | mysql -u root -p

自动清理配置

-- 查看当前过期天数(MySQL 5.7)
SHOW VARIABLES LIKE 'expire_logs_days';

-- 查看当前过期秒数(MySQL 8.0)
SHOW VARIABLES LIKE 'binlog_expire_logs_seconds';

设置自动清理(推荐在 my.cnf 中配置):

# MySQL 5.7
expire_logs_days = 7

# MySQL 8.0
binlog_expire_logs_seconds = 604800  # 7天 = 604800秒

3.3 慢查询日志(Slow Query Log)

慢查询日志用于记录执行时间超过指定阈值的 SQL 语句,是性能优化的核心工具。

启用慢查询日志

配置文件方式(持久化):

[mysqld]
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow-query.log
long_query_time = 2
log_queries_not_using_indexes = 1

动态设置方式(即时生效):

SET GLOBAL slow_query_log = ON;
SET GLOBAL slow_query_log_file = '/var/log/mysql/slow-query.log';
SET GLOBAL long_query_time = 2;
SET GLOBAL log_queries_not_using_indexes = ON;

查看慢查询日志配置

SHOW VARIABLES LIKE 'slow_query_log%';
SHOW VARIABLES LIKE 'long_query_time';
SHOW VARIABLES LIKE 'log_queries_not_using_indexes';

分析慢查询日志

使用 mysqldumpslow(MySQL 自带):

# 按执行时间排序,显示前10条
mysqldumpslow -s t -t 10 /var/log/mysql/slow-query.log

# 按平均执行时间排序
mysqldumpslow -s at /var/log/mysql/slow-query.log

# 按扫描行数排序
mysqldumpslow -s r /var/log/mysql/slow-query.log

使用 pt-query-digest(Percona Toolkit):

pt-query-digest /var/log/mysql/slow-query.log > slow_report.txt

3.4 通用查询日志(General Query Log)

记录所有客户端连接和执行的 SQL 语句。

启用

SET GLOBAL general_log = ON;
SET GLOBAL general_log_file = '/var/log/mysql/general.log';

3.5 日志文件刷新

-- 刷新所有日志(关闭并重新打开所有日志文件)
FLUSH LOGS;

-- 刷新二进制日志(产生新的 binlog 文件)
FLUSH BINARY LOGS;

-- 刷新错误日志
FLUSH ERROR LOGS;

四、复制管理命令

4.1 查看复制状态

在主库执行(查看所有连接到主库的 slave):

SHOW SLAVE HOSTS;

在从库执行(查看从库复制状态):

SHOW SLAVE STATUS\G

关键输出字段:

字段含义
Slave_IO_RunningIO 线程状态,应为 Yes
Slave_SQL_RunningSQL 线程状态,应为 Yes
Master_Host主库地址
Master_Log_File主库当前读取的 binlog 文件
Read_Master_Log_Pos已读取到的位置
Relay_Log_File中继日志文件名
Relay_Log_Pos中继日志位置
Seconds_Behind_Master从库延迟秒数
Last_IO_ErrorIO 线程最后错误
Last_SQL_ErrorSQL 线程最后错误

4.2 配置复制(CHANGE MASTER TO)

语法(MySQL 8.0.23 之前):

CHANGE MASTER TO
    MASTER_HOST = 'master_host',
    MASTER_USER = 'replication_user',
    MASTER_PASSWORD = 'password',
    MASTER_LOG_FILE = 'mysql-bin.000001',
    MASTER_LOG_POS = 120;

MySQL 8.0.23 之后的语法

CHANGE REPLICATION SOURCE TO
    SOURCE_HOST = 'master_host',
    SOURCE_USER = 'replication_user',
    SOURCE_PASSWORD = 'password',
    SOURCE_LOG_FILE = 'mysql-bin.000001',
    SOURCE_LOG_POS = 120;

4.3 启动和停止复制

启动复制

START SLAVE;
-- 或者仅启动特定线程
START SLAVE IO_THREAD;    -- 仅启动 IO 线程
START SLAVE SQL_THREAD;   -- 仅启动 SQL 线程

停止复制

STOP SLAVE;
STOP SLAVE IO_THREAD;
STOP SLAVE SQL_THREAD;

4.4 重置复制

-- 重置从库(删除中继日志和复制状态,需先停止 SLAVE)
RESET SLAVE;

-- 重置主库(删除所有二进制日志,重新开始)
RESET MASTER;

4.5 跳过复制错误

-- 跳过当前复制错误(风险操作,会丢失数据一致性)
SET GLOBAL sql_slave_skip_counter = 1;
START SLAVE;

-- 或设置 SLAVE 自动跳过错误(不推荐生产环境)
CHANGE MASTER TO MASTER_HOST='...', MASTER_LOG_POS=xxx;

五、服务器维护命令

5.1 启停 MySQL 服务

Linux(systemd)

sudo systemctl start mysql
sudo systemctl stop mysql
sudo systemctl restart mysql
sudo systemctl status mysql

Linux(SysV init)

sudo service mysql start
sudo service mysql stop
sudo service mysql restart

Windows

net start MySQL
net stop MySQL

5.2 检查服务器状态

-- 查看服务器版本
SELECT VERSION();

-- 查看当前数据库名
SELECT DATABASE();

-- 查看当前用户
SELECT USER();
SELECT CURRENT_USER();

-- 查看服务器所有状态变量
SHOW STATUS;

-- 查看服务器所有系统变量
SHOW VARIABLES;

5.3 连接管理

-- 查看最大连接数配置
SHOW VARIABLES LIKE 'max_connections';

-- 查看当前连接数
SHOW STATUS LIKE 'Threads_connected';

-- 查看连接使用率峰值
SHOW STATUS LIKE 'Max_used_connections';

5.4 存储引擎管理

-- 查看所有支持的存储引擎
SHOW ENGINES;

-- 查看默认存储引擎
SHOW VARIABLES LIKE 'default_storage_engine';

-- 查看表的存储引擎
SHOW TABLE STATUS LIKE 'users';
SELECT ENGINE FROM information_schema.tables WHERE table_name = 'users';

5.5 字符集管理

-- 查看所有可用的字符集
SHOW CHARACTER SET;

-- 查看所有可用的排序规则
SHOW COLLATION;

-- 查看当前字符集设置
SHOW VARIABLES LIKE 'character_set%';
SHOW VARIABLES LIKE 'collation%';

-- 设置客户端字符集
SET NAMES utf8mb4;

5.6 权限刷新

-- 重新加载权限表,使用 GRANT/REVOKE 后通常无需手动执行
FLUSH PRIVILEGES;

5.7 表缓存刷新

-- 关闭所有打开的表
FLUSH TABLES;

-- 关闭指定表并重新打开
FLUSH TABLES users, orders;

-- 清空查询缓存(MySQL 5.7)
FLUSH QUERY CACHE;

-- 关闭所有表并清空表缓存
FLUSH TABLES WITH READ LOCK;   -- 全局读锁(只读模式)
UNLOCK TABLES;                  -- 释放锁

5.8 主机缓存刷新

-- 清空主机缓存(用于解决更改主机名后的连接问题)
FLUSH HOSTS;

六、配置文件(my.cnf)管理

6.1 常用配置文件路径

系统常见路径
Linux(RPM 安装)/etc/my.cnf
Linux(Debian/Ubuntu)/etc/mysql/my.cnf/etc/mysql/mysql.conf.d/mysqld.cnf
WindowsC:\ProgramData\MySQL\MySQL Server X.Y\my.ini
macOS(Homebrew)/usr/local/etc/my.cnf

6.2 查看当前配置

-- 查看所有配置变量
SHOW VARIABLES;

-- 查看特定分组配置
SHOW VARIABLES LIKE 'innodb%';
SHOW VARIABLES LIKE 'log%';

6.3 核心配置参数示例

[mysqld]
# 基础配置
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
port=3306
user=mysql

# 字符集配置
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci

# 内存配置(以 16GB 内存服务器为例)
innodb_buffer_pool_size = 8G          # 建议物理内存的 50%-75%
innodb_log_file_size = 1G
innodb_log_buffer_size = 16M
query_cache_type = 0                   # MySQL 8.0 已移除查询缓存
tmp_table_size = 64M
max_heap_table_size = 64M
sort_buffer_size = 4M
join_buffer_size = 4M

# 连接配置
max_connections = 500
max_connect_errors = 100000
connect_timeout = 10
wait_timeout = 28800
interactive_timeout = 28800

# InnoDB 配置
innodb_flush_log_at_trx_commit = 1    # 最大安全性
innodb_flush_method = O_DIRECT
innodb_file_per_table = 1
innodb_autoinc_lock_mode = 2

# 日志配置
log_error = /var/log/mysql/error.log
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2
log_queries_not_using_indexes = 1

# 二进制日志
log_bin = /var/log/mysql/mysql-bin.log
binlog_format = ROW
expire_logs_days = 7
max_binlog_size = 1G
binlog_cache_size = 1M

# 其他
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
performance_schema = ON

6.4 配置文件验证

# 验证 my.cnf 语法
mysqld --verbose --help | grep -A 1 "Default options"

# 检查配置是否生效
mysqladmin -u root -p variables

七、性能调优辅助工具

7.1 MySQLTuner:一键式优化建议

# 下载运行
wget http://mysqltuner.pl -O mysqltuner.pl
chmod +x mysqltuner.pl
./mysqltuner.pl --user root --ask-pass

输出内容包含内存使用状态、存储引擎配置、查询缓存建议等,适合快速获取优化方向。

7.2 Percona Toolkit:专业工具箱

工具用途
pt-query-digest分析慢查询日志
pt-table-checksum检查主从数据一致性
pt-table-sync修复主从数据不一致
pt-online-schema-change在线修改表结构(不锁表)
pt-duplicate-key-checker查找重复冗余索引
pt-index-usage分析索引使用情况
pt-heartbeat监控主从复制延迟
pt-kill自动杀死长时间运行的查询

示例

# 分析慢查询日志
pt-query-digest /var/log/mysql/slow.log > report.txt

# 在线修改表结构(添加列,不锁表)
pt-online-schema-change --alter "ADD COLUMN c1 INT" D=test,t=users

7.3 实时监控工具

# Innotop - InnoDB 实时监控
innotop -u root -p

# Mytop - 类似 top 的 MySQL 监控
mytop --prompt

八、常用运维 SQL 脚本

8.1 查看数据库大小

SELECT 
    table_schema AS '数据库',
    ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS '大小(MB)'
FROM information_schema.tables
GROUP BY table_schema
ORDER BY SUM(data_length + index_length) DESC;

8.2 查看当前所有连接

SELECT 
    id, user, host, db, command, time, state, 
    SUBSTRING(info, 1, 100) AS query_preview
FROM information_schema.processlist
WHERE command != 'Sleep'
ORDER BY time DESC;

8.3 查看未使用的索引

SELECT 
    t.table_schema, t.table_name, s.index_name
FROM information_schema.statistics s
LEFT JOIN information_schema.tables t 
    ON s.table_schema = t.table_schema AND s.table_name = t.table_name
WHERE s.index_name != 'PRIMARY';

8.4 查看锁等待情况(MySQL 8.0)

SELECT * FROM performance_schema.data_locks;
SELECT * FROM performance_schema.data_lock_waits;

8.5 查看 InnoDB 缓冲池使用率

SELECT 
    (SELECT COUNT(*) FROM information_schema.INNODB_BUFFER_PAGE) AS pages,
    (SELECT COUNT(*) FROM information_schema.INNODB_BUFFER_POOL_STATS 
     WHERE pool_id = 0) AS pool_pages;

8.6 查看表碎片率

SELECT 
    table_name,
    ROUND(data_length / 1024 / 1024, 2) AS data_mb,
    ROUND(data_free / 1024 / 1024, 2) AS free_mb,
    ROUND(data_free / data_length * 100, 2) AS fragmentation_pct
FROM information_schema.tables 
WHERE data_length > 0 
ORDER BY fragmentation_pct DESC;

九、常见运维场景命令速查

场景命令
查看服务器是否存活mysqladmin -u root -p ping
查看所有进程SHOW FULL PROCESSLIST;
终止某连接KILL CONNECTION 123;
查看当前连接数SHOW STATUS LIKE 'Threads_connected';
查看慢查询数量SHOW STATUS LIKE 'Slow_queries';
刷新权限FLUSH PRIVILEGES;
刷新日志FLUSH LOGS;
刷新表缓存FLUSH TABLES;
全局只读锁FLUSH TABLES WITH READ LOCK; UNLOCK TABLES;
查看二进制日志列表SHOW BINARY LOGS;
清理过期二进制日志PURGE BINARY LOGS BEFORE NOW() - INTERVAL 7 DAY;
查看从库同步状态SHOW SLAVE STATUS\G
跳过复制错误(单次)STOP SLAVE; SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; START SLAVE;
分析执行计划EXPLAIN SELECT ...;

十、管理与运维最佳实践

方面建议
定期巡检每日:连接数、慢查询、磁盘空间;每周:表碎片、索引使用率;每月:备份恢复演练
预演恢复流程定期测试备份文件的恢复过程,确保备份文件的有效性
压测建议在大版本升级前进行压测,通过真实业务负载验证新版本性能和兼容性
监控报警将关键指标接入 Prometheus/Grafana 或 Zabbix 监控系统,配置阈值报警
计划窗口大规模数据操作必须在低峰时段进行;变更前务必完整备份

以上覆盖了 MySQL 管理与运维的主要操作命令,涵盖监控、备份恢复、日志管理、复制维护、配置文件管理、性能调优等方面。根据实际运维场景选择相应命令即可,对于不确定后果的操作(如 RESET MASTERDML 的批量操作),建议先在测试环境验证。