Mysql里的备份和还原 及常见日志

日志

一、日志的定义和作用

1、定义:记录mysql发生的事情
2、作用

1.恢复还原数据--》二进制日志
2.排错
3.了解程序运行情况--》了解mysql性能
二、日志的类型

1.错误日志 error log:

1.存放的路径--/data/mysql,文件名字--》主机名.err
2.查看:select @@log-error

2、通用日志 general log:–》 会记录mysql里面的所有操作

1、缺点:消耗cpu、内存、磁盘空间
2、系统默认不开启;
	临时开启:set global genera_log = 1;
3、查看:select @@general_log

3、慢日志 slow query log

1.记录消耗时间比较长的SQL语句,方便日后进行优化
2.系统默认不开启
3.查看状态:select @@slow_query_log

4、二进制日志 binary log:文件里存放的是二进制数据,不是普通文件,使用cat,tail看不了,要使用特殊的工具查看。

4.1、开启二进制日志的时候,必须设置服务器id,每台服务器的id不能一样,不然会导致主从复制失败
4.2、系统默认不开启
4.3、查看:select @@log_bin
4.4、查看二进制内容:mysqlbinlog -vv 二进制文件
4.5、查看当前使用的是哪个二进制文件:show master status;
	查看所有的二进制文件和大小:show binary logs;
4.6、二进制日志作用
	1.用来恢复数据
	2.用来做主从复制
4.7、产生新的二进制日志的三种方式
	1、service mysqld restart
	2、flush logs
	3、内存达到1G的时候
4.8、两种恢复数据的方式
	1、根据时间,把时间段内的操作再做一遍
	2、根据位置号,从某个位置号开始把操作重做一遍
4.9、日志的格式
	row level:记录每一行的数据,表里面的哪些行发生了变化
	statement level:记录用户输入的SQL语句
	mixed level:混合日志

5、innodb 存储引擎产生的日志
5.1、重做日志 redo log:记录的是脏数据的变化

1、文件的路径:/data/mysql
2、文件的名字:ib_logfile0、ib_logfile1
3、作用:确保事务的持久性,mysql意外宕机重启也不要紧,只要在重启时解析redo log中的事务而后重放一遍,将Buffer Pool中的缓存页重做成脏页,后续再在合适的时机将该胜页刷入磁盘便可

在这里插入图片描述
5.2、undo log:记录某数据被修改前的值

1、文件的路径:/data/mysql
2、文件的名字:ibdata1
3、作用:方便回滚

备份和还原

一、常见的备份方式

1、远程备份软件:rsync

rsync是linux系统下的数据镜像备份工具,使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步

2、物理备份和逻辑备份

1.物理备份:直接备份数据
2.逻辑备份:备份的时表结构和产生数据的过程

3、冷备和热备

1.热备 online:Mysql服务是运行的
2.冷备 offline:Mysql服务是关闭的,不关闭机器

4、异地备份

1.rsync
2.scp
3.mysqldump
4.云存储

5、备份的方案

1.完全备份
2.增量备份
3.差异备份

6、数据的还原:备份的方案+二进制日志

二、常见的备份操作

1、相关命令

备份:mysqldump
还原:mysql
查看二进制日志:mysqlbinlog

2、mysqldump:不仅能备份表,还能备份库
在这里插入图片描述
2、实现备份还原案例,基于时间点恢复

步骤:
1.做一个有数据的库,进行完全备份	tangyuhao   t1
mysqldump -uroot -p123456 --databases tangyuhao>/tangyuhao_backup/tangyuhao.sql

2.做DML操作,增加数据
mysql>insert into t1(id,name) values(4,'cali'),(55,'wang'),(6,'zhang');

3.做删除数据库操作
drop database tangyuhao;

4.恢复全备
mysql -uroot -p123456 <tangyuhao.sql

5.查找删库附近的截止时间点或者截止位置号
mysqlbinlog -v mysql-bin.000002|grep -C 20 "drop database"
截至时间stop:220728 21:08:41

6.找到起始时间点或者位置号
mysqlbinlog -v mysql-bin.000002|
起始时间start:220728 21:07:57
# at 154
#220728 21:07:57	在位置号之后的时间

7.再根据二进制日志做增量恢复
mysqlbinlog -v --start-datetime="2022-07-28 21:07:57" --stop-datetime="2022-07-28 21:08:41" mysql-bin.000002 |mysql -uroot -p123456
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值