如何在MySQL中运行查询而不将其写入二进制日志
-
23-10-2019 - |
题
我想将大文件的导入到MySQL中。但是,我不希望将其写入二进制日志,因为进口将需要很长时间,并导致奴隶落后。事实之后,我宁愿在奴隶上单独运行它,因为它在系统上会容易得多。所讨论的表是一个新表,因此我真的不必担心它摆脱同步,因为主人和所有奴隶最终都会具有相同的数据,因为它们都会全部导入相同的文件最终。我也不想更改任何重复词 - ignore-*或binlog_ignore-*选项,因为它们需要重新启动相关的服务器。是否有AA可以在不将单个查询写入二进制日志的情况下运行单个查询的方法?
我已经知道答案了,但是我在网上找不到很容易找到它,所以我让某人发布答案以获取一些代表点。如果没有一个白色的答案,我会发布我发现的答案。
解决方案
您可以使用 SQL-Log-bin 会话变量以关闭当前会话的日志记录。只需输入:
SET sql_log_bin = 0;
并且您当前会话中的所有查询都不会发送到二进制日志。如果要重新打开二进制登录,请运行:
SET sql_log_bin = 1;
这仅适用于您参加的当前运行会话。所有其他连接的所有其他查询仍将继续记录。另外,您必须拥有超级特权才能起作用。
其他提示
如果您想从CLI中执行此操作,请尝试一下,它对我有用:
$ mysqldump old_DB | mysql --init-command="SET SQL_LOG_BIN = 0;" new_DB
可能在较新的MySQL版本中添加了“ init-command”参数。
不隶属于 StackOverflow