【问题标题】:Delete from InnoDB table without having a binary log在没有二进制日志的情况下从 InnoDB 表中删除
【发布时间】:2014-07-17 10:52:58
【问题描述】:

我有一个 InnoDB 表,用于在呈现网页之前预处理一些数据。这是一张非常笨重的桌子。和;我不需要保留一些旧记录吧。

为了保持数据库的大小,我需要删除数据。但只是部分。 TRUNCATE 不起作用,但 DELETE。

数据库会用这个创建更大的日志文件吗? 有没有办法在不产生二进制日志的情况下删除数据?

【问题讨论】:

  • 有一种方法,但通常你不应该这样做以避免主从之间的不一致。二进制日志被轮换。如果没有检查变量 expire_log_days

标签: mysql innodb database-administration


【解决方案1】:

您可以使用名为--binlog-ignore-db 的mysql 选项,这样特定的数据库就不会记录在二进制日志中。所以在 binlog 中创建你的大表,忽略 db。

另外,您可以使用CREATE TEMPORARY TABLE 以便在会话关闭后删除临时表。

【讨论】:

  • 看起来第一个选项会更好;因为我必须永久保留数据;并仅按需删除。
  • @BimalPoudel 对。我只是为了您的方便建议了CREATE TEMPORARY TABLE。我不知道它会被永久需要。
猜你喜欢
  • 2014-08-04
  • 1970-01-01
  • 2011-01-22
  • 1970-01-01
  • 2014-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多