0

v5.7 的 MySQL 文档说明了变量的复制

在 MySQL 5.7 中,以下会话变量被写入二进制日志,并在解析二进制日志时由复制从属设备兑现,无论日志记录格式如何: - sql_mode,(等)

但是,此功能似乎不起作用。我在我的开发设置中注意到了它,并使用mysql-sandbox重新安装了 1 个主服务器和 2 个从属服务器,并对其进行了仔细检查。

数据复制工作:

$HOME/sandboxes/rsandbox_mysql-5_7_13/m

master [localhost] {msandbox} ((none)) > use test;
master [localhost] {msandbox} (test) > CREATE TABLE test1 (id INT(11) UNSIGNED NOT NULL);
master [localhost] {msandbox} (test) > INSERT INTO test1 VALUES(1);
master [localhost] {msandbox} (test) > SELECT * FROM test1;
+----+
| id |
+----+
|  1 |
+----+
1 row in set (0.00 sec)

$HOME/sandboxes/rsandbox_mysql-5_7_13/s1

slave1 [localhost] {msandbox} (test) > SELECT * FROM test1;
+----+
| id |
+----+
|  1 |
+----+
1 row in set (0.00 sec)

但是会话变量 sql_mode 的复制不起作用:

$HOME/sandboxes/rsandbox_mysql-5_7_13/m

master [localhost] {msandbox} (test) > SET @@session.sql_mode = '';
master [localhost] {msandbox} (test) > SELECT @@SESSION.sql_mode;
+--------------------+
| @@SESSION.sql_mode |
+--------------------+
|                    |
+--------------------+
1 row in set (0.00 sec)

$HOME/sandboxes/rsandbox_mysql-5_7_13/s1

slave1 [localhost] {msandbox} (test) > SELECT @@SESSION.sql_mode;
+-------------------------------------------------------------------------------------------------------------------------------------------+
| @@SESSION.sql_mode                                                                                                                        |
+-------------------------------------------------------------------------------------------------------------------------------------------+
|ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+-------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

我在 MySQL Bug tracker 中搜索了相关的 bug,但没有发现任何问题。

我知道数据库管理员可以在每个数据库服务器上全局设置变量。但是,目前这不是一个选择。我需要将此功能作为 OpenSource PHP 框架的一部分,该框架应具有尽可能少的要求。

4

0 回答 0