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 行。然而,最后一个二进制日志的大小保持不变。
再次,这不会禁用实例的二进制日志记录,但这必须是第二好的选择。