【实测可用】备份与恢复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
  • 只备份 table1table2 两张表的数据。

3. 备份所有数据库

mysqldump -u root -p --all-databases > all_backup.sql
  • 备份 所有 数据库,包括 mysqlinformation_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.sqlmysql -u root -p your_database < backup.sql
备份特定表mysqldump -u root -p your_database table1 table2 > backup.sqlmysql -u root -p your_database < backup.sql
备份所有数据库mysqldump -u root -p --all-databases > all_backup.sqlmysql -u root -p < all_backup.sql
备份并压缩`mysqldump -u root -p your_databasegzip > backup.sql.gz`
直接拷贝数据目录cp -r /var/lib/mysql /backup/cp -r /backup/mysql /var/lib/mysql/ && chown -R mysql:mysql /var/lib/mysql

如果你是 个人/小型项目mysqldump 足够了;如果是 大规模数据库,可以考虑 mysqlpumpXtraBackup(适用于大数据量的 物理备份)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值