备份:完全备份,增量备份
完全备份:将整个数据库完整的进行备份
增量备份:在完全备份的基础之上,对后续新增的内容进行备份
备份的需求:
冷备份:关机备份,停止mysql服务,然后进行备份
热备份:开机备份,无须关闭mysql服务,进行别发
物理备份:对数据库系统的物理文件(数据文件,日志文件),进行备份
逻辑备份:只是对数据库的逻辑组件进行备份,(表结构),以sql语句的形式,把库,表结构,表数据进行备份保存(直接在数据库系统当中删除全部文件,逻辑备份无法恢复)
物理备份:一般采用完全备份,对整个数据库进行完整的打包备份
优点:操作简单
缺点:数据库文件占用量很大的,占用空间太大,备份和恢复的时间很长,而且需要暂定数据库服务,打包备份最好是把服务关掉,避免新的数据进入,被覆盖,也可能导致恢复失败
演示前提:关闭数据库服务
查看需要备份的内容
打包目录
#压缩备份 tar Jcvf /opt/mysql_all_$(date +%F).tar.xz /usr/local/mysql/data/
模拟删库
解压到当前目录
#解压恢复 tar Jxvf /opt/mysql_all_2020-11-22.tar.xz
模拟破坏
恢复
检测
远程复制的方式
注意事项:
这是mysql自带的工具:
Mysqldump
备份单个库:
Mysqldump -u root -p --databases 库名 > /opt/库名.sql
备份多个库:
Mysqldump -u root -p --databases ku ku1> /opt/ku.sql
备份全部库:
Mysqldump -u root -p --all-databases > /opt/ku.sql
补充命令:
mysql -u root -p123456 -e 'show databases;'
-e:指定连接mysql之后执行完命令,自动退出。
逻辑删除,可恢复表中的内容
恢复
查看
删库
多个库一起恢复:
删库
恢复
先备份
删库
恢复单个表(指定库名进行恢复)
恢复多个表
可以用sql语句的方式,直接实现两个数据库的迁移
物理冷备份和物理热备份
特点:操作简单
缺点:数据量大,占用的备份空间比较大
Mysqldump:这是mysql自带的备份文件的命令
特点:方便,简单,但是只能基于逻辑上的表结构和数据恢复,物理删除之后再用逻辑恢复会报错,也可以作为数据迁移,必然也会占用大空间,比较物理备份,相对来说占的空间小一些
演示了全量备份,库,表
Mysqldump也支持增量备份,没有重复数据,备份量小,时间短
Mysql增量备份恢复表数据期间,表会锁定
缺点:备份时锁表必然会影响业务,数据超过10G以后,耗时会比较长,导致服物不可用
二进制文件在怎么来,修改配置文件来
Mysql二进制日志记录格式有三种:
记录修改的sql语句,高并发情况下,记录sql语句时候的顺序可能会出错,恢复数据时可能会导致丢失效率和误差,效率比较高
精准记录每一行的数据,准确率高,恢复的时效炉比较低
在正常情况下使用的是STAEMENT,一旦发生高并发,会智能自动切换到ROW行,
打开这两个服务:
log-bin=mysql-bin
binlog_format=MIXED
查看日志文件
查看表信息
mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000001
刷新命令:(会出现新的断点)
断点:刷新之后,后续的文件会保存在刷新过的文件当中,再次刷新之后,后续的内容会保存在所在断点当中,操作都在后续断点钟操作
例如:
刷新断点
删除一行
再打一个断点,然后查看断点2,里面并没有删除的显示
如何恢复:(在断点1中恢复)
基于位置点来进行恢复
从某一个位置点开始,恢复到最后
格式:mysqlbinlog --no-defaults --start-position='位置点' mysql-bin.000002 | mysql -u root -p
从开头,一致恢复到某个位置
格式: mysqlbinlog --no-defaults --stop-position='735' mysql-bin.000001 | mysql -u root -p
从指定点---指定点结束
格式:mysqlbinlog --no-defaults --start-position='735' --stop-position='910' mysql-bin.000001 | mysql -u root -p
命令:
格式:mysqlbinlog --no-defalult--start-datetime=’时间点’文件名|mysql -u root -p
2.从开头到指定结尾
格式:mysqlbinlog --no-defalult--stop-datetime=’时间点’文件名|mysql -u root -p
格式:mysqlbinlog --no-defalult--start-datetime=’时间点’ --stop-datetome=’时间点’ 文件名|mysql -u root -p
总结:
在生产中,通过binlog进行增量恢复是非常好用的方法
我们只需要对binlog文件进行备份,随时可以进行备份和恢复
查看错误日志
通用访问日志:
慢查询日志:
工具查看:
命令:
yum -y install xz
#压缩备份 tar Jcvf /opt/mysql_all_$(date +%F).tar.xz /usr/local/mysql/data/
#解压恢复 tar Jxvf /opt/mysql_all_2020-11-22.tar.xz