MySQL二进制日志-跳过表


9

有没有办法跳过二进制日志中的特定表?

我已将二进制日志配置为夜间备份之间的增量备份策略。但是,我们有一个巨大的参考表,我们将从批处理过程中每晚进行更新(70GB表)。该表仅被读取,并且每晚使用进行更新mysqlimport

在此仅供参考的表的更新过程中,二进制日志会导致相当严重的延迟(尤其是当我执行完整的70GB更新时)。基本上必须做两次70GB。y

参考表当前正在使用MyISAM(我选择了InnoDB尝试加载它,因此尝试使用MyISAM)。


该数据库服务器是独立数据库服务器吗?该数据库服务器是主服务器还是从服务器?
RolandoMySQLDBA

Answers:


9

没有mysql选项可以忽略二进制日志中的表。

如果您可以将表移动到单独的数据库,则可以使用binlog-ignore-db选项,但这具有其gotchas。您应该了解MySQL如何评估复制规则

如果您可以编写一个包装脚本而不是mysqlimport来加载数据(该联机帮助页说这是LOAD DATA INFILE的命令行界面),并且您要导入数据的用户可以具有SUPER特权,则可以使用sql_log_bin会话变量喜欢:

    SET @@session.sql_log_bin=0;
    LOAD DATA INFILE 'file_name' 
      -- other LOAD DATA INFILE options ;
    SET @@session.sql_log_bin=1;

这将禁用当前会话的二进制日志记录,加载数据并再次启用二进制日志记录。


在加载过程中禁用二进制日志记录,这真是我想要的,这是一个非常可行的解决方案!
戴维·帕克斯

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.