有没有办法跳过二进制日志中的特定表?
我已将二进制日志配置为每晚备份之间的增量备份策略。但是我们有一个巨大的参考表,我们将每晚从批处理(70GB 表)中更新。此表仅供读取,并且每晚使用mysqlimport.
在这个仅供参考的表的更新过程中,二进制日志导致了相当严重的延迟(尤其是当我进行完整的 70GB 更新时)。基本上它必须做两次 70GB。糟糕。
参考表当前正在使用 MyISAM(我阻止 InnoDB 尝试加载它,因此尝试使用 MyISAM)。
没有 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;
Run Code Online (Sandbox Code Playgroud)
这将禁用当前会话的二进制日志记录,加载数据并再次启用二进制日志记录。
| 归档时间: |
|
| 查看次数: |
11118 次 |
| 最近记录: |