本节介绍可在复制源服务器上使用的服务器选项和系统变量。您可以在
命令行或
选项文件中指定选项。您可以使用指定系统变量值
SET。
在源和每个副本上,您必须设置
server_id系统变量以建立唯一的复制 ID。对于每个服务器,您应该在 1 到 2 ·32 − 1的范围内选择一个唯一的正整数,并且每个 ID 必须不同于任何其他复制源服务器或副本使用的每个其他 ID。例子:server-id=3。
有关源上用于控制二进制日志记录的选项,请参阅 第 17.1.4.4 节,“二进制日志选项和变量”。
以下列表描述了用于控制复制源服务器的启动选项。与复制相关的系统变量将在本节后面讨论。
-
命令行格式 --show-slave-auth-info[={OFF|ON}]类型 布尔值 默认值 OFF对于以和 选项
SHOW SLAVE HOSTS启动的副本,在复制源服务器上 的输出中显示副本用户名和密码 。--report-user--report-password
以下系统变量用于控制复制源服务器:
-
命令行格式 --auto-increment-increment=#系统变量 auto_increment_increment范围 全局,会话 动态的 是的 类型 整数 默认值 1最小值 1最大值 65535auto_increment_increment并且auto_increment_offset旨在与源到源复制一起使用,并且可用于控制AUTO_INCREMENT列的操作。这两个变量都有全局值和会话值,并且每个变量都可以采用 1 到 65,535(含)之间的整数值。将这两个变量中的任何一个的值设置为 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_offsetAUTO_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是INSERT31,系列中的下一个可用值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范围 全局,会话 动态的 是的 类型 整数 默认值 1最小值 1最大值 65535此变量的默认值为 1。有关详细信息,请参阅 的说明
auto_increment_increment。笔记auto_increment_offset也支持与NDB表格一起使用。 -
命令行格式 --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范围 全球的 动态的 是的 类型 整数 默认值 10000最小值 0最大值 4294967295单元 毫秒 一个以毫秒为单位的值,它控制源在超时和恢复到异步复制之前等待提交以确认来自副本的时间。默认值为 10000(10 秒)。
此变量仅在安装源端半同步复制插件时可用。
rpl_semi_sync_master_trace_level命令行格式 --rpl-semi-sync-master-trace-level=#系统变量 rpl_semi_sync_master_trace_level范围 全球的 动态的 是的 类型 整数 默认值 32最小值 0最大值 4294967295源上的半同步复制调试跟踪级别。定义了四个级别:
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,则如果副本计数在超时期间下降到零,源将恢复正常复制。此变量仅在安装源端半同步复制插件时可用。