MySQL 数据库备份(增量备份与恢复)

article/2025/8/21 11:40:20

目录

一、MySQL 增量备份

1.增量备份的概念

1.1 为什么使用增量备份

1.2 增量备份的特点

 2.增量备份示例

二、MySQL 增量恢复

1.增量恢复的场景

 2.丢失完全备份之后更改的数据的恢复步骤

 3.完全备份之后丢失所有数据的恢复步骤

4. 基于时间点与位置的恢复 

4.1 基于时间点的恢复

4.1 基于位置的操作

总结


一、MySQL 增量备份

增量备份可以在完全备份的基础上,减少备份文件的大小,从而加快备份和恢复的速度

1.增量备份的概念

1.1 为什么使用增量备份

  • 前面章节讲到了完全备份有两种方式,一种是使用 tar 打包数据文件,另一种是
  • 使用 mysqldump 进行完全备份
  • 完全备份存在的问题很容易看到,每次都是把所有的数据内容进行备份,备份数据中有大量的重复数据,并且完全备份的时间与恢复的时间很长
  • 解决完全备份存在的问题就是使用增量备份的方式,增量备份就是备份自上一次备份之后增加或改变的文件或者内容
     

1.2 增量备份的特点

  • 增量备份的优点是没有重复数据,备份量不大,时间短
  • 缺点也很明显,需要上次完全备份及完全备份之后所有的增量备份才能恢复,而且对所有增量备份进行逐个反推恢复,操作较为繁锁
  • MySQL 没有提供直接的增量备份方法,但是可以通过 MySQL 的二进制日志(binary
  • logs)间接实现增量备份

二进制日志对备份的意义如下:

  • 二进制日志保存了所有更新或者可能更新数据库的操作
  • 二进制日志在启动 MySQL 服务器后开始记录,并在文件达到 max_binlog_size 所设置的大小或者接收到 flush logs 命令后重新创建新的日志文件
  • 只需要定时执行 flush logs 方法重新创建新的日志,生成二进制文件序列,并及时把这些日志保存到安全的地方就完成了一个时间段的增量备份

 2.增量备份示例

1.开启二进制日志功能

vim /etc/my.cnf...
[mysqld]
log-bin=mysql-bin
binlog_format = MIXED
#指定二进制日志(binlog)的记录格式为 MIXEDsystemctl restart mysqld.service
#重启服务cd /usr/local/mysql/data
ls -l /usr/local/mysql/data/mysql-bin.*
#查看二进制文件#二进制日志(binlog)有3种不同的记录格式:STATEMENT(基于SQL语句)、ROW(基于行)、MIXED(混合模式)
#默认格式是 STATEMENT

  • 每周选择服务器负载较轻的时间段,或者用户访问较少的时间段进行备份
mysqldump -uroot -p123123 SCHOOL CLASS01 > /opt/SCHOOL_CLASS01_$(date +%F).sql
#对表进行完全备份mysqldump -uroot -p123123 --databases SCHOOL > /opt/SCHOOL_$(date +%F).sql
#对库进行完全备份crontab -e
#也可以使用计划性任务来执行
30 3 * * 3 mysqldump -uroot -p123123 SCHOOL CLASS01 > /opt/SCHOOL_CLASS01_$(date +%F).sql
30 3 * * 3 mysqldump -uroot -p123123 --databases SCHOOL > /opt/SCHOOL_$(date +%F).sql
每周三的凌晨 3:00 对数据库和表进行完全备份

  • 可每天进行增量备份操作,生成新的二进制日志文件,这样在插入新的数据后,新的二进制文件对应的就是数据库的变化的内容
ls /usr/local/mysql/datamysqladmin -uroot -p123123 flush-logs

 

  • 插入新的数据,以模拟数据的增加或变更
use SCHOOL;insert into CLASS01 values(3,'ghr3','woman','games');
insert into CLASS01 values(4,'ghr4','man','runing');select * from CLASS01;

  • 生成新的二进制文件并查看其内容
cd /usr/local/mysql/data/
lsmysqladmin -uroot -p123123 flush-logs

cp mysql-bin.000004 /opt/
#将记录变更的二进制文件02复制至/opt目录下
cd /opt/
lsmysqlbinlog --no-defaults --base64-output=decode-rows -v /opt/mysql-bin.000004
#使用64位编码机制去解码,按行读取详细内容

二、MySQL 增量恢复

  • 增量恢复比完全恢复操作更为繁琐
  • 每个增量备份都是单独的个体,数据不重复,需要控制得更加精确

1.增量恢复的场景

  • 当数据发送错误时,应根据实际情况选择使用完全备份恢复,还是增量备份
  • 增量备份的场景是:
    • 人为的 SQL 语句破坏了数据库
    • 在进行下一次全备之前发送系统故障导致数据库数据丢失
    • 在主从架构中,主库数据发送了故障
  • 根据数据丢失的情况可以分为两类:
    • 只丢失了完全备份之后更改的数据
    • 完全备份之后丢失所有的数据

 2.丢失完全备份之后更改的数据的恢复步骤

  • 当完全备份之后更改的数据丢失,需要把完全备份之后的所有增量备份文件逐个恢复
  • 步骤如下:
mysql -uroot -p123123
use SCHOOL;delete from CLASS1 where id=5;
delete from CLASS1 where id=4;
delete from CLASS1 where id=6;
delete from CLASS1 where id=7;
delete from CLASS1 where id=8;
#删除插入的两条数据,模拟完全备份后数据丢失的故障select * from CLASS01;
#检查
quitmysqlbinlog --no-defaults /opt/mysql-bin.000003 | mysql -uroot -p123123
#使用二进制文件进行恢复操作mysql -uroot -p123123 -e "select * from SCHOOL.CLASS01;"
#检查表内容是否恢复

 

 3.完全备份之后丢失所有数据的恢复步骤

  • 当完全备份和增量备份之后,所有的数据丢失,需要把完全备份和所有增量备份文件逐个恢复
  • 步骤如下:
mysql -uroot -p123123
use SCHOOL;
drop table CLASS01;
#直接删除整个表,假设完全备份后所有数据都丢失了
quitmysql -uroot -p123123 SCHOOL < /opt/SCHOOL_CLASS01_2021-02-06.sql
mysql -uroot -p123123 -e "select * from SCHOOL.CLASS01;"
#进行完全备份后查看一下mysqlbinlog --no-defaults /opt/mysql-bin.000002 | mysql -uroot -p123123
#增量备份
mysql -uroot -p123123 -e "select * from SCHOOL.CLASS01;"

 

4. 基于时间点与位置的恢复 

  • 利用二进制日志可实现基于时间点与位置的恢复,例如由于误操作删除了一张表,这时完全恢复是没有用的
  • 因为日志里还有误操作的语句,我们需要的是恢复到误操作之前的状态,然后跳过误操作的语句,再恢复后面操作的语句

4.1 基于时间点的恢复

  • 基于时间点的恢复,就是将某个起始时间的二进制文件导入数据库中,从而跳过某个发生错误的时间点实现数据的恢复
  • 使用 mysqlbinlog 加上 --stop-datetime 选项,表示在哪个时间点结束,后面误操作的语句不执行
  • –start-datetime 选项表示执行后面的语句
  • 结合使用它们就可以跳过误操作的语句,完成恢复工作
  • 需要注意的是,二进制文件中保存的日期格式需要调整为用“-”分割
#恢复用户“ghr3”的数据,而不恢复“ghr4”
mysql -uroot -p123123 -e "truncate table SCHOOL.CLASS01;"
mysql -uroot -p123123 -e "select * from SCHOOL.CLASS01;"mysqlbinlog --no-defaults --stop-datetime='2021-02-06 15:58:39' /opt/mysql-bin.000002 |mysql -uroot -p123123
mysql -uroot -p123123 -e "select * from SCHOOL.CLASS01;"

 

 

#恢复“ghr4”的数据
mysqlbinlog --no-defaults --start-datetime='2021-02-06 15:58:39' /opt/mysql-bin.000002 |mysql -uroot -p

 

4.1 基于位置的操作

  • 基于位置的恢复,就是使用基于时间点的恢复
  • 可能会出现在一个时间点里既同时存在正确的操作又存在错误的操作,基于位置是一种更为精确的恢复方式
mysqlbinlog --no-defaults --stop-position='609' /opt/mysql-bin.000005 | mysql -uroot -p
#使用64位编码机制去解码并按行读取二进制文件05(增量备份)的详细内容
...
...略

 

 

 

#仅恢复“1810”之前的数据,即不恢复“wangsi”的数据
mysql -uroot -p123123 -e "select * from SCHOOL.CLASS01;"
mysql -uroot -p123123 -e "truncate table SCHOOL.CLASS01;"
mysql -uroot -p123123 -e "select * from SCHOOL.CLASS01;"
mysqlbinlog --no-defaults --stop-position='1810' /opt/mysql-bin.000002 | mysql -uroot -p
mysql -uroot -p123123 -e "select * from SCHOOL.CLASS01;"

#仅恢复“ghr4”的数据,跳过“ghr1.2.3”的数据恢复,即仅有第四条记录
mysql -uroot -p123123 -e "select * from SCHOOL.CLASS01;"
mysqlbinlog --no-defaults --start-position='1810' /opt/mysql-bin.000002 | mysql -uroot -p123123
mysql -uroot -p123123 -e "select * from SCHOOL.CLASS01;"

 

总结

  • 指定企业备份策略要根据企业数据库的实际读写的频繁性与数据的重要性进行
  • 数据更新频繁,则应该进行较为频繁的备份
  • 数据较为重要,则在有适当更新时进行备份
  • 在数据库压力小的时段进行全备,如一周一次,然后每天增备
  • 根据公司的规模,中小公司可一天一次全备,大公司可每周一次全备,每天进行一次增备,并且尽量为企业实现主从复制架构

http://chatgpt.dhexx.cn/article/8YgRl5kU.shtml

相关文章

mysql数据的备份与恢复

mysql数据的备份与恢复 日志的类型与作用&#xff1a;开启日志方式查看日志是否开启 数据备份的重要性&#xff1a;备份类型&#xff1a;如何选择逻辑备份策略或频率&#xff1f;常见的备份方法&#xff1a;MysQL完全备份优缺点&#xff1a;数据库完全备份分类&#xff1a; 实验…

完全备份 、差异备份、增量备份的区别和特点

数据备份的方式有完全备份、差异备份以及增量备份&#xff0c;那么这三种备份方式有什么区别&#xff0c;在具体应用中又该如何选择呢&#xff1f;本文就这些问题作以介绍。 一、备份方式简介 1、完全备份&#xff08;Full Backup&#xff09; 备份全部选中的文件夹&#xf…

MySQL 数据库备份(二)(增量备份与恢复)

文章目录 一、MySQL 增量备份1.增量备份的概念1.1 为什么使用增量备份1.2 增量备份的特点 2.增量备份示例 二、MySQL 增量恢复1.增量恢复的场景2.丢失完全备份之后更改的数据的恢复步骤3.完全备份之后丢失所有数据的恢复步骤4. 基于时间点与位置的恢复4.1 基于时间点的恢复4.1 …

增量备份

增量备份&#xff0c;是指在完整备份的基础上&#xff0c;每次只是备份自上次备份以来被修改过的数据块。增量备份策略不能用于映像备份&#xff0c;因为映像备份总是对于所有的数据文件。增量备份可以是数据库、数据文件和表空间三个级别。 一、增量备份的种类 第一、累积增…

PC端微信打不开小程序解决

PC端微信点击小程序之后没有啥反应&#xff0c;可以使用下面的方法解决&#xff1a;右键桌面的微信快捷方式&#xff0c;属性-兼容性&#xff0c;勾选上以兼容模式运行这个程序即可

微信外部链接无法使用浏览器打开 微信链接打不开的解决方案

域名在微信中打不开&#xff0c;有诸多问题 1、硬件原因&#xff0c;比如手机网络、手机缓存的手机硬件设备等 这里就不讨论硬件方便的问题 2、其他原因 目前的APP基本都支持二维码扫描下载&#xff0c;二维码下载也成为了大家用起来很顺手的一种方式。由于微信的用户基本占据…

微信中已停止访问该网页、据用户投诉及腾讯手机管家云网址检测、该网页包含不安全内容。为维护绿色上网环境,已停止访问的解决方案

不管是网站的首页&#xff0c;还是产品的页面地址&#xff0c;以及在线支付的地址&#xff0c;都有可能会被微信提示&#xff1a;已停止访问该网页&#xff0c;据用户投诉及腾讯网址安全中心检测&#xff0c;该网页包含违法或违规内容。为维护绿色上网环境,已停止访问。有的页面…

微信内置浏览器打不开链接怎么办,实现微信跳转链接

在我们使用微信营销的时候,很容易碰到推广连接在微信内无法打开或无法下载app的情况。通常这种情况微信会给个提示 “已停止访问该网址” ,那么导致这个情况的因素有哪些呢,主要有以下三点 1、网页链接被举报次数过多。2、网页含违规内容,含敏感词。3、被腾讯检测系统判断为…

微信小程序打开外部链接

如果是个人类型的小程序就没法打开外部链接了。 首先要了解下微信提供的容器web-view。 web-view | 微信开放文档 (qq.com) 具体的操作步骤这样&#xff0c;首先在WXML文件里某个需要触发点击事件的标签里面加上点击事件。记得带上参数data-url"{{item.url}}" 在J…

浏览器突然无法打开微信链接解决办法

win10更新版本后&#xff0c;不知道为什么用微信的时候不能直接在chrome里打开公众号文章了&#xff0c;然后在chrome里点击prt scn&#xff08;截屏键&#xff09;也没有反应&#xff08;原本是要弹出个框框让选择截图方式的&#xff09;&#xff0c;重启电脑无效&#xff0c;…

企业微信PC端打不开h5页面

这个问题是个大坑&#xff0c;h5页面在手机上能打开&#xff0c;但是在pc端不行。从https到http&#xff0c;甚至怀疑是vue的问题&#xff0c;然而都没解决。最终&#xff0c;尝试了文档中的这句话&#xff1a; 我之前引入的版本是1.3.2&#xff0c;换成1.2.0&#xff0c;立即…

网页版微信为什么打不开连接服务器失败,电脑能上微信,但是打不开网页怎么回事?...

打不开网页的原因&#xff1a; 路由器的问题&#xff1b; DNS错误&#xff1b; 域名服务器不正确&#xff1b; 路由器资源不够&#xff1b; 网络出现丢包导致&#xff1b; 手机网络连接不稳定&#xff1b; 软件版本没有更新&#xff1b; 应用程序管理器出现问题&#xff1b; 数…

微信打不开MP4文件 (记录编码问题)

文章目录 起因是一大早上我兄弟给我打电话说家里的粮食被偷了&#xff0c;但是监控视频格式只能qq打开微信打不开&#xff0c;需要把视频发给警察。 一、编码错误二、解决2.1、简单的就是拿格式工厂走一下就可以了2.2、找到一个优秀的老哥写的转码的代码 参考文章 起因是一大早…

js实现微信打开下载链接

微信如何唤起外部浏览器打开指定链接 需求分析 将打包好的apk/ios文件部署到服务器&#xff0c;把下载页面的URL通过二维码编辑器或根据URL代码生成一个二维码&#xff0c;然后通过二维码进行微信推广已经成为很多用户惯用的方式。但微信会对含apk/ios文件的链接进行了屏蔽&…

微信打不开链接怎么办,详谈微信跳转外部浏览器的实现原理

很多朋友并不知道微信浏览器会屏蔽拦截第三方分享网页,所以经常都是直接在微信内转发分享,最终的结果就是导致原链接被微信屏蔽,通常这种情况微信会给个提示 “已停止访问该网址” ,出现这个提示的一般会在以下几种情况下发生 情况1:分享转发H5网页,但会因为他人举报或微…

华为手机为什么打不开微信连接到服务器,华为手机微信打不开如何解决? 华为手机微信打不开解决方法介绍!...

您可能感兴趣的话题&#xff1a; 华为 手机 微信 打不开 核心提示&#xff1a;华为手机微信打不开如何解决&#xff1f; 华为手机微信打不开解决方法是什么&#xff1f;下面小编给大家介绍一下&#xff0c;希望你能喜欢&#xff01; 华为手机微信打不开如何解决? 华为手机微信…

微信打不开链接,提示已停止访问该网页怎么办

大家在使用微信分享转发链接的时候,都很容易碰到链接在微信中无法打开网页的问题。通常这种情况微信会给个提示 “已停止访问该网址” ,导致这个情况的因素有以下三点。 1、分享链接被多人举报。 2、链接含违规内容,含敏感词。 3、被腾讯检测系统判断为诱导分享内容。 被…

微信打不开链接怎么办,微信跳转外部浏览器打开

​​但凡使用微信分享转发链接的朋友,应该都会遇到链接在微信内无法打开的问题,甚至可以说是家常便饭。一般都有以下几种情况: 情况1:分享转发H5网页,但会因为他人举报或微信系统检测到含敏感词和诱导分享内容而被屏蔽。 情况2:分享转发文件的下载页地址,但会被微信主动…

微信打不开第三方二维码或链接的解决办法

近期在项目开发时&#xff0c;遇到了一个问题。自己开发的APP软件&#xff0c;有一个二维码分享软件的功能。用户扫码即可下载该软件&#xff0c;可是问题就出现在这里&#xff0c;当该软件的二维码分享到微信或朋友圈后&#xff0c;微信好友扫描二维码&#xff0c;发现出现白屏…

微信上h5页面点击文件下载链接没反应,微信内直接下载app方案

大家在使用微信分享转发链接的时候,都很容易碰到链接在微信中无法打开网页的问题。通常这种情况微信会给个提示 “已停止访问该网址” ,导致这个情况的因素有以下三点。 1、分享链接被多人举报。 2、链接含违规内容,含敏感词。 3、被腾讯检测系统判断为诱导分享内容。 被…