【实测可用】备份与恢复MySQL数据库记录
是 MySQL 提供的命令行工具,用于导出数据库数据和结构。备份和恢复 MySQL 数据有多种方式,最常见的是使用。如果 MySQL 服务器关闭,可以直接复制。
·
备份和恢复 MySQL 数据有多种方式,最常见的是使用 mysqldump 进行备份和 mysql 进行恢复。下面介绍几种方法:
一、使用 mysqldump 进行备份
mysqldump 是 MySQL 提供的命令行工具,用于导出数据库数据和结构。
1. 备份整个数据库
mysqldump -u root -p your_database > backup.sql
说明:
-u root:指定 MySQL 用户(这里是root)。-p:提示输入密码。your_database:要备份的数据库名称。>:将输出重定向到backup.sql文件。
2. 备份特定表
mysqldump -u root -p your_database table1 table2 > backup_tables.sql
- 只备份
table1和table2两张表的数据。
3. 备份所有数据库
mysqldump -u root -p --all-databases > all_backup.sql
- 备份 所有 数据库,包括
mysql和information_schema。
4. 备份时包含 CREATE DATABASE 语句
mysqldump -u root -p --databases your_database --add-drop-database > backup_with_create.sql
- 这样恢复时会自动创建数据库。
5. 备份时忽略特定表
mysqldump -u root -p your_database --ignore-table=your_database.table1 > backup_without_table1.sql
- 忽略
table1表。
6. 备份时压缩数据
mysqldump -u root -p your_database | gzip > backup.sql.gz
- 使用
gzip压缩,减少备份文件大小。
二、恢复 MySQL 数据
1. 恢复单个数据库
mysql -u root -p your_database < backup.sql
或者:
cat backup.sql | mysql -u root -p your_database
注意:确保 your_database 已经存在,否则需要先创建:
mysql -u root -p -e "CREATE DATABASE your_database;"
2. 恢复包含 CREATE DATABASE 语句的备份
mysql -u root -p < backup_with_create.sql
- 如果
backup.sql里包含CREATE DATABASE语句,不需要手动创建数据库。
3. 恢复所有数据库
mysql -u root -p < all_backup.sql
- 适用于
--all-databases备份。
4. 从压缩备份恢复
gunzip < backup.sql.gz | mysql -u root -p your_database
- 先解压,然后导入。
5. 恢复特定表
mysql -u root -p your_database < backup_tables.sql
- 只恢复某些表的数据。
三、其他备份方法
1. 直接拷贝 MySQL 数据目录(适用于 Innodb)
如果 MySQL 服务器关闭,可以直接复制 /var/lib/mysql/ 目录:
cp -r /var/lib/mysql /backup/
恢复时:
cp -r /backup/mysql /var/lib/
chown -R mysql:mysql /var/lib/mysql
然后启动 MySQL:
systemctl start mysql
⚠️ 注意:
- 这种方式只适用于 MyISAM,Innodb 需要额外处理事务日志。
- 复制数据目录前,必须 先停止 MySQL 服务。
2. 使用 mysqlpump(更快的并行备份工具)
mysqlpump -u root -p --default-parallelism=4 --databases your_database > backup.sql
mysqlpump是 MySQL 5.7 及以上版本的新备份工具,支持并行处理。
四、定时自动备份(Linux)
可以使用 cron 定时备份:
crontab -e
添加以下定时任务,每天凌晨 2 点备份数据库:
0 2 * * * mysqldump -u root -p'your_password' your_database | gzip > /backup/backup_$(date +\%F).sql.gz
$(date +\%F)生成类似2025-03-10的日期。
总结
| 方式 | 备份命令 | 恢复命令 |
|---|---|---|
| 备份单个数据库 | mysqldump -u root -p your_database > backup.sql |
mysql -u root -p your_database < backup.sql |
| 备份特定表 | mysqldump -u root -p your_database table1 table2 > backup.sql |
mysql -u root -p your_database < backup.sql |
| 备份所有数据库 | mysqldump -u root -p --all-databases > all_backup.sql |
mysql -u root -p < all_backup.sql |
| 备份并压缩 | `mysqldump -u root -p your_database | gzip > backup.sql.gz` |
| 直接拷贝数据目录 | cp -r /var/lib/mysql /backup/ |
cp -r /backup/mysql /var/lib/mysql/ && chown -R mysql:mysql /var/lib/mysql |
如果你是 个人/小型项目,mysqldump 足够了;如果是 大规模数据库,可以考虑 mysqlpump 或 XtraBackup(适用于大数据量的 物理备份)。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)