问题标签 [binary-log]

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 投票
2 回答
3053 浏览

mysql - 用于回退方案的 MySQL 复制

当我有两台 mysql 服务器有不同的作业(持有不同的数据库)但希望能够在另一台出现故障时使用其中一个来滑入,你会建议我如何让它们上的数据保持相等“关闭实时”?

显然,不可能每 x 分钟进行一次完整的数据库转储。

我已经阅读了Binary Log,这是我需要走的路吗?这不会大大降低备用服务器的速度吗?有没有办法不在二进制日志中包含一些表 - 数据已经改变并不重要?

0 投票
4 回答
2270 浏览

mysql - 终极 MySQL 遗留数据库噩梦

表 1:包括厨房水槽在内的所有物品。日期格式错误(最后一年,因此您无法对该列进行排序),数字存储为 VARCHAR,“街道”列中的完整地址,名字列中的名字和姓氏,姓氏列中的城市,不完整的地址,行根据多年来发生变化的一组规则,重复记录,不完整记录,垃圾记录...通过将数据从一个字段移动到另一个字段来更新前面的行...您可以命名它...哦,当然不是 TIMESTAMP 或 PRIMARY KEY 列在眼前。

表 2:打开这个婴儿后,任何正常化的希望都破灭了。我们在表一中的每个条目和行的更新都有一行。所以重复像没有明天(价值800MB)和像Phone1 Phone2 Phone3 Phone4 ... Phone15这样的列(它们不被称为电话。我用这个来说明)外键是......好吧猜猜。根据表 1 中的行中的数据类型,有 3 个候选项

表 3:它会变得更糟吗?哦是的。“外键是破折号、点、数字和字母的 VARCHAR 列组合!如果不提供匹配项(通常不提供匹配项),则应使用第二列类似的产品代码。具有名称的列与其中的数据没有相关性,以及强制性的 Phone1 Phone2 Phone3 Phone4...Phone15。有从 Table1 复制的列,而不是 TIMESTAMP 或 PRIMARY KEY 列。

表 4:被描述为正在进行中的工作,随时可能发生变化。它与其他人本质上是相似的。

在接近 1m 行时,这是一个大混乱。幸运的是,这不是我的大麻烦。不幸的是,我必须从中提取每个“客户”的复合记录。

最初,我设计了 Table1 的四步翻译,添加了 PRIMARY KEY 并将所有日期转换为可排序格式。然后再执行几个查询步骤,这些查询返回过滤后的数据,直到我有 Table1 到可以使用它从其他表中提取以形成合成的地​​方。经过数周的工作,我使用一些技巧将其归结为一个步骤。所以现在我可以将我的应用程序指向混乱并拉出一个漂亮干净的复合数据表。幸运的是,我只需要其中一个电话号码就可以了,因此标准化我的桌子不是问题。

然而,这是真正的任务开始的地方,因为每天都有数百名员工以您不想想象的方式添加/更新/删除这个数据库,而且每天晚上我都必须检索新行。

由于可以更改任何表中的现有行,并且由于没有 TIMESTAMP ON UPDATE 列,因此我将不得不求助于日志来了解发生了什么。当然,这假设有一个二进制日志,但实际上没有!

引入这个概念就像铅气球一样下降。我还不如告诉他们,他们的孩子将不得不接受实验性手术。它们并不完全是高科技……万一你没有聚集……

情况有点微妙,因为他们有一些我公司急需的有价值的信息。我被一家大公司的高级管理层(你知道他们是怎么做的)派来“让它发生”。

除了用另一个应用程序解析 bin 日志文件,我想不出任何其他方法来处理夜间更新,以弄清楚他们在白天对该数据库做了什么,然后相应地组合我的表。我真的只需要看看他们的 table1 就可以知道如何处理我的桌子。其他表只提供字段来清除记录。(使用 MASTER SLAVE 将无济于事,因为我会复制一份混乱。)

另一种方法是为其 table1 的每一行创建一个唯一的哈希并构建一个哈希表。然后我会每晚检查整个数据库以查看哈希是否匹配。如果他们不这样做,那么我将读取该记录并检查它是否存在于我的数据库中,如果存在,那么我将在我的数据库中更新它,如果它不存在,那么它是一条新记录,我将插入它。这很难看而且速度不快,但是解析二进制日志文件也不是很漂亮。

我写这篇文章是为了帮助弄清楚这个问题。经常将其告诉其他人有助于澄清问题,从而使解决方案更加明显。在这种情况下,我只是更头疼!

您的想法将不胜感激。

0 投票
3 回答
415 浏览

mysql - 基于 MySQL 查询的复制

我希望通过传递在 InnoDB MySQL 实例上执行的所有查询来对 MySQL Cluster 实例进行路测。目前我不太担心Cluster上的数据完整性,本次研究的重点是Cluster的稳定性和速度。

我不希望使用基于语句的二进制日志复制,因为纯粹的 SELECT 查询不会传递给集群,因此会给出不完整的性能视图。

在 MySQL 实例之间实现基于通用查询日志的复制的最佳方法是什么?

非常感谢,

0 投票
2 回答
49768 浏览

mysql - 如何在 MYSQL 中运行查询而不将其写入二进制日志

我想将一个大文件导入 MySQL。但是,我不希望它写入二进制日志,因为导入会花费很长时间,并且会导致 slave 远远落后。事实上,我宁愿在奴隶上单独运行它,因为它在系统上会容易得多。有问题的表是一个新表,因此我不必担心它会不同步,因为主服务器和所有从服务器最终将拥有相同的数据,因为它们都会导入相同的文件最终。我也不想更改任何 replicate-ignore-* 或 binlog_ignore-* 选项,因为它们需要重新启动相关服务器。有没有一种方法可以运行单个查询而不将其写入二进制日志?

我已经知道答案了,但是我在网上找不到很容易,所以我让某人发布答案以获得一些代表点。如果没有小白的答案,我会发布我找到的答案。

0 投票
4 回答
31801 浏览

mysql - 删除旋转的 MySQL 二进制日志是否安全?

我有一个启用二进制日志记录的 MySQL 服务器。一天日志文件被“轮换”一次,即 MySQL 似乎停止写入它并创建新的日志文件。例如,我目前在 /var/lib/mysql 中有这些文件

并且 mybinlog.000006 正在增长。

我可以简单地将 mybinlog.000004 和 mybinlog.000005 压缩并转移到另一台服务器,还是我需要先做其他事情?

mybinlog.index 中存储了哪些信息?只有关于最新二进制日志的信息?

更新:我知道我可以使用更新 mybinlog.index 文件的 PURGE BINARY LOGS 删除日志。但是,我需要在删除日志之前将它们传输到另一台计算机(我测试备份在另一台计算机上是否有效)。为了减少传输大小,我希望对文件进行 bzip2。如果日志文件不再“存在”,PURGE BINARY LOGS 会做什么?

0 投票
3 回答
10321 浏览

mysql - 如何在mysql中排除某些表被binlog?

我需要从二进制日志中排除一些文件,以避免在复制缓存表时浪费我的网络带宽和时间。
我知道有

我怎样才能为特定的表(缓存表)这样做?
有没有类似的东西

** 编辑 **
我正在使用 drupal,并且在 drupal 中使用 boost 缓存存在功能缺陷。binlog 文件呈指数增长。(有时大约 100MB/分钟!!)避免这种情况的唯一方法是停止记录这些表谢谢!!

0 投票
1 回答
1068 浏览

mysql - 使用mysqlbinlog恢复mysql数据

我不小心删除了一个模式而没有备份它。

现在我想使用mysqlbinlog实用程序来执行恢复。(看来mysqlbinlog是个好工具)。它需要那些二进制日志文件来执行恢复。

现在我有以下困惑:

  1. 找不到那些二进制日志文件。那么它们在哪里呢?
  2. 如果未记录操作或未启用二进制日志记录,如何启用它。我已经阅读了 mysql 文档,它说它们是默认启用的。但我找不到那些文件,虽然......
  3. 是否可以通过/var/log/mysqld.log文件恢复数据和架构
0 投票
2 回答
1712 浏览

mysql - MySQL 二进制日志是否支持记录 Uid?

我想知道是否可以使用 MySQL 二进制日志来记录对数据库进行修改的用户的 Uid(用户名)。

这对于审计目的是必要的。

那可能吗?

0 投票
1 回答
1459 浏览

mysql - MySQL二进制日志时间戳非顺序?

我确实有一个来自 MySQL 5.5.20(基于行)的二进制日志转储。现在我的从站停止了,因为 UPDATE 事件在 INSERT 事件之前:

如您所见,第二个时间戳在二进制日志的后面(1327402566 <-> 1327402568)。@1 是主键。在这两种情况下都是 350049。但首先我希望 INSERT 语句,而不是 UPDATE ...

这怎么可能?我怎么可能解决这个问题?

谢谢

0 投票
1 回答
224 浏览

mysql - MySQL - 默认情况下将二进制日志保存到表中

我正在使用 MySQL 社区服务器 5.1。我记得不久前我听说可以配置 MySQL 数据库以将二进制日志信息保存到 MySQL 表中。我做了一个简短的搜索,但这次没有找到我要找的东西。我想在某个数据库表中查看二进制日志中的所有信息。有人对这个有了解吗?