学习MySQL的第五天(数据备份)

一、完全备份

在这里插入图片描述

1.1备份

1.进行备份
语法:**innobackupex --user=root --password=’ 数据库密码 ’ / 备份文件的存储位置 **
在备份之前我们先查看一下数据库里的文件
在这里插入图片描述
备份完成后到指定路径检查一下备份文件是否存在,是否备份成功
在这里插入图片描述

1.2恢复

1.停止数据库
语法:systemctl stop mysqld
2.我们模拟一下机器损坏,数据库数据丢失
语法:rm -rf /var/lib/mysql/*
rm -rf /var/log/mysqld.log 在这里插入图片描述
3.生成回滚日志 相当于恢复数据库的前期准备,先给系统查看一下要恢复的备份文件,指定备份点
语法:innobackupex --apply-log /xtrabackup/full/备份文件
在这里插入图片描述
4.正式恢复
语法:innobackupex --copy-back /备份文件以及存放位置
在这里插入图片描述
5.登录查看验证
首先我们必须修改一下数据库目录的权限为MySQL 然后重启一下数据库
语法:chown -R mysql.mysql /var/lib/mysql
在这里插入图片描述
在这里插入图片描述
这就是完整备份的所有过程

二、增量/差异备份

在这里插入图片描述
增量备份 特点:因每次仅备份自上一次备份(注意是上一次,不是第一次)以来有变化的文件,所 以备份体积小,备份速度快,但是恢复的时候,需要按备份时间顺序,逐个备份版本进行恢复,恢复时间长。
在这里插入图片描述
差异备份 特点:占用空间比增量备份大,比完整备份小,恢复时仅需要恢复第一个完整版本和最后 一次的差异版本(包含所有的差异),恢复速度介于完整备份和增量备份之间。

2.1增量备份

1.首先必须进行一次完整备份,步骤不在重复
在这里插入图片描述
记住增量备份时间
在这里插入图片描述
2. 开始第一次增量备份
这里我们更新一下时间,方便实验
在这里插入图片描述
更新时间后对数据库中数据进行更改
在这里插入图片描述
接下里正式开始备份
语法:innobackupex --user=root --password=‘数据库密码’ --incremental 备份文件存储位置 --incremental-basedir=基于的上次备份文件位置
在这里插入图片描述
查看一下备份文件存储位置,备份成功
在这里插入图片描述
接下来的第二次和第三次增量备份方法相同。只不过是第三次备份是基于第二次的备份文件,第四次基于第三次的备份文件。
在这里插入图片描述
在这里插入图片描述
注意:
差异备份方法和增量备份方法步骤一样
语法同样是innobackupex --user=root --password=‘数据库密码’ --incremental 备份文件存储位置 --incremental-basedir=基于的备份文件位置
只不过是基于的备份文件不同而已 ,差异备份永远是基于某一次备份文件进行备份的

2.2恢复

1.停止数据库
systemctl stop mysqld
清理数据库 rm -rf /var/lib/mysql/*
2.回滚合并
语法:innobackupex --apply-log --redo-only 第一次备份文件位置
第一次就是完整备份,现在就可以直接恢复到完整备份 语法:innobackupex --copy-back /备份文件以及存放位置 和完整备份恢复步骤一样。**

  • 单次增量备份恢复:
    现在第一次增量备份进行恢复
    也是要先回滚合并,只不过需要以第一次为基础,先给第一次进行一次回滚,然后再加上第二次一起进行一次回滚

    语法: innobackupex --apply-log --redo-only 第一次备份文件路径 --incremental-dir=第二次备份文件位置(也即第一次增量备份文件位置)
  • 多次增量备份恢复
    如果想要同时恢复多次的增量备份,只需要在回滚时加入多次的备份文件进行回滚即可

如下图 同时进行多次回滚合并:
在这里插入图片描述
3.进行恢复

  • 单次增量备份文件恢复:
    innobackupex --copy-back /备份文件以及存放位置 == 这里无论是恢复第几次增量备份,都要写第一次完整备份文件;回滚时加入的哪一次回滚,那么在这里恢复时就会恢复哪一次的备份文件。==
  • 同时恢复多次增量备份文件
    如果想要同时恢复多次的增量备份,只需要在回滚时加入多次回滚,恢复时仍然是只恢复第一次完整备份。
    如下图 :
    在这里插入图片描述
    然后 赋予权限 语法 : chown -R mysql.mysql /var/lib/mysql
    启动数据库 :systemctl start mysqld
    在这里插入图片描述
    我们看到三次备份的增量数据都恢复了。

以上实验增量备份与差异备份步骤基本一样,只不过回滚时只需要单次回滚即可,恢复时也是只恢复第一次完整备份文件。

三、mysqldump备份与二进制日志备份

在这里插入图片描述

3.1简述

mysqldump是mysql用于转存储数据库的客户端程序。它主要产生一系列的SQL语句,可以封装到文件,该文件包含有所有重建您的数据库所需要的SQL命令如CREATE DATABASE,CREATE TABLE,INSERT等等。可以用来实现轻量级的快速迁移或恢复数据库。是mysql数据库实现逻辑备份的一种方式。
MySQL 中很少提及日志的备份,但日志备份也是非常重要,可以恢复到指定时间点。日志备份可以使用自带的工具 mysqlbinlog 进行备份,mysqlbinlog 也是解析 binlog 的工具。

3.2备份

1.执行备份
在此之前我们准备一个库
在这里插入图片描述
接下来进行备份
语法:mysqldump -p’密码’ \ --all-databases --single-transaction \ --master-data=2 \ --flush-logs \ > /路径/date +%F-%H-mysql-all.sql

在这里插入图片描述
2.备份完成后我们再在数据库里改变数据,为二进制日志做准备
在这里插入图片描述

3.3恢复

备份后会产生备份文件以及日志,我们把产生的日志也保存一下,因为二进制日志备份需要用到
二进制日志存放在我们的/var/lib/mysql/ 下
在这里插入图片描述
在这里插入图片描述

2.接下来模拟数据库数据丢失
systemctl stop mysqld
rm -rf /var/lib/mysql/*
在这里插入图片描述
再次登录发现,已经无法登陆了
3.重启数据库
systemctl start mysqld
找密码
grep ‘password’ /var/log/mysqld.log
在这里插入图片描述
修改密码:

mysqladmin -uroot -p’系统给的密码’ password '设置的新密码’
在这里插入图片描述
4.恢复数据库
语法: mysql -p’修改后的新密码’ <备份文件存储路径/2016-12-08-04-mysql-all.sql (备份文件)
在这里插入图片描述
备份之前的数据库回来了。
那么在备份之后的数据就要靠二进制日志来恢复了
1.我们需要去到备份文件里查看二进制截取记录
vim /backup/备份文件在这里插入图片描述
通过查看二进制日志文件进行恢复
2.恢复
语法:
mysqlbinlog 备份文件中的二进制记录 --start-position=154 | mysql -p’数据库密码’ 注意后续有多少日志,要跟多少日志名字。
查看数据库:
在这里插入图片描述
通过二进制日志文件恢复了备份之后到丢失点的数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值