AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 20272
Accepted
Dave Rix
Dave Rix
Asked: 2012-07-03 08:06:41 +0800 CST2012-07-03 08:06:41 +0800 CST 2012-07-03 08:06:41 +0800 CST

使用 mysqlbinlog 读取 MySQL 5.5 二进制日志时出错

  • 772

我正在使用的复制设置遇到问题。它已经工作了好几个月了,然后在周末,slave 停止从 master 的 binlog 读取更新并出现错误Got fatal error 1236 from master when reading data from binary log: 'bogus data in log event'

尝试使用 mysqlbinlog 读取相关的二进制日志时,出现如下所示的错误;

[root@slglcd-01] # mysqlbinlog ibm-pr-slglcd-01.000075 > /dev/null
ERROR: Error in Log_event::read_log_event(): 'Event too small', data_len: 0, event_type: 0
ERROR: Could not read entry at offset 1828: Error in log format or read error.
[root@slglcd-01] #

令人沮丧!--start-position我曾尝试使用和的各种组合--offset来尝试克服不良数据,但似乎没有任何效果......

我所追求的是一种从二进制日志中跳过(或删除)此错误的方法,创建一个没有违规项目的新二进制日志,以便我可以继续我的复制。

我不担心丢失声明,这是一个 syslog 收集数据库,丢失一行不会受到伤害。

我不能做的是从主人重新创建奴隶,因为主人使用BLACKHOLE引擎,因此没有存储真实数据......

如果最坏的情况发生在最坏的情况下,我将不得不从序列中的下一个二进制日志开始,并松散留在有问题的日志中的数据。

在此先感谢,戴夫

mysql replication
  • 2 2 个回答
  • 8027 Views

2 个回答

  • Voted
  1. Best Answer
    RolandoMySQLDBA
    2012-07-03T08:29:35+08:002012-07-03T08:29:35+08:00

    由于 Master 上的二进制日志已损坏,因此您无能为力。节哀顺变。直接跳到下一个 binlog:

    STOP SLAVE;
    CHANGE MASTER TO master_log_file='ibm-pr-slglcd-01.000076',master_log_pos=107;
    START SLAVE;
    

    当然,107 是 MySQL 5.5 binlogs 的起始位置。如果 Master 是 5.1(或 5.0.95),使用 106。如果 Master 在 5.1 之前,使用 98。

    如果 Master BinLog Corruption 频繁,可能需要考虑在 Master 上使用更小的二进制日志(可能是 128M 而不是默认的 1G):

    [mysqld]
    max_binlog_size=128M
    

    这不会阻止损坏,但降低它的大小会将数据丢失从 1G 降至 128M。

    • 2
  2. Dietmar
    2012-07-03T08:58:48+08:002012-07-03T08:58:48+08:00

    我曾经有一个非常相似的问题。

    正如您已经提到的,问题是要找到正确的 --start-position。

    我通过使用 hexeditor / xxd 查看损坏的二进制日志文件解决了这个问题(在我的情况下,找到一些在损坏位置归零的块),通过查找下一部分来跳过二进制日志文件的这个明显损坏的部分,其中一些有用的 SQL 语句在 hexdump 中可见,并且 binlog 可能再次完好无损。

    为了在 Hexdump 中识别正确的 binlog-header,我查看了http://forge.mysql.com/wiki/MySQL_Internals_Binary_Log上的开发人员文档。

    基本上,标头以时间戳(4 字节)、类型归档(1 字节)和主服务器复制 ID(4 字节)开始。

    在我的情况下,Server-ID 相对容易识别,所以我从我认为是 Server-ID 的位置中减去 5,并将这个值作为 start-position 输入到 mysqlbinlog - 它很高兴。

    将其设置为从属上的新主位置最终使复制再次运行。

    是的,这是“肮脏的”,您会丢失一些陈述,但是您已经意识到这一点,也许这对您的情况有所帮助。

    • 1

相关问题

  • 我在哪里可以找到mysql慢日志?

  • 如何优化大型数据库的 mysqldump?

  • 什么时候是使用 MariaDB 而不是 MySQL 的合适时机,为什么?

  • PostgreSQL 9.0 Replication 和 Slony-I 有什么区别?

  • 组如何跟踪数据库架构更改?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何查看 Oracle 中的数据库列表?

    • 8 个回答
  • Marko Smith

    mysql innodb_buffer_pool_size 应该有多大?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    从 .frm 和 .ibd 文件恢复表?

    • 10 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    如何选择每组的第一行?

    • 6 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta 使用 psql 列出数据库权限 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    bernd_k 什么时候应该使用唯一约束而不是唯一索引? 2011-01-05 02:32:27 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve