【问题标题】:Cannot read the binlog filename and position via 'SHOW MASTER STATUS'无法通过“SHOW MASTER STATUS”读取 binlog 文件名和位置
【发布时间】:2022-04-13 08:13:49
【问题描述】:

我正在使用debezium 0.9 版制作一些 POC,并且我正在使用嵌入式 Debezium 配置运行一个独立的 docker 化 mysql 数据库。我遇到了这个问题:

Caused by: java.lang.IllegalStateException: Cannot read the binlog filename and position via 'SHOW MASTER STATUS'. Make sure your server is correctly configured

我怀疑这是因为mysql 的独立配置或嵌入式配置,但不知道如何进行和修复。有什么提示吗?

【问题讨论】:

  • 您的 MySQL 实例是否启用了二进制日志?默认情况下,它不会在新的 MySQL 5.x 实例上启用,除非您使用 log_bin 选项启用它。 MySQL 8.0 默认启用二进制日志。阅读dev.mysql.com/doc/refman/8.0/en/binary-log.htmldev.mysql.com/doc/refman/8.0/en/…
  • 不,不是,感谢您的提示和链接。
  • @Squake 你有解决这个问题的办法吗?我也在同一条船上尝试在本地尝试 debezium。
  • 是的,上面Bill提供的评论解决了问题,是关于binlog配置的。

标签: mysql docker-compose debezium


【解决方案1】:

正如比尔在上述评论中指出的那样 - Debezium 连接器使用二进制日志来完成其工作,因此需要启用它。

Debezium MySQL 需要启用服务器 binlog。在 RDS 的情况下 MySQL,log_bin 属性由 AWS 直接管理,设置为 默认关闭。当 Debezium MySQL 执行 SHOW MASTER STATUS 快照期间的命令,结果集为空,异常为 抛出:

https://debezium.io/documentation/faq/

您可以使用show master status 检查是否启用了 binlog,这就是禁用 debezium 时出现的错误。下面是一个启用binlog的例子,禁用时不会返回任何行。

mysql> show master status;
+------------------+----------+--------------+------------------+--------------------------------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set                          |
+------------------+----------+--------------+------------------+--------------------------------------------+
| mysql-bin.000001 |   170796 |              |                  | bf9ae151-baac-11ec-919f-42010a8a0014:1-599 |
+------------------+----------+--------------+------------------+--------------------------------------------+

对于 Google Cloud SQL MySQL 5.x,您需要启用时间点恢复 https://cloud.google.com/sql/docs/mysql/backup-recovery/pitr#enablingpitr

【讨论】:

    猜你喜欢
    • 2019-03-13
    • 1970-01-01
    • 2016-07-06
    • 2012-12-01
    • 2012-08-02
    • 2019-04-26
    • 1970-01-01
    • 2014-01-25
    • 2019-07-27
    相关资源
    最近更新 更多