Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【MySQL基础】数据库的备份与还原

【MySQL基础】数据库的备份与还原

作者头像
GG Bond1
发布于 2025-06-08 00:27:15
发布于 2025-06-08 00:27:15
35401
代码可运行
举报
文章被收录于专栏:C/C++葵花宝典C/C++葵花宝典
运行总次数:1
代码可运行

MySQL学习:

https://blog.csdn.net/2301_80220607/category_12971838.html?spm=1001.2014.3001.5482

前言:

数据库管理中,删除操作是不可逆的,因此备份是数据安全的重要保障。下面我将详细介绍MySQL数据库删除前的备份方法,以及需要恢复时的还原步骤,并提供多种场景下的解决方案。

一、删除前的备份策略

1. 使用mysqldump工具备份(推荐)

mysqldump是MySQL官方提供的备份工具,可以生成包含所有数据和结构的SQL文件。

完整备份命令

代码语言:javascript
代码运行次数:1
运行
AI代码解释
复制
mysqldump -u [用户名] -p[密码] --databases [数据库名] > backup.sql

实际示例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 备份单个数据库
mysqldump -u root -p123456 --databases my_shop > my_shop_backup_$(date +%Y%m%d).sql

# 备份多个数据库
mysqldump -u root -p123456 --databases db1 db2 db3 > multi_db_backup.sql

# 备份所有数据库(需谨慎)
mysqldump -u root -p123456 --all-databases > full_backup.sql

关键参数说明

参数

作用

推荐场景

--single-transaction

保证备份一致性

InnoDB表

--routines

包含存储过程和函数

需要备份程序逻辑

--events

包含事件

使用事件调度器时

--triggers

包含触发器

表有触发器时

--no-data

只备份结构

仅需表结构

2. 直接复制数据文件(物理备份)

对于MyISAM存储引擎或需要快速备份的大型数据库

停止MySQL服务

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
systemctl stop mysql

复制数据目录(默认通常在/var/lib/mysql)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cp -R /var/lib/mysql /backup/mysql_backup

重启MySQL服务

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
systemctl start mysql

注意事项

  • 需要root权限
  • 备份期间数据库不可用
  • 恢复时MySQL版本最好一致

二、数据库删除操作

确认备份完成后,执行删除命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-- 安全删除(推荐)
DROP DATABASE IF EXISTS database_to_delete;

-- 强制删除(不推荐)
DROP DATABASE database_to_delete;

三、数据库还原方法

1. 使用mysql命令还原mysqldump备份

基本还原命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql -u [用户名] -p[密码] < backup_file.sql

实际示例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 还原单个数据库备份
mysql -u root -p123456 < my_shop_backup_20230815.sql

# 还原到不同数据库名
mysql -u root -p123456 -e "CREATE DATABASE new_shop;"
mysql -u root -p123456 new_shop < my_shop_backup.sql
2. 还原物理备份

停止MySQL服务

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
systemctl stop mysql

恢复数据文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rm -rf /var/lib/mysql/*
cp -R /backup/mysql_backup/* /var/lib/mysql/
chown -R mysql:mysql /var/lib/mysql

重启MySQL服务

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
systemctl start mysql

四、高级备份与还原技巧

1. 增量备份与恢复

使用二进制日志(binlog)实现增量备份

查看当前binlog位置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SHOW MASTER STATUS;

定期执行(如每天):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysqlbinlog --start-position=位置 --stop-position
=位置 /var/lib/mysql/mysql-bin.00000X > incr_backup.sql

恢复时先还原完整备份,再按顺序应用增量备份

2. 使用Percona XtraBackup(适合大型数据库)

热备份命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
xtrabackup --backup --user=root --password=123456 --target-dir=/backup/

恢复步骤

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
xtrabackup --prepare --target-dir=/backup/
xtrabackup --copy-back --target-dir=/backup/

五、备份验证与自动化

1. 备份验证方法
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 检查备份文件完整性
head -n 10 backup.sql | grep "MySQL dump"
tail -n 10 backup.sql | grep "Dump completed"

# 测试还原到临时数据库
mysql -u root -p123456 -e "CREATE DATABASE verify_backup;"
mysql -u root -p123456 verify_backup < backup.sql
mysql -u root -p123456 -e "USE verify_backup; SHOW TABLES;"
2. 自动化备份脚本示例
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/bin/bash
DATE=$(date +%Y%m%d)
BACKUP_DIR="/backups/mysql"
USER="root"
PASS="123456"

# 创建备份目录
mkdir -p $BACKUP_DIR

# 备份所有数据库
mysqldump -u$USER -p$PASS --all-databases --routines --events > $BACKUP_DIR/full_backup_$DATE.sql

# 压缩备份文件
gzip $BACKUP_DIR/full_backup_$DATE.sql

# 删除7天前的备份
find $BACKUP_DIR -type f -name "*.gz" -mtime +7 -exec rm {} \;

六、注意事项与常见问题

1. 关键注意事项
  • 备份验证:定期测试备份文件的还原能力
  • 存储安全:备份文件应与生产环境分离存储
  • 权限管理:备份文件应设置适当权限(如600)
  • 监控:设置备份任务完成通知
2. 常见问题解决

问题1:备份文件过大怎么办?

解决方案:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysqldump -u root -p123456 --compress database | gzip > backup.sql.gz

问题2:恢复时出现字符集错误?

解决方案:明确指定连接字符集

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql -u root -p123456 --default-character-set=utf8mb4 < backup.sql

问题3:备份过程中连接中断?

  • 解决方案:使用--force参数忽略错误,或采用分表备份策略

通过以上完整的备份与还原流程,您可以安全地进行数据库删除操作,同时在需要时能够快速恢复数据。记住,备份策略的有效性在于定期测试恢复过程,确保备份文件真实可用。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-06-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MySQL的数据备份与恢复
备份就是在数据库发生宕机的情况下保证数据不丢失,或者最小程度丢失的解决方法。Mysql 提供了 mysqldump、ibbackup、replication 工具来备份,当然也有第三方工具,如 xtrabacup、LVM快照等
晚上没宵夜
2021/10/29
10K1
MySQL的数据备份与恢复
(7) MySQL数据库备份详解
比如我们由于误操作,在主数据库上删除了一些数据,由于主从复制的时间很短,在发现时,从数据库上的数据可能也已经被删除了, 我们不能使用从数据库上的数据来恢复主数据库上的数据,只能通过备份进行误删除数据的恢复
用户1214487
2019/05/25
1.1K0
4种备份MySQL数据库(基本备份方面问题不大了)
我们试着想一想, 在生产环境中什么最重要?如果我们服务器的硬件坏了可以维修或者换新, 软件问题可以修复或重新安装, 但是如果数据没了呢?这可能是最恐怖的事情了吧, 我感觉在生产环境中应该没有什么比数据跟更为重要. 那么我们该如何保证数据不丢失、或者丢失后可以快速恢复呢?只要看完这篇, 大家应该就能对MySQL中实现数据备份和恢复能有一定的了解。 为什么需要备份数据? 其实在前言中也大概说明了为什么要备份数据, 但是我们还是应该具体了解一下为什么要备份数据 在生产环境中我们数据库可能会遭遇各种各样的不测从而
老七Linux
2018/05/31
3.7K0
Mysql备份与还原——xtrabackup
上次我们介绍了采用逻辑备份mysqldump 备份方式,其最大的缺陷就是备份和恢复速度都慢,但如果数据库非常大,那再使用 mysqldump 备份就不太适合了。这时就需要一种好用又高效的工具,xtrabackup 就是其中一款,号称免费版的 InnoDB HotBackup。(mysqldump备份请到L宝宝聊IT公众号中找“mysql备份与还原——mysqldump结合binlog”文章)
L宝宝聊IT
2018/09/29
7.8K0
Mysql备份与还原——xtrabackup
MySQL(十四)之数据备份与还原
前言   上一篇分享了关于MySQL事务的知识,在我们数据库中最重要的就是数据了,所以数据的备份就显的特别的重要!   为什么要备份数据?   在生产环境中我们数据库可能会遭遇各种各样的不测从而导致数据丢失, 大概分为以下几种:     硬件故障、软件故障、自然灾害、黑客攻击、误操作(占比例大)   所以, 为了在数据丢失之后能够恢复数据, 我们就需要定期的备份数据, 备份数据的策略要根据不同的应用场景进行定制, 大致有几个参考数值, 我们可以根据这些数值从而定制符合特定环境中的数据备份策略:     能够
用户1195962
2018/01/18
3.3K0
MySQL(十四)之数据备份与还原
MySQL 定时备份数据库(非常全)
在操作数据过程中,可能会导致数据错误,甚至数据库奔溃,而有效的定时备份能很好地保护数据库。本篇文章主要讲述了几种方法进行 MySQL 定时备份数据库。
良月柒
2021/09/27
3.7K0
Mysql备份系列(3)--innobackupex备份mysql大数据(全量+增量)操作记录
在日常的linux运维工作中,大数据量备份与还原,始终是个难点。关于mysql的备份和恢复,比较传统的是用mysqldump工具,今天这里推荐另一个备份工具innobackupex。innobackupex和mysqldump都可以对mysql进行热备份的,mysqldump对mysql的innodb的备份可以使用single-transaction参数来开启一个事务,利用innodb的mvcc来不进行锁表进行热备份,mysqldump备份是逻辑备份,备份出来的文件是sql语句,所以备份和恢复的时候很慢,但
洗尽了浮华
2018/01/23
2.4K0
xtrabackup 备份还原mysql
有一个项目要从云上整体迁移到公司机房内,里面有mysql5.6.20,这个mysql没做过备份,也没主从,然后打算通过xtrabackup先做个全备,然后再做个主从(因为在迁移的阶段,云上服务器还会有新的数据生成,主从是为了确保迁移的数据完整)
xmlgrg
2023/11/29
5690
xtrabackup 备份还原mysql
mysql实现定时全量备份
参考地址:  https://github.com/wentmac/mysql_backup
仙士可
2020/09/28
1.5K0
Mysql-12-mysql的备份和恢复
1.数据库的备份   备份=拷贝加管理,防止数据的丢失同时记录用户的操作记录。其中最有效的备份是对IT架构进行备份。 原则: (1)数据库要定期备份,备份的周期应当根据应用数据系统可承受的恢复时间,而且定期备份的时间应当在系统负荷最低的时候进行。对于重要的数据,要保证在极端情况下的损失都可以正常恢复。 (2)定期备份后,同样需要定期做恢复测试,了解备份的正确可靠性,确保备份的有意义的、可恢复的。 (3)根据系统需要来确定是否采用增量备份,增量备份只需要备份每天的增量数据,备份花费的时间少,对系统负载的压力也
用户1173509
2018/01/17
1.6K0
Mysql-12-mysql的备份和恢复
Mysql数据库定时备份
在MySQL中提供了命令行导出数据库数据以及文件的一种方便的工具mysqldump,我们可以通过命令行直接实现数据库内容的导出dump,首先我们简单了解一下mysqldump命令用法:
码客说
2019/10/21
9.7K0
mysql数据备份方式,如何恢复?你们的备份策略是什么?
物理完全备份 备份所有数据库文件:/var/lib/mysql/ 备份所有binlog文件: /var/lib/mysql/mysql-bin. 备份选项文件: /etc/my.cnf
曾高飞
2025/05/17
2130
Linux-MySQL数据备份和定时清理
最近接了个新需求,需要将我们经常使用的几个数据库,MySQL、influxdb在Linux系统上实现定时自动备份,比如每天备份一次,间隔31天清理31天之前备份的数据,研究了一下,准备先从MySQL实现。
框架师
2021/08/05
2.1K0
MySQL数据库备份和恢复
数据库备份 数据库复制不能取代备份的作用 备份分类: 全量备份:整个数据库的完整备份 增量备份:在上一次备份基础上,对更改数据进行备份。mysqldump不支持这种 逻辑备份:结果为SQL语句,适用于所有存储引擎 物理备份:对数据库目录的靠背,对于内存表只备份结构 备份内容: 备份方式: mysqldump全备介绍 mysqldump备份 mysqldump database [tables] mysqldump --database DB1 [DB2] mysqldump --all-databases
linxinzhe
2018/07/25
7K0
MySQL数据库备份实操
当前xtrabackup的8.0.13已经支持 mysql 8.0.20版本(8.0.20版本对innodb的数据文件模式进行了修改)
技术路漫漫
2020/07/20
1.1K0
[MYSQL] mysql备份方案
我们之前讲过在没有备份的时候怎么恢复数据,从ibd数据文件恢复, 从binlog日志恢复, 甚至从xfs文件系统恢复. 但这些都不能保证一定能恢复成功. 所以每次都会提到备份, 却发现我还没讲过mysql备份相关的文章. 啊! 这?
大大刺猬
2024/12/16
8130
[MYSQL]  mysql备份方案
xtrabackup 实现MySQL数据库备份
mysqldump备份方式是采用逻辑备份,其最大的缺陷就是备份和恢复速度都慢,对于一个小于50G的 数据库而言,这个速度还是能接受的,但如果数据库非常大,那再使用mysqldump备份就不太适合了。 这时就 需要一种好用又高效的工具,xtrabackup就是其中一款,号称免费版的InnoDB HotBackup。 Xtrabackup实现是 物理备份,而且是物理热备 目前主流的有两个工具可以实现物理热备:ibbackup和xtrabackup;ibbackup是商 业软件,需要授权,非常昂贵。而xtrabackup功能比ibbackup还要强大,但却是开源的。因此我们这里就来介 绍xtrabackup的使用。 Xtrabackup提供了两种命令行工具: xtrabackup:专用于备份InnoDB和XtraDB引擎的 数据; innobackupex:这是一个perl脚本,在执行过程中会调用xtrabackup命令,这样用该命令即可以实现备 份InnoDB,也可以备份MyISAM引擎的对象。
小手冰凉
2020/06/18
3.5K0
xtrabackup 实现MySQL数据库备份
MySQL(十五)之数据备份中mysqldump详解
前言   其实前面一篇数据备份已经是非常的详细了,这里我想单独的讲解一下mysqldump,相信很多程序员都是用过这个命令的! 一、MySQL数据库的备份与还原 1.1、MySQL数据库备份   1)语法   mysqldump -u username -p db_name table1 table2 ...> xxx.sql     含义:       db_name参数:表示数据库的名称;       table1和table2参数:表示需要备份的表的名称,为空则整个数据库备份;       xxx.s
用户1195962
2018/01/18
2.9K0
MySQL(十五)之数据备份中mysqldump详解
【腾讯云】云上MySQL数据库如何全量备份数据base脚本?
备份数据库或表最快的途径,只能运行在数据库目录所在的机器上,并且只能备份MyISAM类型的表。
TCS-F
2021/10/23
1.8K0
【腾讯云】云上MySQL数据库如何全量备份数据base脚本?
MySQL 备份与恢复详解
物理备份是指通过拷贝数据库文件的方式完成备份,这种备份方式适用于数据库很大,数据重要且需要快速恢复的数据库
星哥玩云
2022/08/17
1.3K0
MySQL 备份与恢复详解
相关推荐
MySQL的数据备份与恢复
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档