问题标签 [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 投票
1 回答
142 浏览

mysql - mysql Binlog中的查询已更改-加载数据查询

我在主服务器中运行了以下 mysql 查询

但这已在 binlog 中更改为

我在查询中提到了离线数据库,但它已更改为 binlog 中的默认数据库。

这会在复制中产生问题,因为默认数据库没有此表。

0 投票
0 回答
232 浏览

mysql - MySQL 从现有数据库克隆聚合数据库

我们有一个基于 InnoDB 的 MySQL 数据库。我们正在寻求为这些数据建立一个分析系统。我们正在考虑创建一个克隆数据库,对数据进行非规范化以防止连接,并使用 MyIsam 进行更快的查询。该第二个数据库还将有助于避免在将要写入数据的主数据库上的额外负载。除此之外,我们还创建了一些额外的表格来存储汇总数字以避免重新计算。

我想知道如何每天同步这些表一次以保持更新。它看起来类似于使用二进制日志的 MySQL 的主从配置。但在我们的例子中,第二个数据库并不是一个精确的从属数据库。是否有任何可靠的开源工具或任何其他想法可以用来编写“更新机制”?

提前致谢。

0 投票
1 回答
14521 浏览

mysql - MySQL 复制失败并出现错误“无法解析中继日志事件条目”。

我已经在谷歌彻底搜索了一个明确的解决方案或一组步骤来解决这个问题,但似乎没有很多高质量的结果,我也没有找到堆栈溢出的问题。我们正在尝试使用一个从属设备来设置 MySQL 复制。从站似乎复制正常,然后出现以下错误:

无法解析中继日志事件条目。可能的原因是:主服务器的二进制日志已损坏(您可以通过在二进制日志上运行“mysqlbinlog”来检查),从服务器的中继日志已损坏(您可以通过在中继日志上运行“mysqlbinlog”来检查),a网络问题,或者主从的 MySQL 代码中的错误。如果你想检查主服务器的二进制日志或从服务器的中继日志,你可以通过在这个从服务器上发出“SHOW SLAVE STATUS”来知道它们的名字。

为了使大量在搜索中不可避免地偶然发现这个问题的人受益,如果回复的人概述了可能出现的问题以及解决此问题应采取的步骤,这将是有帮助的,但我会还在下面提供与我的特殊情况相关的更多详细信息,希望有人可以帮助我解决它。


我们导入到从属服务器以启动它的转储是在主服务器上使用以下命令创建的:

执行此备份的脚本还会记录 master 的当前二进制日志位置。然后我们采取以下步骤在从属设备上开始复制:

经过大约一天的复制工作正常后,它在凌晨 3:43 再次失败。MySQL错误日志中出现的第一件事就是上面的错误。然后另一个通用错误出现在相同的时间戳之后:

有关更多日志记录信息,我设置了一个批处理脚本来每小时运行“SHOW SLAVE STATUS”和“SHOW FULL PROCESSLIST”。以下是失败前后的结果:

我尝试按照错误中的说明在从属的中继日志上运行 mysqlbinlog,之前使用 start_position 数千条语句,在故障点之后使用 stop_position 数千条语句,并将输出重定向到文本文件。我在命令行或日志文件中没有看到任何损坏错误。这是日志文件在故障点周围所说的内容:

有趣的是,它当时正在记录一个无效的浮点操作,但我不确定这会如何导致复制在该位置中断。我在上面的 SHOW SLAVE STATUS 中找到的 master 的二进制日志上运行了 mysqlbinlog,并且在命令行上没有看到任何错误(但没有机会打开生成的 100mb 日志文件,因为我不想陷入困境关闭生产服务器)。

所以现在我不知道还有什么可以尝试的。我基本上只是在寻找关于可能出了什么问题的任何见解或关于下一步采取什么步骤的任何建议。谢谢!

0 投票
1 回答
1210 浏览

mysql - mysql bin 日志模式自动递增

目前我们有一个数据库,其中 STATEMENT bin 日志格式可以正常工作。
现在我们正在添加一个具有自动增量值的新表。
此自动增量列对业务逻辑没有用处。
我们已将此添加为我们的主键的一部分。
这里 offer_expiry_time 是主键的第一部分,因为我们将所有查询都作为基于到期时间范围的范围查询。

假设我们的表格看起来像这样:

现在我们担心的是:

  1. STATEMENT 级别的 bin 日志格式是否适用于此表?(即使我们对跨复制的自动增量列的不同值也很好)。基本上 STATEMENT 级别会起作用吗?

  2. 如果它有效,那么在启动失败的数据库机器时可能会出现什么问题?

  3. 如果 STATEMENT 模式不起作用,那么我们可以单独为该表使用特定(MIXED)复制模式吗?同一个数据库中的其余表可以有STATEMENT模式吗?

  4. 这可能是一个非常愚蠢的问题,因为我不知道 mysql 如何处理复制。是否可以根据查询类型指定复制模式?(对于插入查询执行 ROW 级复制,对于 DELETE 查询执行 STATEMENT 级复制)

    问题 4 是因为我们确实基于基于范围的删除来执行删除,因此如果我们可以对删除查询进行 STATEMENT 复制,将会有更好的性能。

由于我们进行批量插入,因此 STATEMENT 级别的复制对我们有很大帮助。
是否可以让具有自动增量列的表具有 STATEMENT 级别的 bin 日志格式?

[已编辑] 此外,我们还有事务隔离级别的另一个问题。
错误:“无法获取错误二进制日志记录。消息:InnoDB 中的事务级别'REA D-UNCOMMITTED'对于二进制日志模式'STATEMENT'是不安全的”

有什么建议会很有帮助吗?

0 投票
0 回答
105 浏览

enums - 恢复枚举字段值

我从 mysql 表的枚举字段中更改了可能的值。我认为随着这种变化,来自变化字段的一些值丢失了。是否有可能以某种方式恢复这些值?我有一个用于数据库更改的 mysqlbinlog。

谢谢

0 投票
1 回答
1609 浏览

mysql - MySQL Cluster:如何解码/解释二进制日志?

我徒劳地试图从我的 4 节点 MySQL 集群的二进制日志中获取一些有用的信息。作为测试,我在上午 11:01 在主服务器上手动执行了一条 UPDATE 语句(它确实成功地更改了表中的一些数据)。不幸的是,我无法让 mysqlbinlog 向我展示执行的语句。

我尝试了 --verbose 选项、--hexdump 选项和 --base64-output=DECODE-ROWS --verbose。不管我做什么,实际的语句似乎仍然被编码(或者当应该有更新时有一个 INSERT INTO)。

下面是我上午 11:01 测试的相关输出,指定了 --base64-output=DECODE-ROWS --verbose 选项。为什么找不到我的 UPDATE 语句?而且,如果数据库将其优化为 INSERT INTO,为什么我至少看不到表名和原始语句的其他部分?

谢谢,罗伯

0 投票
1 回答
379 浏览

replication - 如何查看基于行的二进制日志的纯文本格式

我有启用了基于行的二进制日志记录的服务器。最近在调试一个问题时,我试图从特定位置查看二进制日志的内容,但它给了我不可读的输出。

以下是可能需要的详细信息。

提前致谢

0 投票
1 回答
98 浏览

mysql - 在mysql中创建视图时,是否可以使用日期功能?

我创建视图,声明如下:</p>

可以成功创建视图,但是我的binlog被破坏了。声明如下:</p>

mysqlbinlog mysql-bin.000167

错误:Log_event::read_log_event() 中的错误:“读取错误”,data_len:66129,event_type:32

如果我删除 FROM_UNIXTIME( update_date,'%Y%m%d'),则上述语句不会发生

我的mysql版本是5.1.30

0 投票
1 回答
182 浏览

mysql - 无法链接到 C++ 中已编译的 /.so 源库

我是 C++ 新手。我正在尝试在 C++ 程序中使用 MySQL 复制从 MySQL 读取二进制日志。

.cpp从 Internet 获得了头文件和源文件。现在我已经将头文件放在文件/usr/include/mysql夹中,并将路径设置CPLUS_INCLUDE_PATH为指向它。它能够使用头文件。此外,我已将.cpp文件放在文件/usr/lib64/mysql夹中,并编译了所有文件以在同一目录中.cpp创建文件。.o

g++但是,当我使用( )编译我的程序g++ -I/usr/include/mysql -L/usr/lib64/mysql/ -g bin_log.cpp -o bin_log.out时,对于我试图调用的所有方法,我都会收到未定义的对错误的引用。见下文:

我也尝试过创建一个 .so 文件并在编译时链接它,但它不起作用。(我用过g++ -I/usr/include/mysql -L/usr/lib64/mysql/binlogapi.so -g bin_log.cpp -o bin_log.out)。

我尝试使用 构建库cmake,但没有运气。有人能猜出这可能是什么问题吗?我想我缺少一些基本的东西。

0 投票
1 回答
36 浏览

mysqlbinlog - 需要有关二进制日志的建议吗?

我们已经设置了主从配置,我们正在存储 30 天的 bin 日志。它在服务器上占用了更多空间,我们需要找到一些更好的方法来处理它。

我们正在考虑仅存储 7 天的日志。可以吗。