**一、数据库备份(使用 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 数据库,满足不同场景下的数据管理需求。