关于二进制相关的各种变量,如何操作二进制相关日志
2020/01/12 04-备份还原
show master status 可以查看新的二进制文件的位置
2020/01/12 04-备份还原
位置和文件大小其实一样,
2020/01/12 04-备份还原
将来可以设置哪些数据库的修改才记录二进制日志,默认情况所有对数据库的更改都记录日志
2020/01/12 04-备份还原
查看二进制文件的内容2020/01/12 04-备份还原
从446之后的三条指令
2020/01/12 04-备份还原2020/01/12 04-备份还原
必须借助工具才能查看里面的二进制文件2020/01/12 04-备份还原
乱码敲reset命令
2020/01/12 04-备份还原
mysqlbinlog工具可以直接操作二进制文件2020/01/12 04-备份还原
相当于直接以文本方式打开了
2020/01/12 04-备份还原
这些就相当于位置
2020/01/12 04-备份还原
可以看从什么开始,到什么时候结束的内容
2020/01/12 04-备份还原2020/01/12 04-备份还原
也可以按照时间,从这个时间点往后的
2020/01/12 04-备份还原
如果有人发生误操作,以某个时间去看二进制日志,就可以去看,
比如现在把表删除了

二进制日志文件之前的位置
2020/01/12 04-备份还原2020/01/12 04-备份还原
现在8210
2020/01/12 04-备份还原
比如现在23:44,估摸是23:40以后删的表,就找23:40以后的内容2020/01/12 04-备份还原
利用这一点可以还原

先试试把记录格式换成行格式

2020/01/12 04-备份还原2020/01/12 04-备份还原2020/01/12 04-备份还原
重新启动数据库
2020/01/12 04-备份还原
现在变成行的了
2020/01/12 04-备份还原
删除teacher表里第5行开始的记录
2020/01/12 04-备份还原
生成新的二进制日志了
2020/01/12 04-备份还原
记录行,更改的记录几行就有几条,不加选项基于base64编码,update和delete都用base编码显示了,=等号代表凑整
2020/01/12 04-备份还原+v就现实sql语句样式2020/01/12 04-备份还原
二进制日志和数据库文件分离存放2020/01/12 04-备份还原
创建一个准备存放二进制文件的目录
2020/01/12 04-备份还原2020/01/12 04-备份还原2020/01/12 04-备份还原
2020/01/12 04-备份还原
原来的文件可以删除了,在指定目录/data下就生成了两个文件,将来可以利用二进制日志做数据库的还原2020/01/12 04-备份还原
insert语句一执行,就会记录都二进制日志文件中
2020/01/12 04-备份还原
2020/01/12 04-备份还原
现在可以导出里面的内容
2020/01/12 04-备份还原
记录的就是对数据的操作2020/01/12 04-备份还原
先把刚才加的记录删除

2020/01/12 04-备份还原
指定数据库导入
2020/01/12 04-备份还原
利用二进制丢失的数据可以利用这种方式找回
2020/01/12 04-备份还原2020/01/12 04-备份还原
flush logs可以切换日志
2020/01/12 04-备份还原
每次flush都会生成新的二进制文件2020/01/12 04-备份还原
2020/01/12 04-备份还原
可以删除二进制日志
2020/01/12 04-备份还原2020/01/12 04-备份还原
磁盘文件也删除了
2020/01/12 04-备份还原
索引文件也更新了
2020/01/12 04-备份还原
resetmaster是彻底删除 需要10以上版本支持2020/01/12 04-备份还原
重新开始计数
2020/01/12 04-备份还原
这个命令比较危险,把二进制日志全部删除了
2020/01/12 04-备份还原

备份工具

2020/01/12 04-备份还原数据库的备份与二进制都是密切相关的
2020/01/12 04-备份还原2020/01/12 04-备份还原**完全备份就是把整个mysql所有内容备份,包括用户数据,系统数据全部备份
部分备份,就是备份表和数据库
增量备份 (备份上一次完全备份或者增量备份到现在的完全变化
**
2020/01/12 04-备份还原

如果 星期四系统崩溃了
第一步,要还原数据库就需要先还原全部备份,还有就是必须按照顺序234增量备份,
但是增量备份到出问题的时间的中间的数据就需要二进制文件了

2020/01/12 04-备份还原默认mysql设置是不符合生产要求的
事务日志和数据库文件最好路径要按照默认的,最好放在独立的目录里,一般就是独立的磁盘
还有就是
innodb数据库所有数据文件挤在一个文件里了,要分开,每个表,innodb_per_table
还有就是建立账号
用户链接还存在名字解析的问题,DNS解析禁用了 ,skip——name——resolvf
用户的sql缓存默认是0 (0代表没有空间不缓存)
数据库建立起来,但是每个表还没有索引,看情况还要给某些字段加索引(要用慢查询扫描的观察观察)

差异备份是前一次完全备份到当次的差异备份的数据变化,周二的差异备份,仍然是周日的完全备份到到周二差异备份的数据变化
2020/01/12 04-备份还原
好处是把前面的都备份了,假如周四系统又崩溃了
2020/01/12 04-备份还原
把完全备份和最后的差异备份还原就足够了

2020/01/12 04-备份还原
增量备份是还原慢,备份快,差异备份就是还原快,备份慢

这一段也是用二进制日志还原,差异备份其实本质也是用的二进制的2020/01/12 04-备份还原完全备份是肯定要做的,因为是后续备份的基础2020/01/12 04-备份还原冷备就是数据库关了再备份,关了就等于读写都操作不了了
热备就是读写都能执行,希望用户一直能够访问
(myisam不支持热备,因为是不支持事务,只能温备)
温备就是加上读锁,只能读不能进行写操作

2020/01/12 04-备份还原

早期版本,数据库都放在一个文件里,后面都是分开放,放在ibd,frm放表定义2020/01/12 04-备份还原

冷备

2020/01/12 04-备份还原
找一个新主机没有数据库的2020/01/12 04-备份还原
两个数据库要还原记得,版本要一致

之前的数据库停止
2020/01/12 04-备份还原
新安装的机器目录是空的
2020/01/12 04-备份还原
把必要的文件进行复制,可以把目录打包直接过去,也可以scp复制过去

2020/01/12 04-备份还原
新机器上就有文件了
2020/01/12 04-备份还原
修改复制过去的所属权限
2020/01/12 04-备份还原
按照道理是需要两边配置文件一样的2020/01/12 04-备份还原
2020/01/12 04-备份还原
数据都在,这就是冷备份
2020/01/12 04-备份还原
物理备份是复制文件

2020/01/12 04-备份还原
逻辑备份就是,从数据库利用mysql协议,导出,简单地说就是执行select语句,等于进行全盘扫描放到一个磁盘文件里,
由于是执行数据库的查询导出操作,要去利用mysql协议进行访问,相对来讲,速度是比较慢的,
因为是利用查询语句来备份,所以跟存储引擎也就没有关系,占用空间小
可能丢失精度,因为数据库存,不一定存文本和数字之类的,很多情况下会存二进制数据,比如一些小的文件,图片,
放到数据库有好处就是数据库可以设置权限,但是导出来就有可能丢失这些精度
不够现在类似这样的图片一般不放在数据库里,一般放在文件里,数据库存文件路径

2020/01/12 04-备份还原
也可以用逻辑卷的快照来备份,基于逻辑卷的快照可以扩展空间
2020/01/12 04-备份还原2020/01/12 04-备份还原
冷备份,可以先把服务停止,通过cp复制,tar打包把文件拷贝出来,恢复的时候,把文件复制到mysql目录里,然后重启服务
热备份,用户可以读写,不影响备份过程
温备份,只能读不能写,,myisam因为没有事务日志,就不能用热备份
innodb支持事务,默认事务可重复读,可重复读代表在一个事务所看到的数据都是一致的,
DDL语言是不支持事务的(表定义语言)

2020/01/12 04-备份还原

mysqldump

2020/01/12 04-备份还原
把mysql的文件组成一个巨大的sql文件2020/01/12 04-备份还原
2020/01/12 04-备份还原
备份所有数据库,带有创建数据库的指令。create database
2020/01/12 04-备份还原2020/01/12 04-备份还原
这样就把数据库里所有内容导出
2020/01/12 04-备份还原
这个表太大了,使用truncate 清空
2020/01/12 04-备份还原
默认显示当前数据库,创建和增加的,现在里面是没有create database语句的,也就是将来还原需要先把数据库创建了,再导入这个文件
2020/01/12 04-备份还原
导入出hellodb数据库内容
2020/01/12 04-备份还原
假设现在把数据库内容删除
2020/01/12 04-备份还原
磁盘上对应的hellodb文件夹也没了
2020/01/12 04-备份还原
直接执行这个备份sql文件是缺少数据库的2020/01/12 04-备份还原
需要创建一个数据库,也可以不叫原来的数据库名字
2020/01/12 04-备份还原
导入备份的文件
2020/01/12 04-备份还原
现在就有数据了
2020/01/12 04-备份还原
这样使用是不推荐的,因为很容易创建的库跟之前的结构特性不一样,带来一些恢复上的问题
2020/01/12 04-备份还原
推荐使用-B备份或者-A
-B代表对数据库做备份,是可以指定多个数据库的

2020/01/12 04-备份还原
-B会显示create命令,相对来讲可以保留原来数据库的所有内容2020/01/12 04-备份还原
之前的这个文件就是类似-B选项导出,有create信息2020/01/12 04-备份还原
所有这个还原很简单直接导入即可,这样就不用手动创建数据库
2020/01/12 04-备份还原
mysql数据库放了一些用户信息,也需要备份
2020/01/12 04-备份还原

-E备份调度器,计划任务
2020/01/12 04-备份还原
存储过程和函数
2020/01/12 04-备份还原
这些都包含在-A里了2020/01/12 04-备份还原
默认字符集就是UTF8
2020/01/12 04-备份还原2020/01/12 04-备份还原
二进制日志如果不启用,就使用不 了,备份的时候标识出当时做备份的二进制日志位置2020/01/12 04-备份还原
、这里显示的就是二进制日志当前在哪里,也就是能够知道还原从什么时候开始的二进制文件2020/01/12 04-备份还原
当前是162882020/01/12 04-备份还原
加上master-data再次做一次备份
2020/01/12 04-备份还原
当前文件记录了,changa master 备份的时间点2020/01/12 04-备份还原
现在在数据库里做一些修改操作
2020/01/12 04-备份还原
同样二进制文件发生了变化
2020/01/12 04-备份还原
之后不小心把目录删除了
2020/01/12 04-备份还原
当前数据库就显示没了
2020/01/12 04-备份还原
数据库还原,首先把刚才的备份导入,导入的时候记得先把二进制日志先停了
2020/01/12 04-备份还原
当前二进制路径是16672
2020/01/12 04-备份还原
出现错误时因为,虽然库没了,但是表的记录信息还在
2020/01/12 04-备份还原

现在内容已经生成
2020/01/12 04-备份还原
重新删除,虽然把目录删了,但是以为表还在内存中存在
2020/01/12 04-备份还原
重新启动数据库
2020/01/12 04-备份还原
2020/01/12 04-备份还原
代表是数据库信息并没有全部清除
2020/01/12 04-备份还原
这么删除目录,表信息还保留
2020/01/12 04-备份还原
这样就先把之前hello数据库拷贝到hellodb
2020/01/12 04-备份还原
有个文件夹名,重新拷贝
2020/01/12 04-备份还原
2020/01/12 04-备份还原
重新启动下数据库
2020/01/12 04-备份还原
2020/01/12 04-备份还原
可以能处于锁的状态2020/01/12 04-备份还原
停了数据库再拷贝
2020/01/12 04-备份还原
2020/01/12 04-备份还原
复制过来后重新启动数据库
2020/01/12 04-备份还原
还是有问题,可能再performance_schema还记录一些信息

2020/01/12 04-备份还原
换个方式还原,这个备份基于二进制文件
2020/01/12 04-备份还原
换一个数据库名字,这样还原就还原到hellodb2里了2020/01/12 04-备份还原
2020/01/12 04-备份还原
想要把这个数据库恢复到最新状态
2020/01/12 04-备份还原
重新对hellodb2做下完全备份,然后进行修改,修改之后备份还原
2020/01/12 04-备份还原
日志从头来
2020/01/12 04-备份还原
现在对数据库做备份
2020/01/12 04-备份还原
这里写了备份时间时2452020/01/12 04-备份还原
重新对数据库做修改
2020/01/12 04-备份还原
二进制日志增长了
2020/01/12 04-备份还原
假设数据库不小心删除了
2020/01/12 04-备份还原

如何还原

首先断开网络不要继续访问了

停止二进制日志记录
2020/01/12 04-备份还原
导入文件
2020/01/12 04-备份还原
把做过备份之后的修改恢复,把245之后的还原2020/01/12 04-备份还原
找到二进制文件把245之后的导出,里面有个drop部分语句
2020/01/12 04-备份还原
把drop记录删除2020/01/12 04-备份还原
再把这个文件读入
2020/01/12 04-备份还原
还原到较新状态了
2020/01/12 04-备份还原
记得把二进制日志开启
2020/01/12 04-备份还原
2020/01/12 04-备份还原

相关文章: