MySQL——全量,增量备份与恢复(理论篇)
发表于:2025-01-26 作者:千家信息网编辑
千家信息网最后更新 2025年01月26日,数据备份的重要性在生产环境中,数据的安全性是至关重要的,任何数据的丢失都可能产生严重的后果造成数据丢失的原因: 程序错误 人为错误 计算机失败 磁盘失败 灾难和偷窃数据库
千家信息网最后更新 2025年01月26日MySQL——全量,增量备份与恢复(理论篇)
数据备份的重要性
在生产环境中,数据的安全性是至关重要的,任何数据的丢失都可能产生严重的后果造成数据丢失的原因: 程序错误 人为错误 计算机失败 磁盘失败 灾难和偷窃
数据库备份的分类
物理备份:
对数据库操作系统的物理文件(如数据文件,日志文件等)的备份
物理备份又分为脱机备份(冷备份)和联机备份(热备份)
冷备份:是在关闭数据库的时候进行的热备份:数据库处于运行状态,这种备份方法依赖于数据库的日志文件
逻辑备份:
对数据库逻辑组件(如表等数据库对象)的备份
从数据库的备份策略角度,备份可分为
完全备份:每次对数据进行完整的备份差异备份:备份那些自从上次完全备份之后被修改过的文件增量备份:只有那些在上次完全备份或者增量备份后被修改的文件才会被备份
MySQL完全备份
完全备份是对整个数据库的备份,数据结构和文件结构的备份完全备份保存的是备份完成时刻的数据库完全备份是增量备份的基础
完全备份的优点
备份与恢复操作简单方便
完全备份的缺点
数据存在大量的重复占用大量的备份空间备份与恢复时间长
mysqldump备份库
MySQL数据库的备份可以采用用多种方式
直接打包数据库文件夹,如/usr/local/mysql/data使用专用备份工具mysqldump
mysqldump命令
MySQL自带的备份工具,相当方便对MySQL进行备份通过该命令工具可以将指定的库,表和全部的库到处为SQL脚本,在需要恢复时可进行数据恢复
mysqldump命令对单个库进行完全备份
mysqldump -u 用户名 -p [密码] [选项] [数据库名] > /备份路径/备份文件名
单库备份例子
mysqldump -u root -p auth > /backup/auth.sqlmysqldump -u root -p mysql > /backup/mysql.sql
mysqldump命令对多个库进行完全备份
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安全错误
数据库的锁怎样保障安全
融信网络技术
哔哩哔哩网络安全舞蹈
线上网络技术
大连网络安全中标
东迅网络技术有限公司诈骗
软件开发激励计算题
aspen数据库
微软安全服务器
对口令数据库的权限限制
数据库id自增之后导入失败
抚顺职业学院网络技术
mysql查看数据库日志
挖财网络技术有限公司裴铁军
安徽省安全接入服务器地址
我的世界服务器租一年多少钱
建立企业动态数据库
众思互联网科技责任有限公司
北京综合网络技术服务一体化
嫩烤箱T2服务器
数据库设计案例e r
邛崃游戏软件开发
全国网络安全竞赛题
宝安区新一代网络技术开发展示
传统软件开发工资
网络安全管理制度的通知
佛山池熊互联网科技有限公司
区块狗软件开发价格
邯郸安卓软件开发哪家实惠
北京综合网络技术服务一体化
珠海服务器公司