2019 /04/21 数据库备份和还原01

上次讲备份的各种工具
冷备份,可以先把服务停止,通过cp复制,tar打包把文件拷贝出来,恢复的时候,把文件复制到mysql目录里,然后重启服务
热备份,用户可以读写,不影响备份过程
温备份,只能读不能写,,myisam因为没有事务日志,就不能用热备份
数据库的备份工具

在这里插入图片描述
用lvm和cp,tar,可以实现几乎热备,因为lvm是在磁盘上开辟一个空间,速度很快,先加所,快照速度很快,然后解锁,这样用户的访问基本不受影响
现在实现下基于lvm的实现
要把数据库放到逻辑卷的空间,才能实现快照,那就需要先把数据库迁移到逻辑卷里
创建逻辑卷
把数据库文件和binlog放到两个卷组

在这里插入图片描述
缩小下空间,不然电脑空间不够
在这里插入图片描述在这里插入图片描述
存盘
在这里插入图片描述
同步
在这里插入图片描述
创建物理卷
在这里插入图片描述

创建卷组
在这里插入图片描述
创建逻辑卷 -L容量 -n命名 指定哪个卷组
在这里插入图片描述
创建一个放二进制的
在这里插入图片描述
在这里插入图片描述
创建文件系统格式化逻辑卷
在这里插入图片描述
在这里插入图片描述
这时候就要把数据迁移到这两个逻辑卷里
先创建挂载目录

在这里插入图片描述
永久挂载需要写进文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
挂载上了,这两个文件权限有问题
在这里插入图片描述
在这里插入图片描述
现在只要把数据库迁移进去就好了
先修改mysql配置文件

在这里插入图片描述
重启服务
在这里插入图片描述
现在把数据进行导入
在这里插入图片描述
在这里插入图片描述
有了数据以后,这个数据库就可以实现用户访问了
现在备份期间,就需要暂时不让用户去写
逻辑卷快照要使用的话,在同一个卷组中就需要有剩余空间

在这里插入图片描述
禁止写操作
在这里插入图片描述
短暂的锁定,还需要记录当前的数据库日志位置以及一些相应的内容
在这里插入图片描述
比如刷新数据库,就是生成一个新的日志文件
在这里插入图片描述
要记住这个mster的值,稍后要使用
在这里插入图片描述
在这里插入图片描述
现在去对表操作,就不允许了
在这里插入图片描述
在这里插入图片描述
查是可以的
在这里插入图片描述
**现在就可以对数据库做快照
-s快照 -p r只读 为了安全
**
在这里插入图片描述
快照做完就可以对数据库解锁
在这里插入图片描述
用户就可以进行一些操作了
在这里插入图片描述
快照怎么去访问,就需要找个文件夹挂载一下
在这里插入图片描述
产生问题的原因就是快照跟逻辑卷的uuid都是一样的
在这里插入图片描述
文件系统里不允许同样的uuid挂载
所以用下面的方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
就成功挂载上了
在这里插入图片描述
把它拷贝出来,或者打包
在这里插入图片描述
在这里插入图片描述
这样数据和属性都有了
在这里插入图片描述
快照实际上是把数据库的更改,只有对数据库发生更改就会把旧数据推送到快照里,所以这样就带来,快照对于数据库更改就比较慢,
把数据备份完就赶紧要删除快照,不删除快照,用户访问数据库的速度就比较慢

在这里插入图片描述
快照没了,用户就恢复了对于数据库的访问
如果做完备份,数据库崩溃了
这是在快照做好之后创建的,这些操作记录在二进制文件里

在这里插入图片描述
总之数据库发生变化了
在这里插入图片描述
现在进行搞破坏,先把数据库删除了
在这里插入图片描述
怎么恢复数据,先停止服务,把之前备份文件拷贝过来
在这里插入图片描述
就有数据了
在这里插入图片描述
现在启动服务,里面的数据就是我们做快照的数据,但是里面的数据不是最新的在这里插入图片描述
现在需要把二进制日志导入进来,就要先把二进制文件导出来
加个读锁,现在数据库就不能为用户进行访问

在这里插入图片描述
从这之前的内容都是没有进行备份的,都是二进制内容
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
**4和5发生的变化就是最新的变化
245之后的内容全要
**在这里插入图片描述
在这里插入图片描述
245之后内容全要
在这里插入图片描述
5里面的东西也要追加
在这里插入图片描述
**现在可以把数据库进制用户访问,比如把网络服务关掉 skip networking
这项加了以后,用户就无法直接连接数据库了,不支持网络连接只支持你自己链接
**在这里插入图片描述
在这里插入图片描述
3306端口就没打开
在这里插入图片描述
导入脚本
在这里插入图片描述
现在就需要立即回复数据库,不能让别人一直访问不了
在这里插入图片描述
在这里插入图片描述
一般还原数据库都是要禁止别人访问的
现在数据库就全了

在这里插入图片描述
现在重启了,用户也可以进行操作了
在这里插入图片描述
后续的部分就是还原的过程
在这里插入图片描述在这里插入图片描述
这就是用cp和lvm实现了一个几乎热备的还原
有了思路了,以后数据库出现问题,二进制文件就一定要保护好
在这里插入图片描述
在这里插入图片描述
上次介绍 了mysqldump。,选项要根据具体情况,不一定非要使用
在这里插入图片描述
具体在生产中该如何使用,结合不同的存储引擎,使用合适的选项
在这里插入图片描述
在这里插入图片描述
基于数据库个数刷新的
实现机制就是在备份数据库的时候,加锁,备份完后,再备份第二个数据库的时候再加锁,就是在备份不同数据库中,不是同一时间加锁的,这就带来,比如第一个数据库需要10分钟,10分钟用户可以修改第二个数据库
当我们备份完第一个数据库了,就释放锁 了,备份第二个数据库,就造成备份的点不一致了,
因为用这种方法就不能保证多个数据库备份是一个时刻的
所以要配合其他选项 比如single-transaction或者-x 配合masterdata,将只刷新一次日志

在这里插入图片描述
不同存储引擎推荐的备份,myisam不支持事务,只支持温备
在这里插入图片描述
对于这一项,innodb用不着,但是innodb用不着,因为支持事务,用不着温备
在这里插入图片描述
现在看一下innodb数据库将来适合哪些备份
single transaction等于开启一个事务,确保备份的数据库都在一个点上,因为事务的隔离性,就看不到别人的脏数据,
默认的级别是,可重复读,会产生幻读,最起码备份下来的数据是一致的
由于是基于事务的机制
所以别的用户该访问访问,该写写
但是这个程度只能一定程度上的防止数据不一致,但有些防不住
DDL语言,数据库事务是无法避免的,删除表,修改表
如果有个人进行这样的操作,那对于备份来讲,还是不确保一致性的,只能防止一些基本的DML增删改的操作
DDL语言是回滚不了的
开启一个事务,删除表,是不能撤销的,因为除了DML都是隐式提交,都是自动提交的,不需要commit

在这里插入图片描述
加quick提高备份速度在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
强烈建议在innodb用这种选项
-A 备份所有数据库
-F生成新的二进制文件
-E有些事件需要备份
-R存储过程和存储函数
事实上-Amysql数据库就包括了ER,所以-E,-R加不加无所谓
single-transaction可以避免数据库加锁,别人访问不了
master-data=1 会在进制文件里,会加一个时间位置和文件名,就知道基于哪个文件备份的和从哪里开始备份了
flush-privileges刷新策略,使权限生效
-hex-blob转换成16进制保存
写一个脚本,每天2点进行备份

在这里插入图片描述
在这里插入图片描述
将来是要放在计划任务里的
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
暂时不需要用户账号
在这里插入图片描述
在这里插入图片描述
就这次成功,其他都失败
如何还原

在这里插入图片描述
在这里插入图片描述
还原都有原则,期间不让用户访问
在这里插入图片描述
还原了数据就出来了
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值