问题标签 [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 回答
404 浏览

mysql - MariaDB 的 Maxscale(BinLog Server) 可以用作不同 mysql 集群的 binlogs 收集器吗?

我已经读过 MariaDB 的 Maxscale( BinLog Server ) 可用于将 bin 日志从 MySQL 集群中继到单个BinLog 服务器,但是我想知道是否可以从不同的 MySQL 集群收集所有 bin 日志并持续存在一个BinLog 服务器,没有 mysql 从属服务器会从中读取。万一它可能如何处理不同MySQL集群中相同数据库名称等冲突?

0 投票
1 回答
7464 浏览

mysql - MySQL - max_binlog_cache_size 与 binlog_cache_size

在 MySQL 的官方文档中,对这些变量的描述存在很多混淆。

根据它,max_binlog_cache_size意味着,

如果一个事务需要超过这么多字节的内存,服务器会生成一个多语句事务需要超过 'max_binlog_cache_size' 字节的存储错误。

max_binlog_cache_size 仅设置事务缓存的大小

binlog_cache_size的意思是,

在事务期间保存二进制日志更改的缓存大小。

binlog_cache_size 仅设置事务缓存的大小

在阅读文档时,我观察到这两者之间没有区别。文档中还有一些非常令人困惑的东西,例如,

在 MySQL 5.7 中,max_binlog_cache_size 对会话的可见性与 binlog_cache_size 系统变量的可见性相匹配;换句话说,更改其值只会影响更改值后启动的新会话。

当我查询服务器变量时,它同时显示。我有一个MySQL 5.6和一个MySQL 5.7。我只需要知道,我应该为哪个服务器考虑和配置哪个变量。

MySQL 5.6binlog_cache_sizeMySQL 5.7max_binlog_cache_size ??

还有与这些相关的额外的混淆变量max_binlog_stmt_cache_sizebinlog_stmt_cache_size

0 投票
0 回答
321 浏览

mysql - MySQL复制因binlog而不按时间顺序损坏

看一段二进制日志的摘录,可以看出这2条语句是按时间顺序乱写日志的:

无法弄清楚如何在代码块内突出显示,但重要的部分是:

first statement - end_log_pos 64812204, SET TIMESTAMP=1467153166

second statement - end_log_pos 64895850, SET TIMESTAMP=1467153156

所以这导致主从不同步,因为主最后运行第一个语句,而从最后运行第二个语句。

谁能帮我找出原因?我注意到所有具有 thread_id 157062 的语句都首先执行,但在具有 thread_id 157061 的语句之后写入日志。

谢谢你的帮助。

0 投票
2 回答
1432 浏览

mysql - 使用 mysqlbinlog 从 mysql 数据库表中的特定日期恢复数据

我有一个名为“radacct”的 mysql 数据库表,其中包含从 2016 年 1 月 1 日(一月)到 2016 年 6 月 29 日(六月)的数据。由于某种原因,从 2016 年 6 月 20 日到 2016 年 6 月 25 日的数据丢失了。我有bin-log enabled所以我用“ mysqlbinlog”将bin文件导出到.sql文件,那些sql文件包含1月、2月、3月的旧数据以及2016-06-20到2016-06-25丢失的数据. 如何在不丢失当前数据的情况下恢复丢失的数据。

我正在考虑选择.sql包含丢失数据的文件(我使用日期字段来识别丢失的数据)并替换INSERT INTOREPLACE INTO.

这是sql文件的样子

0 投票
1 回答
314 浏览

mysql - 来自 MySQL bin 日志的并行处理

我们目前正在将 bin 日志从 Mysql 流式传输到其他数据库。

我们面临的问题是事件的顺序,我们无法进行并行处理,即写入bin log的事件是按时间排序的,我们不能轻易在下游数据库中进行并行查询插入,并且在单个连接上插入非常慢,因为下游数据库是柱状数据库。

无论如何,我们是否可以以一种可以有效并行化辅助数据库中的持久性的方式读取事件。

0 投票
2 回答
840 浏览

mysql - 通过 Kafka 与 mysql 事件进行复制

我需要维护一个外部数据库的副本(包括一些额外的派生数据)。使用相同的硬件集,以下哪一种解决方案可以为我提供更快的一致性(低延迟)和高可用性?假设对外部数据库的更新以每秒 1000 条记录发生。

a) 使用 mysql 5.7 复制(二进制日志文件机制)创建外部数据库的本地 mysql 副本。

或者

b) 从外部系统获取实时 Kafka 事件,执行 HTTP GET 以获取更新的对象详细信息并使用这些详细信息来维护本地 mysql 副本。

0 投票
1 回答
1767 浏览

mysql - MySQL - 根据时间戳查找 bin 日志位置

我正在使用shyiko连接器将 bin 日志更改从 mysql 集群流式传输到下游数据库系统。

一个集群 = MySQL master + Primary slave + Secondary slave

当监听的 MySQL 系统由于某种原因宕机时,机制是把 slave 提升为 master,然后像往常一样继续。但问题是bin日志文件和位置从故障机器到新提升的slave mysql是完全不同的。

在两台机器的提交日志之间,我能想到的唯一共同点是时间戳。即使 mysqlbinlog 实用程序也具有使用--start-datetime选项设置时间戳的功能。

有没有办法使用给定的时间戳找出 mysql bin 日志中的位置?因为我上面提到的库只能使用特定的位置而不是时间戳。如果没有,那么应该如何实现它。

0 投票
1 回答
1337 浏览

mysql - MySQL 从属复制失败:如何识别导致其失败的 SQL

我在 AWS RDS 上运行 MySQL。由于以下错误,从属复制卡住了。它说它无法在从服务器的表中找到记录......有没有办法知道哪条记录?或者失败的SQL!

读取副本复制错误 - SQLError:1032,原因:无法在表 customers.visitor 上执行 Update_rows_v1 事件;在“访客”中找不到记录,错误代码:1032;处理程序错误 HA_ERR_END_OF_FILE;事件的主日志 mysql-bin-changelog.206572, end_log_pos 12627388

0 投票
1 回答
1810 浏览

mysql - 从许多 mysql bin 日志文件中恢复数据库

我有一些 MYSQL 二进制日志文件以及二进制索引文件(https://dev.mysql.com/doc/refman/5.6/en/point-in-time-recovery.html)。

文件如下所示:log-bin.000001, log-bin.000002, log-bin.000003.

我也有一个log-bin.index看起来像这样的文件:

根据文档,使用这些日志文件恢复我的数据库的方法如下:

这在恢复少量文件时并没有那么糟糕,但在从许多文件(例如 1000 个日志文件)中恢复时会带来很大的不便。

如何在不明确说明每个文件的情况下恢复我的数据库?

0 投票
1 回答
542 浏览

mysql - 为什么 mysqlbinlog 显示 [replace into] 行事件如下

据我们所知

REPLACE 的工作方式与 INSERT 完全相同,只是如果表中的旧行与 PRIMARY KEY 或 UNIQUE 索引的新行具有相同的值,则在插入新行之前删除旧行

当我使用一个没有删除权限的帐户执行替换到时,它让我想起了删除权限。

但是,当我使用 mysqlbinlog 查看 binlog 中的内容时,我感到很困惑。

一个例子如下:

binlog_format=行

情况1:

mysqlbinlog 显示如下:

mysqlbinlog 不显示 delete 和 insert 。

案例 2:auto_increment=17

mysqlbinlog 显示如下:

mysqlbinlog 不显示 delete 和 insert 。

案例3:auto_increment=18

mysqlbinlog 显示如下:

mysqlbinlog 显示 delete 和 insert 。

如此说来,似乎主键值相同时,binlog使用delete+insert。如果主键值不同,则binlog使用更新。

为什么?