问题标签 [mysqlbinlog]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
987 浏览

java - Apache Kafka 模式注册表抛出 RestClientException

我有两个几乎相似的 kafka 应用程序。他们都收听 binlog 以了解两个表的更改。我的问题是其中一个工作正常,但是当尝试启动第二个时,我收到以下异常。

错误指向的架构文件具有以下内容:

另一个正在运行的应用程序具有完全相同的 avro 文件,但表(付款)的名称被替换。两个应用程序都从同一台服务器运行并连接到同一个 Kafka 集群。我使用 maven 插件来创建基于 avro 文件的 java 类。类 Key.class 成功创建。

这些是我的应用程序的两个重要类:

主班

流类

0 投票
2 回答
1758 浏览

mongodb - MongoDB 更改流:我可以在更新/删除之前获得价值吗?

更新操作上的更改流事件仅返回更改到的文档,与 oplog 相同。我可以在更新之前获取文档(或一些更新的值)吗?

MySQL 基于行的 binlog 可以使用完整的 binlog_row_image 来做到这一点。

0 投票
0 回答
71 浏览

mysql - Mysql 基于行的二进制日志记录在某些版本的 mysql 中表现不同(行分组)

在某些版本的 mysql 中对行更改进行分组时,Mysql 基于行的二进制日志记录似乎具有不同的行为。

假设以下语句更新了三行:

UPDATE table_name SET a=1 WHERE id IN (1, 2, 3);

在 mysql5.7.21中:二进制日志只接收一个包含 3 个寄存器更改的日志。(这是我想要的行为)

但是,在 mysql5.7.11和 mysql中测试时5.7.26,相同的语句会产生三个单独的日志。它们中的每一个都包含每个更改的行。

我检查了系统变量,至少与二进制日志相关的变量似乎完全相同。

我们检查了--binlog-row-event-max-size可能导致问题的启动变量。因为我们表中的行可能大于默认的 8KB。但是,我们无法设置此变量。因为我们在 Amazon RDS 中工作。(我们该怎么做?)

是否有其他变量可能导致这种行为?

0 投票
2 回答
260 浏览

mysql - 如果同步到 Redshift/BigQuery,来自 MySQL 数据库的 bin 日志复制是否会保持唯一的约束?

我们希望将数据仓库从 MySQL 数据库迁移到 Redshift 或 BigQuery。

虽然针对 OLAP 操作进行了优化,但这些基于列的数据库的缺点之一是它们不强制执行唯一约束。

因此,您的表格中存在重复的订单/产品并非不可能。我们工作的行业是零售业,我们使用标准的 Kimball 事实和维度(星型模式)数据库设计。

提出的一种潜在解决方案是在 MySQL 中构建数据库,并使用第三方复制工具将数据同步到 Redshift/BigQuery。这样,我们将在原始 MySQL 数据库中强制执行键约束,并且我们将仅将 Redshift/BigQuery 用于读取查询。

但是,在 MySQL 中强制执行约束并设置到 Redshift/BigQuery 的 bin 日志复制将保持数据与 MySQL 中的数据相同,从而强制执行唯一约束?

0 投票
0 回答
533 浏览

cdc - 使用debezium时kafka中的重复消息

我阅读了 debezium 的内部结构,但如果在更新 bin 日志中的偏移量之前连接器出现故障,它也可以向 kafka 发送重复的消息。在这种情况下,消费者需要是幂等的。有什么办法可以避免在 kafka 中出现重复消息?

0 投票
1 回答
373 浏览

mysql - 警告:选项 --database 已被使用

运行 mysqlbinlog 将二进制日志从一台服务器加载到另一台服务器。

不断收到消息:

警告:已使用选项 --database。它可以过滤部分事务,但无论如何都会包含 GTID。

嗯——好吗?所以??

好吧,也许这是一个愚蠢的问题,但是我应该如何区分我想要的数据库的“GTID”和我不想要的数据库的“GTID”?换句话说,如何在关闭这个烦人的警告的同时指定特定数据库的事务?

尝试添加“--include-gtids”参数,但我认为它需要一个 GTID 列表。我没有 GTID 列表。我有一个数据库。为什么这么复杂?

0 投票
0 回答
97 浏览

javascript - 如何在特定的 binlog 位置重启?

我正在使用 nodejs mysql-events 来解析 mysql 数据库更新。为避免每次重新启动脚本时解析所有日志,我想使用binlogNamenextPosition文档中读取

filename string 开始从此 binlog 文件中读取事件。如果与位置一起指定,将优先于 startAtEnd。

position integer 从这个位置开始读取事件。必须包含在文件名中。

下面的代码就像一个魅力:

值是有效的,并从 vscode 调试器复制。

一旦我更改了 mysqlInstance 设置,它就会忽略它并从第一个日志开始。

我应该指定其他内容吗?

0 投票
0 回答
1523 浏览

mysql - 如何过滤“SHOW BINLOG EVENTS”的输出

不讨论主/从复制,我只想自定义在查询 MySQL 二进制日志时看到的条目SHOW BINLOG EVENTS。已经尝试在 and 中找到相同的信息,information_schema以便performance_schema我可以SELECT在合适的桌子上,但我无法找到它。

文档中的可用过滤器似乎不允许直接这样做。

我想要的是这样的:

有没有办法做到这一点?


我当前使用该mysqlbinlog实用程序的解决方法(在MySQL Container中运行):

0 投票
1 回答
46 浏览

mysql - MySQL 数据目录在 docker 镜像中使用 -v 标志保持默认

我正在尝试使用 docker 映像启动 MySQL,我想查看 binlog 文件,但是在/var/lib/mysql. 从一些 stackoverflow 和 Google 读取来看,潜在的原因可能是 mysql 没有写入 /var/lib/mysql 的权限。
因此,我尝试在使用命令启动 docker 时使用 -v 标志提供不同的路径docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw -v /home/username/mysql debezium/example-mysql:1.1
但是,即使在此之后,客户端中的 datadir 变量仍然是 /var/lib/mysql。有人可以帮助我吗?
用于docker run -it --rm --name mysqlterm --link mysql --rm mysql:5.7 sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"启动 MySQL 客户端。

0 投票
1 回答
128 浏览

mysql - binlog 未在 mysqlcluster 中记录 DML 语句

我创建了一个 MySQL NDB Cluster,其中包含 2 个数据节点、1 个 mgm 节点和 1 个 mysqld 用于测试。我还为 NDB 到 INNODB 复制创建了一个从属。我的 binlog 没有记录 DML 语句,因此我无法为 NDB Cluster 进行时间点恢复,并且 DML 语句也没有在从站上复制,只创建了没有行条目的表。

master 上的 ndb_binlog_index 表是空的,没有条目。

下面是 ndb-cluster mysqld 的 my.cnf 文件。

版本信息

如图所示的 binlog 变量

下面是显示 binlog 中没有条目的测试。

我还用 mysqlbinlog 检查了 binlog,但它也没有显示任何插入条目。

请帮助我自过去 2 天以来一直坚持这一点。

谢谢。