问题标签 [binlog]
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.
mysql - MySQL 基于语句的复制:binlog 是否包含在 master 上执行的确切查询?
我们必须针对几天前发生的事件调试我们的 Web 应用程序,而我们所拥有的只有 MySQL 复制二进制日志(语句复制)。我们可以依赖那些与我们的 Web 应用程序在 master 上执行的 SQL 查询完全相同的查询吗?
我们的应用程序正在对一张表中的单行进行大量更新,但这些总是像UPDATE y SET x = x + 1 ...
or x = x - 2
、 never之类的查询UPDATE y SET x = 23 ...
,并且在 binlog 中我们发现了多种x = 23
更新。难道那些严格分配的UPDATE查询实际上是由复制机制创建的吗?
mysql - 一个事务里面的mysql做binlog保证表的更新顺序吗
二进制日志会按顺序记录a、b的更新,但是b的更新什么时候会比a先刷新到log呢?
如何复发?
mysql - MySql binlog 是否包含事务边界?
如果我正在阅读 MySql 二进制日志,我是否可以知道哪些语句出现在同一个事务中?
mysql - MySQL:以编程方式获取 binlog 文件列表
如何以编程方式获取特定 mysql 实例的二进制日志列表?IE。提供的相同信息
更新:5.6 版/AWS Aurora 首选。
mysql - MariaDB 的 Maxscale(BinLog Server) 可以用作不同 mysql 集群的 binlogs 收集器吗?
我已经读过 MariaDB 的 Maxscale( BinLog Server ) 可用于将 bin 日志从 MySQL 集群中继到单个BinLog 服务器,但是我想知道是否可以从不同的 MySQL 集群收集所有 bin 日志并持续存在一个BinLog 服务器,没有 mysql 从属服务器会从中读取。万一它可能如何处理不同MySQL集群中相同数据库名称等冲突?
apache-spark - 使用 Spark Streaming 从 Kafka 读取 binlog 数据时出现“ClassNotFoundException”
我想使用 Spark Streaming 从 kafka 中读取 binlog 数据,binlog 数据是使用canal收集的(使用 protobuf-2.4.1),我必须在 Spark Streaming 环境中使用 protobuf-2.5.0。现在我得到了以下异常
16/07/11 15:13:01 ERROR yarn.ApplicationMaster: User class threw exception: org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 0.0 failed 4 times, most recent failure: Lost task 0.3 in stage 0.0 : java.lang.RuntimeException: Unable to find proto buffer class
at com.google.protobuf.GeneratedMessageLite$SerializedForm.readResolve(GeneratedMessageLite.java:775)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java:1104)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1807)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
at com.data.binlog.BinlogEntryUtil.deserializeFromProtoBuf(BinlogEntryUtil.java:30)
at main.com.data.scala.Utils$.binlogDecode(Utils.scala:30)
at main.com.data.scala.IntegrateKafka$$anonfun$main$4.apply(IntegrateKafka.scala:37)
at main.com.data.scala.IntegrateKafka$$anonfun$main$4.apply(IntegrateKafka.scala:37)
at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
at main.com.data.scala.IntegrateKafka$$anonfun$main$5$$anonfun$apply$2$$anonfun$apply$3.apply(IntegrateKafka.scala:42)
at main.com.data.scala.IntegrateKafka$$anonfun$main$5$$anonfun$apply$2$$anonfun$apply$3.apply(IntegrateKafka.scala:42)
at org.apache.spark.Logging$class.logInfo(Logging.scala:59)
at main.com.data.scala.IntegrateKafka$.logInfo(IntegrateKafka.scala:16)
at main.com.data.scala.IntegrateKafka$$anonfun$main$5$$anonfun$apply$2.apply(IntegrateKafka.scala:42)
at main.com.data.scala.IntegrateKafka$$anonfun$main$5$$anonfun$apply$2.apply(IntegrateKafka.scala:39)
at org.apache.spark.rdd.RDD$$anonfun$foreachPartition$1$$anonfun$apply$29.apply(RDD.scala:898)
at org.apache.spark.rdd.RDD$$anonfun$foreachPartition$1$$anonfun$apply$29.apply(RDD.scala:898)
at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:1850)
at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:1850)
at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:66)
at org.apache.spark.scheduler.Task.run(Task.scala:88)
at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:214)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: com.alibaba.otter.canal.protocol.CanalEntry$Entry
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:191)
at com.google.protobuf.GeneratedMessageLite$SerializedForm.readResolve(GeneratedMessageLite.java:768)
... 29 more
代码 com.data.binlog.BinlogEntryUtil.deserializeFromProtoBuf 在这里
但我在我的罐子里找到了 CanalEntry$Entry.class
-rw---- 2.0 fat 14431 bl defN 16-Jul-11 15:11 com/alibaba/otter/canal/protocol/CanalEntry$Entry.class
我试图生成CanalEntry.java
and CanalPacket.java
using protoc-2.5.0
,但得到了同样的异常:java.lang.ClassNotFoundException: com.alibaba.otter.canal.protocol.CanalEntry$Entry
任何人都可以给我一些建议来阅读二进制日志数据(序列化protobuf-2.4.1
)protobuf-2.5.0
吗?谢谢
sphinx - 狮身人面像搜索了很长时间才能重新启动
我们已经使用 Sphinx (2.0.4) 大约 4 年了,但最近(比如一个月前),搜索开始每小时停机一次。
我们在夜间对所有数据进行了大更新,这不会造成任何问题。然后,我们在每小时开始时运行一次索引,这通常会向索引添加 20 到 30 行。
因此,cronjob 每小时运行一次:
结果曾经是这样的(searchd.log),但有 70000 行 binlog 重播(1560 个 binlog 文件)似乎是空的:
但它现在看起来像这样
注意 2 分钟的间隔。
cronjob 日志如下所示:
似乎 searchd 需要 2 到 3 分钟才能重新启动,与一个月前不同(并且没有任何改变)。退出代码 0 表示在 stopwait 或 searchd 启动过程中出错。
我似乎找不到导致创建这些二进制日志的原因,也不知道该去哪里找了。知道问题可能是什么吗?我没有查看哪些日志以了解有关该问题的更多信息?
谢谢
mysql - sync_binlog 参数
我正在浏览sync_binlog 参数的文档,发现sync_binlog 参数文档中存在差异。
这里的文档http://dev.mysql.com/doc/refman/5.6/en/replication-options-binary-log.html#sysvar_sync_binlog说:
值 1 是最安全的选择,因为在发生崩溃时,您最多会从二进制日志中丢失一个提交组。
这本质上意味着数据将被更新,但可能不在二进制日志中。
但是,在这里的二进制日志文档http://dev.mysql.com/doc/refman/5.6/en/binary-log.html说:
例如,如果您使用 InnoDB 表,并且 MySQL 服务器处理一个COMMIT
语句,它会按顺序将许多准备好的事务写入二进制日志,同步二进制日志,然后将该事务提交到 InnoDB。如果服务器在这两个操作之间崩溃,事务会在重启时被 InnoDB 回滚,但仍然存在于二进制日志中。
这实质上意味着事务首先写入 binlog,然后提交到 InnoDB,因此在发生崩溃的情况下,该行有可能在 binlog 中但在数据库中不存在。
我已经在 MySQL 论坛中提出了这个问题并等待回复,但如果使用过此参数的人能详细说明以下两种行为中哪一种是正确的,我将不胜感激?
mysql - MySQL - 根据时间戳查找 bin 日志位置
我正在使用shyiko连接器将 bin 日志更改从 mysql 集群流式传输到下游数据库系统。
一个集群 = MySQL master + Primary slave + Secondary slave
当监听的 MySQL 系统由于某种原因宕机时,机制是把 slave 提升为 master,然后像往常一样继续。但问题是bin日志文件和位置从故障机器到新提升的slave mysql是完全不同的。
在两台机器的提交日志之间,我能想到的唯一共同点是时间戳。即使 mysqlbinlog 实用程序也具有使用--start-datetime选项设置时间戳的功能。
有没有办法使用给定的时间戳找出 mysql bin 日志中的位置?因为我上面提到的库只能使用特定的位置而不是时间戳。如果没有,那么应该如何实现它。
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