mysql 手动执行命令实现备份和恢复

发布时间:2025-05-13      访问量:14
在 MySQL 中,你可以使用命令行工具 `mysqldump` 和 `mysql` 来手动执行数据库的备份和恢复操作。以下是具体的操作步骤和示例:


**一、数据库备份(使用 mysqldump)**
**1. 备份整个数据库**
bash mysqldump -u [用户名] -p [数据库名] > [备份文件名].sql
- **示例**:备份名为 `mydb` 的数据库
```bash
mysqldump -u root -p mydb > mydb_backup.sql
```
执行后,输入密码,系统会将 `mydb` 数据库的结构和数据导出到 `mydb_backup.sql` 文件中。

**2. 只备份数据库结构(不包含数据)**
bash mysqldump -u [用户名] -p --no-data [数据库名] > [结构备份文件名].sql
- **示例**:
```bash
mysqldump -u root -p --no-data mydb > mydb_structure.sql
```

**3. 只备份数据(不包含表结构)**
bash mysqldump -u [用户名] -p --no-create-info [数据库名] > [数据备份文件名].sql
- **示例**:
```bash
mysqldump -u root -p --no-create-info mydb > mydb_data.sql
```

**4. 备份多个数据库**
bash mysqldump -u [用户名] -p --databases [数据库名1] [数据库名2] > [备份文件名].sql
- **示例**:备份 `db1` 和 `db2` 两个数据库
```bash
mysqldump -u root -p --databases db1 db2 > multiple_dbs_backup.sql
```

**5. 备份所有数据库**
bash mysqldump -u [用户名] -p --all-databases > [备份文件名].sql
- **示例**:
```bash
mysqldump -u root -p --all-databases > all_databases_backup.sql
```


**二、数据库恢复(使用 mysql)**
**1. 恢复整个数据库**
bash mysql -u [用户名] -p [目标数据库名] < [备份文件名].sql
- **示例**:从 `mydb_backup.sql` 恢复到 `mydb` 数据库
```bash
mysql -u root -p mydb < mydb_backup.sql
```
**注意**:执行前需确保目标数据库已存在。若不存在,需先创建:
```bash
mysql -u root -p -e "CREATE DATABASE mydb;"
```

**2. 恢复部分表**
如果你只需要恢复备份文件中的部分表,可以先查看备份文件内容,然后使用 `mysql` 配合 `--one-database` 参数指定目标表:
bash mysql -u [用户名] -p [数据库名] --one-database < [备份文件名].sql
- **示例**:只恢复 `users` 表和 `orders` 表
```bash
mysql -u root -p mydb --one-database < mydb_backup.sql
```
在执行前,可以通过编辑 `.sql` 文件,删除不需要恢复的表的 SQL 语句。


**三、高级选项**
**1. 压缩备份文件(减少存储空间)**
bash mysqldump -u [用户名] -p [数据库名] | gzip > [备份文件名].sql.gz
- **示例**:
```bash
mysqldump -u root -p mydb | gzip > mydb_backup.sql.gz
```

**2. 恢复压缩的备份文件**
bash gunzip < [备份文件名].sql.gz | mysql -u [用户名] -p [数据库名]
- **示例**:
```bash
gunzip < mydb_backup.sql.gz | mysql -u root -p mydb
```

**3. 忽略错误继续恢复**
bash mysql -u [用户名] -p --force [数据库名] < [备份文件名].sql
- **参数说明**:`--force` 即使出现 SQL 错误也会继续执行恢复操作。


**四、注意事项**
1. **权限要求**:执行备份和恢复操作的用户需要有相应的数据库权限。
2. **文件路径**:确保备份文件的路径正确,且有读写权限。
3. **字符集问题**:备份和恢复时建议指定相同的字符集,避免乱码:
```bash
mysqldump -u [用户名] -p --default-character-set=utf8mb4 [数据库名] > [备份文件名].sql
```
4. **大文件处理**:对于非常大的数据库,考虑使用 `--single-transaction` 参数(适用于 InnoDB 引擎):
```bash
mysqldump -u [用户名] -p --single-transaction [数据库名] > [备份文件名].sql
```


**五、验证备份结果**
备份完成后,建议验证备份文件的完整性:
bash # 查看备份文件内容 cat [备份文件名].sql # 检查压缩文件 gzip -t [备份文件名].sql.gz

通过以上命令,你可以灵活地备份和恢复 MySQL 数据库,满足不同场景下的数据管理需求。
堆内存
多线程
strdup
初始化器
冒泡排序
增删改查
BufferedReader
输入输出
面向对象
生命周期
闭包的概念
原型链
Flask
mysql-connector-python
单例模式
浅拷贝
隔离级别
索引
InnoDB
左连接
聚合函数
PuTTY
TRUNCATE
str_starts_with_many
DateTime
array_combine
闭包的概念