Kib*_*bee 32 mysql import replication binary-log
我想在MySQL中运行一个大文件的导入.但是,我不希望它写入二进制日志,因为导入将花费很长时间,并导致奴隶远远落后.事实上,我宁愿在奴隶上单独运行它,因为它在系统上会更容易.有问题的表是一个新表,因此我不必担心它会失去同步,因为主设备和所有从设备最终会有相同的数据,因为它们都将导入相同的文件最终.我也不想更改任何replicate-ignore-*或binlog_ignore-*选项,因为它们需要重新启动有问题的服务器.有没有办法运行单个查询而不将其写入二进制日志?
我已经知道了答案,但我在网上找不到它,所以我让某人发布答案以获得一些代表点.如果没有一点白色的答案,我会发布我找到的答案.
Kib*_*bee 54
您可以使用sql-log-bin会话变量来关闭当前会话的日志记录.只需输入:
SET sql_log_bin = 0;
Run Code Online (Sandbox Code Playgroud)
并且当前会话中的所有查询都不会发送到二进制日志.如果要重新打开二进制日志记录,请运行:
SET sql_log_bin = 1;
Run Code Online (Sandbox Code Playgroud)
这仅适用于您当前正在运行的会话.来自所有其他连接的所有其他查询仍将继续记录.此外,您必须具有SUPER权限才能使用此功能.
小智 20
如果你想从cli做这个,试试这个,它对我有用:
$ mysqldump old_DB | mysql --init-command="SET SQL_LOG_BIN = 0;" new_DB
Run Code Online (Sandbox Code Playgroud)
可能是在较新的MySQL版本中添加了"init-command"参数.
| 归档时间: |
|
| 查看次数: |
41882 次 |
| 最近记录: |