Binlog 有错误的幻数

lag*_*lex 6 mysql windows binlog

每当我启动 MySQL 时,我都会收到此错误。

121028  1:38:55 [Note] Plugin 'FEDERATED' is disabled.
121028  1:38:55 InnoDB: The InnoDB memory heap is disabled
121028  1:38:55 InnoDB: Mutexes and rw_locks use Windows interlocked functions
121028  1:38:56 InnoDB: Compressed tables use zlib 1.2.3
121028  1:38:56 InnoDB: Initializing buffer pool, size = 16.0M
121028  1:38:56 InnoDB: Completed initialization of buffer pool
121028  1:38:56 InnoDB: highest supported file format is Barracuda.
121028  1:38:57  InnoDB: Waiting for the background threads to start
121028  1:38:58 InnoDB: 1.1.8 started; log sequence number 3137114
121028  1:38:58 [ERROR] Binlog has bad magic number;  It's not a binary log file that can be used by this version of MySQL
121028  1:38:58 [ERROR] Can't init tc log
121028  1:38:58 [ERROR] Aborting

121028  1:38:58  InnoDB: Starting shutdown...
121028  1:38:58  InnoDB: Shutdown completed; log sequence number 3137114
121028  1:38:58 [Note] C:\PROGRA~2\EASYPH~1.1\MySql\bin\mysqld.exe: Shutdown complete
Run Code Online (Sandbox Code Playgroud)

我已经试过

我在 Windows 7x64 PC 上安装了 EasyPHP 12.1。

Rol*_*DBA 7

在创建新的二进制日志时,二进制日志具有不同的起始位置。实际上,一个二进制日志位置实际表示在最近记录的 SQL 语句末尾写入二进制文件的字节数。

以下是 MySQL 5 各主要版本的二进制日志起始位置列表

  • 对于 MySQL 5.5:120
  • 对于 MySQL 5.5:107
  • 对于 MySQL 5.1:106
  • 对于 MySQL 5.0:98

这些初始字节中包含一个称为幻数的静态值,即 base-64 值。我在 2011 年 12 月 26 日写了这篇文章:即使 binlog_format=STATEMENT mysql 也会发出 BINLOG 行

虽然 BINLOG 幻数总是在同一个位置,但在某些情况下你不能使用从一个版本到新版本的二进制日志。例如,二进制日志事件可能会更改并且无法理解。在处理 DATETIME 值时,基于行的二进制日志记录和 MySQL 复制可能会在从较旧的主服务器复制的 MySQL 5.6 Slave 上中断。我最近写了这个

也有可能损坏二进制日志。我在 2011 年 2 月 4 日写了这篇文章:MySQL master binlog corruption

你的解决办法是

  • 网络停止mysql
  • 擦除二进制日志(和二进制日志索引文件)
    • 如果您不知道它们在哪里,请my.ini在您的 PC 上找到
    • my.ini在记事本中打开
    • 寻找选项log-binlog_bin
    • 寻找选项 datadir
    • 如果 log-bin 只有一个文件名,请查看由 datadir
    • 如果 log-bin 包含路径和文件名,则查看由 log-bin
    • 在 Windows 资源管理器中打开所需的文件夹
    • 删除二进制日志
    • 应该有一个文件扩展名为.index. 也删除这个
  • 网络启动mysql

请不要擦除ib_logfile0ib_logfile1当您有二进制日志问题时。