本节介绍可在复制主服务器上使用的服务器选项和系统变量。您可以在 命令行或选项文件中指定 选项。您可以使用来指定系统变量值 SET。
在主服务器和每个从服务器上,必须设置 server_id系统变量以建立唯一的复制ID。对于每个服务器,应选择一个介于1到2 32 − 1之间的唯一正整数,并且每个ID必须与其他复制主服务器或从属正在使用的每个其他ID不同。范例:server-id=3。
有关在主服务器上用于控制二进制日志记录的选项,请参见 第17.1.4.4节“二进制日志选项和变量”。
复制母版的启动选项
下表描述了用于控制复制主服务器的启动选项。与复制相关的系统变量将在本节后面讨论。
–show-slave-auth-info
属性 值
命令行格式 --show-slave-auth-info[={OFF|ON}]
类型 布尔型
默认值 OFF
SHOW SLAVE HOSTS在主服务器 的输出中,显示以–report-user和 --report-password选项开头的从属服务器的 从属用户名和密码 。
复制主机上使用的系统变量
以下系统变量用于控制复制主服务器:
auto_increment_increment
属性 值
命令行格式 --auto-increment-increment=#
系统变量 auto_increment_increment
范围 全局
动态 是
类型 整数
默认值 1
最低值 1
最大值 65535
auto_increment_increment 和auto_increment_offset 旨在用于主机到主复制的使用,并且可以用于控制其操作 AUTO_INCREMENT的列。这两个变量都具有全局值和会话值,并且每个变量都可以采用1到65535(含)之间的整数值。将这两个变量之一的值设置为0会导致其值设置为1。尝试将这两个变量中的任何一个的值设置为大于65,535或小于0的整数会导致其值设置为65,535。尝试设置auto_increment_increment或 的值 auto_increment_offset 非整数值产生错误,并且变量的实际值保持不变。
注意
auto_increment_increment 还支持与NDB表一起使用 。
这两个变量影响AUTO_INCREMENT 列行为,如下所示:
auto_increment_increment 控制连续列值之间的间隔。例如:
mysql> SHOW VARIABLES LIKE 'auto_inc%';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| auto_increment_increment | 1 |
| auto_increment_offset | 1 |
+--------------------------+-------+
2 rows in set (0.00 sec)
mysql> CREATE TABLE autoinc1
-> (col INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
Query OK, 0 rows affected (0.04 sec)
mysql> SET @@auto_increment_increment=10;
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW VARIABLES LIKE 'auto_inc%';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| auto_increment_increment | 10 |
| auto_increment_offset | 1 |
+--------------------------+-------+
2 rows in set (0.01 sec)
mysql> INSERT INTO autoinc1 VALUES (NULL), (NULL), (NULL), (NULL);
Query OK, 4 rows affected (0.00 sec)
Records: 4 Duplicates: 0 Warnings: 0
mysql> SELECT col FROM autoinc1;
+-----+
| col |
+-----+
| 1 |
| 11 |
| 21 |
| 31 |
+-----+
4 rows in set (0.00 sec)
auto_increment_offset 确定AUTO_INCREMENT列值的起点 。考虑以下条件,假设这些语句与描述中给出的示例在同一会话中执行 auto_increment_increment:
mysql> SET @@auto_increment_offset=5;
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW VARIABLES LIKE 'auto_inc%';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| auto_increment_increment | 10 |
| auto_increment_offset | 5 |
+--------------------------+-------+
2 rows in set (0.00 sec)
mysql> CREATE TABLE autoinc2
-> (col INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
Query OK, 0 rows affected (0.06 sec)
mysql> INSERT INTO autoinc2 VALUES (NULL), (NULL), (NULL), (NULL);
Query OK, 4 rows affected (0.00 sec)
Records: 4 Duplicates: 0 Warnings: 0
mysql> SELECT col FROM autoinc2;
+-----+
| col |
+-----+
| 5 |
| 15 |
| 25 |
| 35 |
+-----+
4 rows in set (0.02 sec)
当的值 auto_increment_offset 大于 auto_increment_increment的值时,auto_increment_offset 将忽略的值 。
如果更改了这些变量中的任何一个,然后将新行插入到包含一AUTO_INCREMENT列的表中 ,则结果似乎违反直觉,因为AUTO_INCREMENT计算该系列的 值时不考虑该列中已经存在的任何值,并且下一个插入的值是该系列中的最小值大于该AUTO_INCREMENT列中的最大现有值 。该序列的计算如下:
auto_increment_offset+ N× auto_increment_increment
其中,N是[1、2、3,…]系列中的正整数值。例如:
mysql> SHOW VARIABLES LIKE 'auto_inc%';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| auto_increment_increment | 10 |
| auto_increment_offset | 5 |
+--------------------------+-------+
2 rows in set (0.00 sec)
mysql> SELECT col FROM autoinc1;
+-----+
| col |
+-----+
| 1 |
| 11 |
| 21 |
| 31 |
+-----+
4 rows in set (0.00 sec)
mysql> INSERT INTO autoinc1 VALUES (NULL), (NULL), (NULL), (NULL);
Query OK, 4 rows affected (0.00 sec)
Records: 4 Duplicates: 0 Warnings: 0
mysql> SELECT col FROM autoinc1;
+-----+
| col |
+-----+
| 1 |
| 11 |
| 21 |
| 31 |
| 35 |
| 45 |
| 55 |
| 65 |
+-----+
8 rows in set (0.00 sec)
显示auto_increment_increment 并auto_increment_offset 生成5 + N×10 系列的值 ,即[5、15、25、35、45,…]。出现在col之前的列 中的最大值INSERT是31,而该AUTO_INCREMENT 序列中的下一个可用值是35,因此col从该点开始的插入值 和结果如SELECT 查询所示。
不可能将这两个变量的作用限制在一个表中。这些变量控制MySQL服务器上所有表中所有AUTO_INCREMENT列 的行为。如果设置了其中一个变量的全局值,则其影响将持续到通过设置会话值更改或覆盖全局值,或直到重新启动mysqld为止。如果设置了本地值,则新值将影响 会话期间当前用户在其中插入新行的所有表的列,除非在该会话期间更改了值。 AUTO_INCREMENT
默认值为 auto_increment_increment1。请参见 第17.4.1.1节“复制和AUTO_INCREMENT”。
auto_increment_offset
属性 值
命令行格式 --auto-increment-offset=#
系统变量 auto_increment_offset
范围 全局
动态 是
类型 整数
默认值 1
最低值 1
最大值 65535
此变量的默认值为1。有关更多信息,请参见的描述 auto_increment_increment。
注意
auto_increment_offset还支持与NDB表一起使用。
rpl_semi_sync_master_enabled
属性 值
命令行格式 --rpl-semi-sync-master-enabled[={OFF|ON}]
系统变量 rpl_semi_sync_master_enabled
范围 全局
动态 是
类型 布尔型
默认值 OFF
控制是否在主服务器上启用半同步复制。要启用或禁用插件,请将此变量 分别设置为ON或OFF(或1或0)。默认值为 OFF。
仅当安装了主端半同步复制插件时,此变量才可用。
rpl_semi_sync_master_timeout
属性 值
命令行格式 --rpl-semi-sync-master-timeout=#
系统变量 rpl_semi_sync_master_timeout
范围 全球
动态 是
类型 整数
默认值 10000
以毫秒为单位的值,用于控制主服务器在超时并恢复为异步复制之前,等待提交等待从属服务器进行确认的时间。默认值为10000(10秒)。
仅当安装了主端半同步复制插件时,此变量才可用。
rpl_semi_sync_master_trace_level
属性 值
命令行格式 --rpl-semi-sync-master-trace-level=#
系统变量 rpl_semi_sync_master_trace_level
范围 全球
动态 是
类型 整数
默认值 32
主服务器上的半同步复制调试跟踪级别。定义了四个级别:
1 =常规级别(例如,时间功能故障)
16 =详细程度(更多详细信息)
32 =净等待级别(有关网络等待的更多信息)
64 =功能级别(有关功能进入和退出的信息)
仅当安装了主端半同步复制插件时,此变量才可用。
rpl_semi_sync_master_wait_no_slave
属性 值
命令行格式 --rpl-semi-sync-master-wait-no-slave[={OFF|ON}]
系统变量 rpl_semi_sync_master_wait_no_slave
范围 全球
动态 是
类型 布尔型
默认值 ON
对于半同步复制,对于每个事务,主服务器都将等待直到超时,以确认来自某个半同步从服务器的接收确认。如果在此期间未发生任何响应,则主服务器将还原为正常复制。此变量控制主服务器在恢复正常复制之前是否等待超时,即使从服务器在超时期间计数降至零也是如此。
如果该值为ON(默认值),则允许在超时期间从站计数降至零(例如,如果从站断开连接)。主服务器仍在等待超时,因此只要某些从服务器重新连接并在超时间隔内确认事务,半同步复制就会继续。
如果值为OFF,则在超时期间从属计数降至零时,主控将还原为正常复制。
仅当安装了主端半同步复制插件时,此变量才可用。




