如何关闭mysqld_multi实例的二进制日志?

如何关闭mysqld_multi实例的二进制日志?

MySQL 支持mysqld在同一服务器上运行多个。其中一种方法是使用mysqld_multi

如果默认 MySQL 服务器实例(如 中部分配置[mysqld]my.cnf使用,它将为所有其他实例( 、等)log-bin启用二进制日志。[mysqld1][mysqld2]我们如何覆盖其他实例的设置?我们尝试将log-bin=log-bin=OFF置于 之下[mysqld1],但这不会禁用二进制日志。

答案1

你可能不得不使用这个:

设置SQL_LOG_BIN=0;

每次连接到 mysql 时运行此程序,并且在此会话期间运行的所有查询都不会记录在二进制日志中。

您可以在 mysqld1 中的任意 mysql 实例中运行以下命令一次,然后禁用此后所有连接的二进制日志记录,直到下次重新启动 mysqld1:

设置SQL_LOG_BIN=0;
设置全局SQL_LOG_BIN=0;

这不会禁用二进制日志记录。它只是绕过记录 DDL、INSERT、UPDATE 和 DELETE。至少,由于不必记录查询,您可以更快地执行查询。

我确实尝试过

lwdba@localhost (DB information_schema) ::显示二进制日志;
+------------------+-----------------------+
| Log_name | File_size |
+------------------+-----------------------+
| mysql-bin.000001 | 720 |
| mysql-bin.000002 | 4279 |
| mysql-bin.000003 | 128935976 |
+------------------+-----------+
集合中的 3 行(0.00 秒)

lwdba@localhost (DB information_schema) :: 创建数据库 test8;显示二进制日志;
查询 OK,1 行受影响(0.00 秒)

+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000001 | 720 |
| mysql-bin.000002 | 4279 |
| mysql-bin.000003 | 128936061 |
+------------------+-----------+
集合中有 3 行(0.00 秒)

lwdba@localhost (DB information_schema) :: 设置 sql_log_bin=0;创建表 test8.dummy (a int) engine=MyISAM;插入 test8.dummy 值 (1),(2),(3);显示二进制日志;
查询 OK,受影响 0 行 (0.00 秒)

查询成功,影响 0 行(0.06 秒)

查询正常,受影响 3 行 (0.00 秒)
记录:3 重复:0 警告:0

+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000001 | 720 |
| mysql-bin.000002 | 4279 |
| mysql-bin.000003 | 128936061 |
+------------------+-----------+
集合中有 3 行(0.00 秒)

注意创建数据库命令是如何记录的,以及最后一个二进制日志的大小是如何变化的。然后,注意我如何禁用二进制日志并在新的测试数据库中创建一个表,并向其中添加 3 行。然而,最后一个二进制日志的大小保持不变。

再次,这不会禁用实例的二进制日志记录,但这必须是第二好的选择。

相关内容