MySQL——全量,增量备份与恢复(理论篇)
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,数据备份的重要性在生产环境中,数据的安全性是至关重要的,任何数据的丢失都可能产生严重的后果造成数据丢失的原因: 程序错误 人为错误 计算机失败 磁盘失败 灾难和偷窃数据库
千家信息网最后更新 2025年12月03日MySQL——全量,增量备份与恢复(理论篇)
数据备份的重要性
在生产环境中,数据的安全性是至关重要的,任何数据的丢失都可能产生严重的后果造成数据丢失的原因: 程序错误 人为错误 计算机失败 磁盘失败 灾难和偷窃数据库备份的分类
物理备份:
对数据库操作系统的物理文件(如数据文件,日志文件等)的备份物理备份又分为脱机备份(冷备份)和联机备份(热备份)
冷备份:是在关闭数据库的时候进行的热备份:数据库处于运行状态,这种备份方法依赖于数据库的日志文件逻辑备份:
对数据库逻辑组件(如表等数据库对象)的备份从数据库的备份策略角度,备份可分为
完全备份:每次对数据进行完整的备份差异备份:备份那些自从上次完全备份之后被修改过的文件增量备份:只有那些在上次完全备份或者增量备份后被修改的文件才会被备份MySQL完全备份
完全备份是对整个数据库的备份,数据结构和文件结构的备份完全备份保存的是备份完成时刻的数据库完全备份是增量备份的基础完全备份的优点
备份与恢复操作简单方便完全备份的缺点
数据存在大量的重复占用大量的备份空间备份与恢复时间长mysqldump备份库
MySQL数据库的备份可以采用用多种方式
直接打包数据库文件夹,如/usr/local/mysql/data使用专用备份工具mysqldumpmysqldump命令
MySQL自带的备份工具,相当方便对MySQL进行备份通过该命令工具可以将指定的库,表和全部的库到处为SQL脚本,在需要恢复时可进行数据恢复mysqldump命令对单个库进行完全备份
mysqldump -u 用户名 -p [密码] [选项] [数据库名] > /备份路径/备份文件名单库备份例子
mysqldump -u root -p auth > /backup/auth.sqlmysqldump -u root -p mysql > /backup/mysql.sqlmysqldump命令对多个库进行完全备份
mysqldump -u 用户名 -p [密码] [选项] --database 库名1 [库名2]... > /备份路径/备份文件名多库备份例子
mysqldump -u root -p --databases auth mysql > /back/databases-auth-mysql.sql对所有库进行完全备份
mysqldump -u 用户名 -p [密码] [选项] --all-databases > /备份路径/备份文件名多有库备份例子
mysqldump -u root -p --opt --all-databases > /backup/all-data.sql mysqldump备份表
在时间生产环境中,存在对某个特定表的维护操作,此时mysqldump同样发挥重大作用
使用mysqldump备份表的操作
mysqldump -u 用户名 -p [密码] [选项] 数据库名 表名 > /备份路径/备份文件名备份表的例子
mysqldump -u root -p mysql user > /backup/mysql-user.sql恢复数据库
使用mysqldump命令导出的SQL备份脚本,在进行数据恢复时可使用一下方法导入
source命令mysql命令使用source恢复数据库的步骤
登录到MySQL数据库执行source备份sql脚本的路径source恢复例子
MySQL [(none)]> source /backup/all-data.sql使用mysql命令恢复数据
mysql -u 用户名 -p [密码] < 库备份脚本的路径mysql命令恢复例子
mysql -u root -p < /backup/all-data.sql恢复表的操作
恢复表时同样可以使用source或者mysql命令进行
source恢复表的操作与恢复库的操作相同
当备份文件中只包含表的备份,而不包括创建库的语句时,必须制定库名,且目标库必须存在
mysql -u 用户名 -p [密码] < 表备份脚本的路径mysql -u root -p mysql < /backup/mysql-user.sql在生产环境中,可以使用shell脚本自动实现定期备份
MySQL备份思路
定期实施备份,制定备份计划或者策略,并严格遵守
除了进行完全备份,开启MySQL服务器的日志功能时很重要的
完全备份加上日志,可以对MySQL进行最大化的还原使用同一的和易理解的备份文件名称
推荐使用库名或者表名加上时间的命名规则MySQL增量备份
使用mysqldump进行完全备份的存在的问题
备份数据中有重复数据备份时间与恢复时间长增量备份就是备份自上一次备份之后增加或变化的文件或者内容
增量备份的特点:
没有重复数据,备份量不大,时间短恢复麻烦:需要上次完全备份及完全备份之后所有的增量备份才能恢复,而且要对所有增量备份进行逐个反推恢复MySQL没有提供直接的增量备份方法
可以通过MySQL提供的二进制日志(binary logs)间接实现增量备份
MySQL二进制日志对备份的意义:
二进制日志保存了所有更新或者可能更新数据库的操作
二进制日志在启动MySQL服务器后开始记录,并在文件达到max_ binlog_size所设置的大小或者接收到flush logs命令后重新创建新的日志文件
只需定时执行flush logs方法重新创建新的日志,生成二进制文件序列,并及时把这些旧的日志保存到安全的地方就完成了一个时间段的增量备份
MySQL数据库增量恢复
一般恢复:
基于位置恢复:
就是将某个起始时间的二进制日志导入数据库中,从而跳过某个发生错误的时间点实现数据的恢复基于时间点恢复
使用基于时间点的恢复,可能会出现在一个时间点里既同时存在正确的操作又存在错误的操作,所以我们需要一种更为精确的恢复方式增量恢复的方法
一般恢复:
mysqlbinlog [--no-defaults]增量备份文件 | mysql -u用户名 -p基于位置的恢复:
恢复数据到指定位置
mysqlbinlog --stop-position=操作'id' 1进制日志 | mysql -u用户名 -p 密码从指定的位置开始恢复数据
mysqlbinlog --start-position=操作'id'二进制日志 | mysql -u用户名 -p 密码基于时间点的恢复:
从日志开头截止到某个时间点的恢复
mysqlbinlog [--no-defaults] --stop-datetime='年-月-日 小时:分钟:秒'二进制日志 | mysql -u用户名 -p 密码从某个时间点到日志结尾的恢复
mysqlbinlog [--no defaults] --start-datetime='年-月-日 小时:分钟:秒'二进制日志 | mysql -u用户名 -p 密码从某个时间点到某个时间点的恢复
mysqlbinlog [--no defaults] --start-datetime='年-月-日 小时:分钟:秒' --stop-datetime='年-月-日 小时:分钟:秒'二进制日志 | mysql -u用户名 -p 密码查看二进制日志文件(解码)
mysqlbinlog --no-defaults --base64-output=decode-rows -V mysql-bin.000002 > /opt/ bak. txt谢谢阅读!!
备份
数据
数据库
文件
日志
时间
增量
用户
用户名
二进制
命令
密码
路径
例子
脚本
方法
位置
小时
错误
重要
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发相关领域
linux装数据库
ftp上传数据库出现错误
农村建设与网络技术
gs数据库怎么指定计算值的精度
如何避免需求和软件开发不一致
数据库字符型的英文
怎样截断sql数据库日志
2021网络安全专题会议
网络安全宣传周取得的实效
数据库中的数据是如何存放的
数据库添加一列有下划线
加强青少年网络安全的建议
数据库可以不设置字符长度
电商商品模块数据库表设计
什么是ice服务器事件
软件开发预付款方式
sata 服务器硬盘
群峦服务器
网络安全法与工控系统安全
大学生网络安全知识竞答答案
如何加强校园网络安全防护
无法访问iis元数据库
大学生网络安全手抄报大全a4纸
五十三度互联网科技
供应链管理系统软件开发价格
电商用什么服务器
2017网络安全法的内容
武冈电力软件开发
数据库原理 考研