数据库备份与恢复

数据库备份的分类

从物理与逻辑角度,备份分为

·物理备份:对数据库操作系统的物理文件(如数据库文件、日志文件等)的备份
物理备份方法
·冷备份:脱机备份,是在关闭数据库的时候进行的
·热备份:联机备份,数据库处于运行状态,依赖于数据库的日志文件
·温备份:数据库锁定表格(不可写入可读)的状态下进行备份操作
逻辑备份:对数据库逻辑组件(如:表等数据库对象)的备份

从数据库备份策略角度,备份分为

·完全备份:每次对数据库进行完整的备份
·差异备份:备份自从上次完全备份之后被修改过的文件
·增量备份:只有在上次完全备份或增量备份后被修改的文件才会备份
增量与差异的区别:增量备份依赖于前面多次的增量备份才会生效
差异备份只认上次完整备份之后多的文件才生效
差异不依靠增量备份,
这两个不能相互取代,增量备份中某一时间被弄丢了数据不完整,可以去查找差异备份,将其复原。

常见的备份方法

1、物理冷备份
备份时数据库处于关闭状态,直接打包数据库文件
备份速度快,恢复时也是最简单的
2、专用备份工具备份
mysqldump常用逻辑备份工具
mysqlhotcopy仅拥有备份myisam和archive表
3、启用二进制文件进行增量备份
进行增量备份,需要刷新二进制文件
4、第三方工具备份
免费的mysql热备份软件percona xtrabackup

完全备份

·是对整个数据库、数据库节构和文件结构的备份
·保存的时备份完成时刻的数据库
·是差异备份与增量备份的基础

优点

备份操作与恢复简单方便

缺点

数据存在大量重复
占用大量备份空间
备份恢复时间长

数据库完全备份分类

数据冷备份与恢复

直接关闭mysql数据库
使用tar命令直接打包数据库文件夹
直接替换现有mysql目录即可

关闭数据库
[root@localhost data]# systemctl start musqld

先opt下创建文件
usr local mysql data 下是数据库数据存放位置我们要把这个位置所有的文件打包压缩到opt下的mysql.a里
[root@localhost data]# tar zvcf /opt/mysql.a/mysql_all_$(date +%F).tar.gz /usr/local/mysql/data/

mysqldump备份与恢复

mysql自带备份工具,可方便实现对mysql备份
可以将指定库、表导出为sql脚本
使用命令mysql导入备份的数据

对单库进行完全备份

创建yu的库
mysql> create database yu;
Query OK, 1 row affected (0.00 sec)
创建heng表插入数据
mysql> use yu;
Database changed
mysql> create table heng(id int(4) not null primary key,name varchar(10));
Query OK, 0 rows affected (0.01 sec)
mysql> insert into heng(id,name) values (1,'zhang'),(2,'li');
Query OK, 2 rows affected (0.01 sec)
Records: 2  Duplicates: 0  Warnings: 0

使用mysql字带的备份工具将yu库备份到opt下叫yu.sql
[root@localhost data]# mysqldump -uroot -p yu > /opt/yu.sql
Enter password: 123456

vi进入查看
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
对多库进行完全备份
mysqldump -u 用户名 -p [密码] [选项] --databases 库名 1 [库名 2]… > /备份路径/备份文件名

其实就比原本的多了一条--databases
备份mysql和yu
[root@localhost opt]# mysqldump -uroot -p --databases yu mysql > /opt/allmysql.sql
Enter password: 12346
密码可以跟着-p后面,免交互

对所有库进行完全备份
mysqldump -u 用户名 -p [密码] [选项] --all-databases > /备份路径/备份文件名

[root@localhost opt]# mysqldump -uroot -p --all-databases > /opt/myall.sql
Enter password:123456

导出的脚本,可使的用方法导入

·source命令
·mysql命令

使用source恢复数据库的步骤

登录到mysql数据库
执行source备份sql脚本的路径

mysql> source /opt/mymysql.sql

备份数据库还原需要自己创建数据库哪怕名字不一样都可以。

使用mysql命令恢复

直接将备份的文件<导入到mysql库

[root@localhost opt]# mysql -uroot -p < /opt/mymysql.sql

增量备份

使用mysqldump进行完全备份存在的问题

·备份数据中有重复的数据
·备份时间与恢复时间过长

是上一次备份后增加/变化的文件或内容

特点

·没用重复的数据,备份量不大,短时间
·恢复需要上次完全备份及完全备份之后所有增量备份次啊能恢复,而且需要对所有增量备份进行逐个反推恢复

mysql没用直接提供的增量备份方法
可以通过mysql提供的二进制日志间接实现增量备份

mysql二进制日志对备份含义

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

mysql数据库的增量恢复

一般恢复
将所有的备份二进制文件内容全部恢复
基于位置恢复
数据库在某一时间点内可能有错误操作也有正确操作
可以基于精准位置跳过错误操作
基于时间点恢复
跳过某个发生错误的时间实现数据恢复

先进入mysql主配置文件

[root@localhost opt]# vi /etc/my.cnf
在配置文件mysqld里插入log-bin = yuheng-bin 这样才能生成二进制文件
刷新配置
[root@localhost opt]# systemctl restart mysqld
这样cd到usr local mysql data 目录下救护有一个二进制文件了
-rw-r-----. 1 mysql mysql      154 10月 13 15:04 yuheng-bin.000001
查看这个二进制文件
mysqlbinlog --no-defaults --base64-output=decode-rows -v yuheng-bin.000001
需要64解码逐行表示详细显示
# at 4 操作序号
#201013 15:04:31 操作时间

一般恢复

mysqlbinlog --no-defaults 增量备份文件|mysql -uroot -p

[root@localhost data]# mysqlbinlog --no-defaults yuheng-bin.000001|mysql -uroot -p
Enter password: 123456

基于位置的恢复

恢复数据到指定位置

mysqlbinlog --on-defaults --stop-position='操作id'二进制日志|mysql -uroot -p
[root@localhost data]# mysqlbinlog --on-defaults --stop-position='123' yuheng-bin.000001|mysql -uroot -p

从指定位置开始恢复数据

mysqlbinlog --on-defaults --start-position='操作id'二进制日志|mysql -uroot -p
[root@localhost data]# mysqlbinlog --on-defaults --start-position='123' yuheng-bin.000001|mysql -uroot -p

基于时间点恢复

从日志开头截至到某个时间点的恢复

mysqlbinlog --no-defaults --stop-datetime='年-月-日 小时:分钟:秒' 二进制日志|mysql -uroot -p

从某个时间点到日志结尾恢复

mysqlbinlog --no-defaults --start-datetime='年-月-日 小时:分钟:秒' 二进制日志|mysql -uroot -p

从某个时间点到某个时间点恢复

mysqlbinlog --no-defaults --start-datetime='年-月-日 小时:分钟:秒' --stop-datetime='年-月-日 小时:分钟:秒' 二进制日志|mysql-uroot -p
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值