首页
学习
活动
专区
圈层
工具
发布

从删库到恢复:MySQL Binlog实战手册

当删库不再是跑路的理由“删库跑路”曾是程序员圈子里经久不衰的段子,但现实中误删数据的后果可能是灾难性的——客户投诉、业务中断甚至更严重的后果。所幸,MySQL的Binlog为数据恢复提供了“后悔药”。...一、恢复前提:Binlog的启用与检查1. 首先确认Binlog是否开启 如果未开启Binlog,数据恢复将无从谈起。...二、实战案例:从误删到恢复的完整流程场景1:误删单表数据(结合备份恢复)步骤1:还原全量备份 假设每天凌晨有全量备份,误删发生在下午。...在新库测试:切记避免直接操作生产库,推荐搭建临时库验证恢复脚本。跳过GTID冲突:如果需重复执行Binlog,添加--skip-gtids参数。...四、总结MYSQL数据库的恢复Binlog技术是关键,作为一名合格的DBA来说是必备的技能。也是保证业务系统业务数据的一种极其重要的保证。大家如果在使用过程中有啥问题欢迎评论区沟通交流!

71910

从库 io_thread 接受binlog速度太慢?

于是看了下relay log信息, 发现从库只有不到100MB的binlog和relay log; 主库那边已经产生了10+GB的日志啊, 查看从库接受的binlog位置还对应主库的第一个Binlog....也就是说从库只收到了几十MB的主库日志....分析过程我们先来看下主从同步的逻辑: 主库发送binlog给从库的io_thread, io_thread写入relay log, 然后sql线程去回放相关relay log现在的情况是 io_thread...所以问题基本上算是结了.总结原因: 大量小事务 + 从库的低IOPS 导致本次从库的延迟增大.(刷盘刷得慢,网络接受得也就慢了).解决方法: 关闭从库双1, 减少IO....觉得麻烦的话, 直接关从库的双1, 让OS去考虑吧.)思考: 主库IOPS也是差不多啊, 为啥这么多小事务跑得还挺快的(相对于从库来说)?

21720
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    怎么避免从删库到跑路 -- 详解 mysql binlog 的配置与使用

    有一句十分流行的调侃 — “从删库到跑路”就很形象的说明了误操作后的结果,那么如果你真的不小心执行了删库操作,真的就无法挽回了吗?...2. binlog binlog 即二进制日志,他记录了引起或可能引起数据库改变事件,包括事件发生的时间、开始位置、结束位置等信息,select、show 等查询语句不会引起数据库改变,因此不会被记录在...众所周知,mysql 的主从同步机制也是依赖 binlog 来实现的,binlog 让从数据库可以精准还原主库的每一个操作。...ROW 模式(RBR) 在该模式下,binlog 会记录每次操作的源数据与修改后的目标数据,而不会记录 sql 语句,从 mysql 5.6.2 版本开始,你可以通过在配置文件中指定 binlog_rows_query_log_events...清理 binlog 6.1. 删除全部日志 reset master 这个命令会删除所有 binlog,并让日志文件从 000001 开始重新记录和生成。 6.2.

    1K20

    【MySQL系列】- binlog预防删库跑路

    如果哪天不小心把表给删了,数据都没了或者一不留神被删库跑路了,那怎么把数据恢复呢?这就需要今天的主角binlog登场了。...这些事件使数据库从备份点更新,数据将变化恢复到指定的时间点(Point-in-time)。...主从复制(replication):主数据库向从数据库发送binlog到从数据库,从数据库执行和复制binlog从而将数据恢复到从数据库中。...审计(audit):用户可以通过二进制日志中的信息来进行审计,判断是否有对数据库进行注入的攻击。 binlog的格式 MySQL有好3种格式记录binlog,具体的格式取决于MySQL数据库的版本。...有一张表如下: orders@db_test 修改一下表中数据,通过上面命令查看binlog并截取其中一段 binlog部分内容 从binlog中可以看到记录更新前后的数据,这样就可以以可读的方式查看

    1.2K30

    Mysql数据库之Binlog日志使用总结

    binlog二进制日志对于mysql数据库的重要性有多大,在此就不多说了。...至少得有一个从日志记录开始后的数据库备份,通过日志恢复数据库实际上只是一个对以前操作的回放过程而已,不用想得太复杂。...//binlog每个日志文件大小 binlog-do-db=需要备份的数据库名,如果备份多个数据库,重复设置这个选项即可 binlog-ignore-db=不需要备份的数据库苦命,如果备份多个数据库,重复设置这个选项即可...而MySQL在Binlog中所记录的是数据库逻辑变化信息,MySQL称之为Event,实际上就是带来数据库变化的DML之类的Query语句。...从以往经验和相关测试来看,对于高并发事务的系统来说,“sync_binlog”设置为0和设置为1的系统写入性能差距可能高达5倍甚至更多。

    6.7K90

    MySQL参数max_binlog_cache_size设置不当引发的从库复制中断的案例

    引发此问题的主库执行了几个很大的事务,且从库开启了并行复制,因此需要更大的max_binlog_cache_size来处理innodb事务。...02 故障处理 处理过程倒是非常简单,该参数可以动态修改,因此直接调整主库及从库的值。...为何从库并行复制下更易触发? 在主库上,大事务执行时就会检查 max_binlog_cache_size。...如果主库设置得过小,大事务在主库就会执行失败,根本不会记录到Binlog中,也就不会影响到从库。 在本案例中,问题出在从库。...这些工作线程在应用大事务时,同样需要为自己的任务分配Binlog Cache(用于模拟执行,并非真的写Binlog)。此时,从库上的 max_binlog_cache_size限制就生效了。

    8210

    MySQL binlog日志格式 binlog_format

    Mixed 从 5.1.8 版本开始,MySQL 提供了除 Statement 和 Row 之外的第三种复制模式:Mixed,实际上就是前两种模式的结合。...优点 历史悠久,技术成熟; 产生的 binlog 文件较小; binlog 中包含了所有数据库修改信息,可以据此来审核数据库的安全等情况; binlog 可以用于实时的还原,而不仅仅用于复制;...; 多数情况下,从服务器上的表如果有主键的话,复制就会快了很多; 复制以下几种语句时的行锁更少: * INSERT … SELECT * 包含 AUTO_INCREMENT 字段的 INSERT...* 没有附带条件或者并没有修改很多记录的 UPDATE 或 DELETE 语句 执行 INSERT,UPDATE,DELETE 语句时锁更少; 从服务器上采用多线程来执行复制成为可能; Row...SQL 语句时,最好采用 statement 模式,否则很容易导致主从服务器的数据不一致情况发生; 另外,针对系统库 MySQL 里面的表发生变化时的处理准则如下: 如果是采用 INSERT,UPDATE

    5.9K30

    MySQL binlog

    文件较小; binlog 中包含了所有数据库修改信息,可以据此来审核数据库的安全等情况; binlog 可以用于实时的还原,而不仅仅用于复制; 主从版本可以不一样,从服务器版本可以比主服务器版本高;...UPDATE 或 DELETE 语句 执行 INSERT,UPDATE,DELETE 语句时锁更少; 从服务器上采用多线程来执行复制成为可能; row 缺点: 生成的 binlog 日志体积大了很多;...(https://github.com/danfengcao/binlog2sql ),从MySQL binlog解析出你要的SQL。...,基于binlog和基于GTID(全局事务标示符),基于binlog的一主一从复制的基本过程如下: Master将数据改变记录到二进制日志(binary log)中 Slave上面的IO进程连接上Master...,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容 Master接收到来自Slave的IO进程的请求后,负责复制的IO进程会根据请求信息读取日志指定位置之后的日志信息,返回给Slave

    3.8K50

    【删库跑路】使用Binlog日志恢复误删的MySQL数据

    模拟一次误删数据的操作,并且使用binlog日志恢复误删的数据。 写这篇文章的初衷,是有一次我真的险些把测试数据库的一张表给删除了,当时吓出一身冷汗。...正文 Binlog介绍 binlog是记录所有数据库表结构变更(例如CREATE、ALTER TABLE…)以及表数据修改(INSERT、UPDATE、DELETE…)的二进制日志。...看了上面binlog的定义,大家也应该能大致推理出binlog的三大用途: 恢复数据:今天要说的重点 数据库复制:主从数据库是通过将binlog传给从库,从库有两个线程,一个I/O线程,一个SQL线程,...I/O线程读取主库传过来的binlog内容并写入到relay log,SQL线程从relay log里面读取内容,写入从库的数据库。...当然,看完binlog日志恢复数据的原理,希望大家以后在定期备份数据库的脚本里,也能够加上刷新binlog日志的命令,这样一旦某天丢失数据,可以将当天binlog数据单独拿出来还原,做到清晰可辨,也加快恢复效率

    4.8K20
    领券