From 3e732813c892417fb82fe19e9b14b462aeadc7e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E5=BC=9F=E8=B0=83=E8=B0=83?= <398188662@qq.com> Date: Tue, 27 May 2025 13:42:27 +0800 Subject: [PATCH] doc: update docs/mysql.md #940 --- docs/mysql.md | 148 +++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 133 insertions(+), 15 deletions(-) diff --git a/docs/mysql.md b/docs/mysql.md index 79401125..e206504e 100644 --- a/docs/mysql.md +++ b/docs/mysql.md @@ -95,12 +95,35 @@ mysql> exit 退出 `quit;` 或 `\q;` 一样的效果 ### 备份 + -创建备份 +备份特定表 -```sql -mysqldump -u user -p db_name > db.sql +```bash +mysqldump -u user -p db_name table1 table2 > tables_backup.sql ``` + + +备份多个数据库 + +```bash +mysqldump -u user -p --databases db1 db2 > multi_backup.sql +``` + + +备份所有数据库 + +```bash +mysqldump -u user -p --all-databases > all_backup.sql +``` + + +备份时压缩 + +```bash +mysqldump -u user -p db_name | gzip > db_backup.sql.gz +``` + 导出不带架构的数据库 @@ -109,22 +132,117 @@ mysqldump -u user -p db_name --no-data=true --add-drop-table=false > db.sql ``` -恢复备份 +仅导出数据 -```shell -mysql -u user -p db_name < db.sql +```bash +mysqldump -u user -p --no-create-info db_name > only_data.sql +``` + + +仅导出结构 + +```bash +mysqldump -u user -p --no-data db_name > only_schema.sql +``` + + +导出时忽略某些表 + +```bash +mysqldump -u user -p db_name --ignore-table=db_name.table1 --ignore-table=db_name.table2 > partial.sql +``` + + +### 恢复备份 + + +恢复单个数据库备份 + +```bash +mysql -u user -p db_name < db_backup.sql ``` -### 错误处理 Error Handling +恢复多个数据库(带 `--databases` 选项备份的) -| 语句 | 描述 | -| :----------------------- | :----------------------------- | -| `SHOW ERRORS;` | 显示最近的错误信息 | -| `SHOW WARNINGS;` | 显示最近的警告信息 | -| `SHOW COUNT(*) ERRORS;` | 返回最近语句的错误数量 | -| `SHOW COUNT(*) WARNINGS;`| 返回最近语句的警告数量 | -| `EXPLAIN` | 分析 SQL 查询的执行计划,排查问题 | -| `SHOW ENGINE INNODB STATUS;` | 显示 InnoDB 引擎状态,包括死锁等错误信息 | +```bash +mysql -u user -p < multi_backup.sql +``` + +恢复所有数据库(使用 `--all-databases` 备份的) + +```bash +mysql -u user -p < all_backup.sql +``` + +从 gzip 压缩的备份恢复 + +```bash +gunzip < db_backup.sql.gz | mysql -u user -p db_name + +# 或: + +zcat db_backup.sql.gz | mysql -u user -p db_name +``` + + +恢复单张表(从 `mysqldump` 单表导出文件) + +```bash +mysql -u user -p db_name < table1_backup.sql +``` + + +先创建数据库再导入(如果备份中不包含 CREATE DATABASE) + +```bash +mysql -u user -p -e "CREATE DATABASE IF NOT EXISTS db_name;" + +mysql -u user -p db_name < db_backup.sql +``` + + +恢复指定字符集(防止乱码) + +```bash +mysql --default-character-set=utf8mb4 -u user -p db_name < db_backup.sql +``` + + +恢复时跳过某些错误(如重复键) + +```bash +mysql -u user -p --force db_name < db_backup.sql +``` + + +恢复到远程主机数据库 + +```bash +mysql -h remote_host -u user -p db_name < db_backup.sql +``` + + + +### 错误处理(Error Handling) + + +| 语句 | 说明 | +| :--------------------------- | :------------------------------ | +| `SHOW ERRORS;` | 显示最近的错误 | +| `SHOW WARNINGS;` | 显示最近的警告 | +| `SHOW COUNT(*) ERRORS;` | 显示错误数量 | +| `SHOW COUNT(*) WARNINGS;` | 显示警告数量 | +| `EXPLAIN SELECT ...;` | 分析查询执行计划 | +| `SHOW ENGINE INNODB STATUS;` | 查看 InnoDB 状态和死锁信息 | +| `SHOW PROFILE;` | 显示语句的资源消耗(需开启 profiling) | +| `SHOW PROFILES;` | 显示所有已记录的 profiling 数据 | +| `SHOW PROCESSLIST;` | 查看当前线程,排查长时间运行或阻塞的语句 | +| `SHOW STATUS LIKE 'Last_error%';` | 查看上次语句执行的错误信息 | +| `SHOW VARIABLES LIKE 'log_%';` | 查看错误日志相关配置 | +| `SHOW BINARY LOGS;` | 查看二进制日志,排查事务或复制异常 | +| `SHOW SLAVE STATUS\G` | 查看主从复制错误(用于主从复制场景) | +| `SHOW MASTER STATUS;` | 查看主库状态,辅助分析复制问题 | + MySQL 示例 ------