MySQL以简单易用著称,在同一个服务器上可以安装N个不同的版本,方便测试,迁移等等。此外,对于大多数Linux系统,集成了mysql,缺省会被安装。因此多版本的问题导致一些莫名的错误也是时有发生。最近在提取binlog日志时,碰到了一个read_log_event,Found invalid event in binary log。经查发现原来是mysqlbinlog版本问题引发的。如下文,供大家参考。
最近的MHA测试过程中,碰到了mysqlbinlog客户端的版本低于服务端版本的问题。即这个错误提示:mysqlbinlog is 3.2 (included in MySQL Client 5.0 or lower), but MySQL server version is 5.6.22-log. mysqlbinlog can not parse row based events。这个应该是个比较常见的错误。主要是由于在安装Linux期间通常在自带安装mysql相关rpm包,后来又安装了高版本的mysql而引发的一些版本问题。下面是这个问题的主要描述。
MySQL :: Download MySQL Community Server (Archived Versions) (opens new window)
重点文档:https://github.com/danfengcao/binlog2sql
2.4在MySQL的data目录下打开cmd,选择开始节点和结束节点的数据,并且存放到E盘下的update.sql中
ERROR: Error in Log_event::read_log_event(): 'Sanity check failed', data_len: 171, event_type: 30
如题: 需要本地安装mysqlbinlog 命令 mysql-bin.000046 binlog 文件 lzerp 数据库名称 /home/46.sql 导出sql 文件的目录 mysqlbinlog --base64-output=decode-rows -v mysql-bin.000046 -d lzerp > /home/46.sql
sql_log_bin = {ON|OFF} 是否记录二进制日志。启用二进制记录日志,则这项必须是ON
MHA在MySQL数据库中被广泛使用,它小巧易用,功能强大,实现了基于MySQL replication架构的自手动主从故障转移,从库重定向到主库并自动同步。尽管如此,在部署配置的过程中,由于疏忽总难以避免这样或那样的错误。本文是对MHA配置中常见问题的一个汇总,供大家参考。
作为一个 MySQL DBA,查看分析 binlog 是日常工作的一部分。不知道你是否遇到过这样的需求:查询一个时间段内各个表的 dml 统计情况。但,如果 binlog 文件很多呢?又或者负责的业务线比较多,有多个业务都有这种需求呢?
log_bin binlog的开关和binlog的前缀
MyFlash是美团开源的一个回滚DML操作的工具。该工具通过解析v4版本的binlog,完成回滚操作。
MySQL不同于oracle,没有闪回查询这类概念,但网上流传几个闪回的开源工具如 binglog2sql、MyFlash,可以使用binglog日志进行误操作数据的恢复。
mysqlbinlog 是将 binlog 解析成可读可执行的 SQL 的重要工具。
在mysql中会生大量的如mysq-bin.000001这类日志文件了,这些都是二进制文件了,如果我们是普通的日志没有进行主从配置就可以直接使用reset master进行删除了这个方法很简单,
玩过binlog server的同学都知道,它使用mysqlbinlog命令以daemon进程的方式模拟一个slave的IO线程与主库连接,可以很方便地即时同步主库的binlog,以便弥补定时备份策略中最近一次备份到下一次备份完成之前这段时间内的数据容易丢失的问题。 优点:备份出来的binlog不会受到主库expire_logs_days参数的影响,因为binlog server是模拟slave的IO线程,也不会受到从库relay_log_purge参数影响。这些binlog除非你手动清理,否则就会持续
之前写过一篇名为“快速安全删除MySQL大表”的博客,讲解如何在不影响线上数据库服务的前提下删除大表。实际上清理MySQL binlog也会遇到同样的问题。例如,我们每个binlog文件的大小是1G。最初的做法是,每天凌晨2:30执行下面的操作清理10天前binlog:
近段时间一直在研究mysql的日志系统,在网上看了N多mysql日志操作的文章,但都过于零乱,为了让自己以后不再搞忘,特作出以下总结:
如果文章出现不完整,可以去我的个人博客查看,个人博客地址:https://blog.97hjh.cn
作者:孙绪宗,新浪微博 DBA 团队工程师,主要负责 MySQL、PostgreSQL 等关系型数据库运维。
MySQL binlog日志记录了MySQL数据库从启用日志以来所有对当前数据库的变更。binlog日志属于二进制文件,我们可以从binlog提取出来生成可阅读的SQL语句来重建当前数据库以及根据需要实现时点恢复或不完全恢复。本文主要描述了如果提取binlog日志,并给出相关示例。
使用 --read-from-remote-server 读取远程数据库日志,而不是读取本地文件
之前的文章中介绍了 MHA 的功能和原理,MHA 主要是通过对 master 自动进行故障转移,来保证集群的高可用,下面就实际搭建一下 MHA 环境 目标 搭建完成 MHA 环境,然后模拟 maste
(1) mysql (2) mysqldump (3) mysqlbinlog (4) mysqladmin (5) mysqlsafe (6) mysqlshow (7) mysqld
该命令既可以读取本地日志文件又可以读取远程数据库文件(不包含远程数据库relay log)
上节我们说到如何备份二进制文件时说到通过--read-from-remote-server 连接数据库,
mysqlbinlog命令默认使用binlog语句将行事件以base-64字符串编码
--auto-rehash
在上一篇博客的学习,我们知道了InnoDB存储引擎的两种事务日志,redo log是InnoDB特有的功能,而MySQL也是有自己的日志机制的,也即本文学习的binlog
上图上有个warning,说的是如果用--database了,可能会过滤掉一些事务
MyISAM:默认的MySQL插件式存储引擎,它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。
简介: 上篇推文 笔者介绍了如何用开源工具来闪回binlog,但有时候我们的机器无法安装这些开源工具。这时候我们可以使用shell脚本来闪回binlog,是不是觉得方便多了。
[root@db02 data]# mysqlbinlog mysql_bin.000001
数据库及时备份可以帮助我们在数据库出现异常宕机时及时的使用备份数据进行恢复工作,将因为数据库宕机产生的影响降低到最小。上一篇针对使用xtrabackup工具进行物理备份和数据恢复做了一个详细讲解,本篇主要谈谈如何使用mysql自带的备份工具mysqldump进行逻辑备份和数据恢复。如果还围观看过上一篇文章的可以先行查询上一篇文章关于使用xtrabackup进行数据备份与恢复:Mysql备份与恢复(1)---物理备份。
使用mysqlbinlog按时间查询二进制日志时,会用到start-datetime和stop-datetime选项。
binlog 基本认识 MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的。
前一段时间接二连三的出现开发人员在测试环境和生产误操作导致数据库误删除/更新,对DBA而言,回滚数据着实是一件头疼的事情,凡涉及到恢复线上数据必然对应用带来一定的影响。大多数情况是开发误操作delete数据,update多数行,根据之前的操作经验,本文介绍常用的恢复方法。
如果在开始备份时没有指定--flush-logs参数,则需要首先查看备份时所处的位置
写在前面 对于数据库而言,误操作是很致命的,并且是很难完全避免的,除了规范DBA操作之外,还需要一个非常好用的快速闪回工具处理误操作问题。之前有同行发表过类似文章,介绍了诸如binlog2sql和姜承尧开发的增强版mysqlbinlog工具,今天我们介绍一下mariadb官方提供的mysqlbinlog工具的flashback功能,以供大家根据自身情况选择合适的闪回方案。。 flashback介绍 首先,说明一点,mariadb从10.2.4开始支持flashback功能,笔者测试使用的mariadb版本是
糖豆贴心提醒,本文阅读时间5分钟 血的教训,事发经过就不详述了。直接上操作步骤及恢复思路(友情提示:数据库的任何操作都要提前做好备份),以下是Mysql数据后的恢复过程: 1. 找到binlog 恢复数据的前提是必须开启Mysql的binlog日志,如果binlog日志没开启,请忽略此篇文档。binlog日志是否开启可以查看Mysql配置文件。日志位置一般在/var/lib/mysql目录或者编译安装的date目录下。也可登录Mysql用命令查看。 # cat /etc/my.cnflog_bin
1.下载 git clone https://gitee.com/mo-shan/analysis_binlog cd analysis_binlog
mysqlbinlog可以伪装成slave去像主服务器获取binlog. 本脚本就是把这个功能封装了一下.
MySQL 备份一般采取全库备份加日志备份的方式,例如每天执行一次全备份,每小时执行一次二进制日志备份。这样在 MySQL 故障后可以使用全备份和日志备份将数据恢复到最后一个二进制日志备份前的任意位置或时间。
如果不小心对数据库进行误操作,而又没有及时备份怎么办?这恐怕是广大的coder经常遇到的一类问题。 我今天就因为不小心删除了某个数据库,但最后的备份是1个礼拜前的,唯一能解决的办法就是通过mysqlbinlog来恢复了。解决方案如下: 如果MySQL服务器启用了二进制日志,你可以使用mysqlbinlog工具来恢复从指定的时间点开始(例如,从你最后一次备份)直到现在或另一个指定的时间点的数据。 要想从二进制日志恢复数据,你需要知道当前二进制日志文件的路径和文件名。 一般可以从配置文件(一般情况,Linux下
针对存储引擎为myisam的表,能够直接复制frm、myd、myi这三个文件起到备份的效果。须要还原的时候,再复制回来就能够达到还原效果。
为什么80%的码农都做不了架构师?>>> binlog介绍 binlog,即二进制日志,它记录了数据库上的所有改变. 改变数据库的SQL语句执行结束时,将在binlog的末尾写入一条记录,同时通知
INSERT事件的开始位置为1015,结束位置为1064 ,其实end_log_pos也是结束位置
在 mysql 配置文件中配置 log-bin,重启 mysql my.cnf (on Linux/unix) or my.ini (on Windows) 例子:
领取专属 10元无门槛券
手把手带您无忧上云