当前位置: 首页 > news >正文

MySQL 数据库备份与恢复

MySQL 数据库备份与恢复

一、 常用备份方案概述

备份方案特点优点缺点
全量备份对某一时间点的所有数据进行完整拷贝数据恢复速度快,操作简单备份时间长,占用存储空间大
增量备份备份自上次全备或增备以来变化的数据备份时间短,占用空间小恢复时需要按顺序逐一恢复所有增量备份,恢复过程复杂且慢
差异备份备份自上次全备以来变化的所有数据恢复时只需恢复一次全备 + 最后一次差异备份,速度和复杂度介于全量和增量之间占用空间比增量备份大,比全量备份小

二、 备份工具:mysqldump

mysqldump 是 MySQL 自带的逻辑备份工具,生成 SQL 语句集合。

1、常用语法
# 备份单个数据库(不包含 CREATE DATABASE 语句)
mysqldump [OPTIONS] database [tables] > backup_file.sql# 备份单个或多个数据库(包含 CREATE DATABASE 语句)
mysqldump [OPTIONS] --databases DB1 [DB2 DB3...] > backup_file.sql# 备份所有数据库(包含 CREATE DATABASE 语句)
mysqldump [OPTIONS] --all-databases > backup_file.sql
2、连接选项 (OPTIONS)
  • -uUSERNAME: 指定数据库用户名
  • -hHOST: 指定服务器主机地址
  • -pPASSWORD: 指定数据库用户密码
  • -P#: 指定数据库端口号 (例如:-P3307)

三、备份操作示例

创建并进入 backup 目录

1、备份所有数据库(全备)
mysqldump -uroot -p --all-databases > all-202509171809.sql
2、备份指定库的指定表
mysqldump -uroot -p yanyvhang student123 > student123-202509171815.sql
3、备份整个 yanyvhang 数据库(推荐包含建库语句)
mysqldump -uroot -p --databases yanyvhang > yanyvhang-202509171818.sql

四、数据恢复操作

语法

mysql -uroot -p [database_name] < backup_file.sql
1、恢复整个数据库
模拟误删数据库
# 模拟误删数据库
mysql -uroot -p -e "drop database yanyvhang;"# 查看
mysql -uroot -p -e "show databases;"

在这里插入图片描述

恢复备份方法一
# 使用之前 --databases 选项的备份文件恢复,无需指定库名
mysql -uroot -p < /backup/yanyvhang-202509171818.sql# 验证
mysql -uroot -p -e "show databases;"

在这里插入图片描述

恢复备份方法二
# 使用之前 --all-databases 选项的备份文件恢复,无需指定库名
mysql -uroot -p < /backup/all-202509171809.sql# 验证
mysql -uroot -p -e "show databases;"

在这里插入图片描述

2、恢复特定表
模拟误删表
# 模拟误删表
mysql -uroot -p yanyvhang -e "drop table student123;"# 查看
mysql -uroot -p yanyvhang -e "show tables;"

在这里插入图片描述

恢复备份
# 使用之前的备份文件恢复,需要指定库名
mysql -uroot -p yanyvhang < /backup/student123-202509171815.sql# 查看
mysql -uroot -p yanyvhang -e "show tables;"

在这里插入图片描述

五、基于二进制日志的差异备份与恢复

此方法需要开启二进制日志 (Binary Log),结合全量备份实现

1、开启 MySQL 二进制日志

修改 MySQL 配置文件 my.cnf

vim /etc/my.cnf
# 追加内容 
server-id=1
log-bin=mysql_bin

修改后重启 MySQL 服务使配置生效

systemctl restart mysqld.service
2、进行全量备份并刷新日志

使用 mysqldump 进行全备时,使用特定选项记录二进制日志位置

mysqldump -uroot -p --single-transaction --flush-logs --master-data=2 --all-databases --delete-master-logs > /backup/all-202509172022.sql

在这里插入图片描述

  • --single-transaction :对 InnoDB 表进行一致性备份,不锁表
  • --flush-logs :备份完成后刷新日志,生成新的二进制日志文件
  • --master-data=2 :将备份对应的二进制日志位置信息以注释形式写入备份文件
  • --all-databases :指定备份 MySQL 服务器上的所有数据库
  • --delete-master-logs :备份成功完成后,立即删除备份文件中所记录的二进制日志位置之前的所有二进制日志文件(高风险参数,请谨慎使用)
3、模拟数据变化
update student set age = 40 where id = 3;
4、模拟故障
mysql -uroot -p -e "drop database yanyvhang;"
5、恢复流程
刷新创建新的二进制日志
mysqladmin -uroot -p flush-logs
ll /opt/data/

在这里插入图片描述

恢复完全备份
mysql -uroot -p < /backup/all-202509172022.sql
检查误删数据库的位置在什么地方
show binlog events in 'mysql bin.000004';

在这里插入图片描述

使用mysqlbinlog恢复差异备份
mysqlbinlog --stop-position=513 /opt/data/mysql_bin.000002 | mysql -uroot -p

在这里插入图片描述


文章转载自:

http://RoxLsxCI.srgbr.cn
http://aSglKTJb.srgbr.cn
http://VStwGdJ0.srgbr.cn
http://1WOssbZ5.srgbr.cn
http://i6dXjdJN.srgbr.cn
http://0R8PtiGj.srgbr.cn
http://4YrxlD7C.srgbr.cn
http://TeB42vF7.srgbr.cn
http://ZcH5SdSp.srgbr.cn
http://GUGQjhXN.srgbr.cn
http://PBpW2ksi.srgbr.cn
http://3SRMJAn7.srgbr.cn
http://Cb1VYhyV.srgbr.cn
http://B6cIklmz.srgbr.cn
http://BEElZUqB.srgbr.cn
http://os5poOCx.srgbr.cn
http://tr8uaU6r.srgbr.cn
http://o6iVSCDw.srgbr.cn
http://B7LayvZT.srgbr.cn
http://0v7RsCRr.srgbr.cn
http://ocJGfRz2.srgbr.cn
http://gMAIIf89.srgbr.cn
http://aQimsnVj.srgbr.cn
http://ejnEFoBJ.srgbr.cn
http://N3oVRFb2.srgbr.cn
http://Z8Idm7kv.srgbr.cn
http://NdRihtgY.srgbr.cn
http://m6lgDXoP.srgbr.cn
http://Wa0QM96p.srgbr.cn
http://AG6Rsir0.srgbr.cn
http://www.dtcms.com/a/387434.html

相关文章:

  • SQLite 数据库简介
  • Java进阶教程,全面剖析Java多线程编程,线程的优先级,笔记07
  • YOLOv12目标检测:使用自定义数据集训练 YOLOv12 检测坑洞严重程度
  • 计算机操作系统学习(五、输入输出管理)
  • Rocksteady开发新《未来蝙蝠侠》游戏 有望登陆PS5/PS6
  • Python爬虫实战——使用NetNut网页解锁器获取亚马逊电商数据的入门指南
  • 【 mq】 mq学习笔记
  • 科学研究系统性思维的理论基础:传统研究工具应用
  • Java基础:基本数据类型与变量(详解)
  • VsCode中配置Git-Bash终端
  • 《无人机政务应用视频图像服务成本度量规范》(T/DGAG025-2024)标准解读
  • 2/3维旋转矩阵推导与助记--记录
  • 【代码随想录算法训练营——Day15】二叉树——110.平衡二叉树、257.二叉树的所有路径、404.左叶子之和、222.完全二叉树的节点个数
  • 《从终端到内核:Linux 指令体系的入门与技术解构(第二篇)》
  • 实验5:组件应用(4学时)
  • 精选40道Kafka面试
  • web自动化随笔
  • HarmonyOS 多线程编程:Worker 使用与性能优化指南
  • 卫星通信大爆发:未来,你的手机将不再“失联”
  • 带你了解STM32:EXTI外部中断
  • Charles抓包工具新手入门教程 安装配置、手机代理与基础使用指南
  • 鸿蒙智能设备自动诊断实战:从传感器采集到远程上报的完整实现
  • 第五章 Arm C1-Premium 内存管理单元详解
  • 第七章 Arm C1-Premium L1数据内存系统解析
  • ARM(10) - I2C
  • 计算机视觉(opencv)实战二十六——背景建模与运动目标检测
  • 《详解Maven的继承与聚合》一篇理解分模块设计理念,以及私服的使用
  • Linux系统服务Syslog服务
  • 985高校标杆项目:基于大数据的商店销售数据分析与可视化系统技术解析
  • OpenCV内置分类器实现简单的人脸识别