#### 17.1.6.2 复制源选项和变量

本节介绍可在复制源服务器上使用的服务器选项和系统变量。您可以在[命令行](command-line-options.html)或在一个[选项文件](option-files.html).您可以使用指定系统变量值[`放`](set-variable.html).

在源和每个副本上，您必须设置[`server_id`](replication-options.html#sysvar_server_id)系统变量以建立唯一的复制 ID。对于每个服务器，您应该在 1 到 2 的范围内选择一个唯一的正整数<sup>32</sup>− 1，并且每个 ID 必须不同于复制拓扑中任何其他源或副本使用的每个其他 ID。例子：`服务器 ID=3`.

有关源上用于控制二进制日志记录的选项，请参阅[第 17.1.6.4 节，“二进制日志记录选项和变量”](replication-options-binary-log.html).

##### 复制源服务器的启动选项

以下列表描述了用于控制复制源服务器的启动选项。本节稍后将讨论与复制相关的系统变量。

-   [](<>) [`--show-replica-auth-info`](replication-options-source.html#option_mysqld_show-replica-auth-info)

    [](<>)[](<>)

    | 命令行格式 | `--show-replica-auth-info[={OFF|ON}]` |
    | ----- | ------------------------------------- |
    | 介绍 | 8.0.26 |
    | 类型 | 布尔值 |
    | 默认值 | `离开` |

    从 MySQL 8.0.26 开始，使用[`--show-replica-auth-info`](replication-options-source.html#option_mysqld_show-replica-auth-info)，在 MySQL 8.0.26 之前，使用[`--show-slave-auth-信息`](replication-options-source.html#option_mysqld_show-slave-auth-info).这两个选项具有相同的效果。这些选项在输出中显示复制用户名和密码[`显示复制品`](show-replicas.html)（或在 MySQL 8.0.22 之前，[`显示从主机`](show-slave-hosts.html)) 在以[`--报告用户`](replication-options-replica.html#sysvar_report_user)和[`--report-password`](replication-options-replica.html#sysvar_report_password)选项。

-   [](<>) [`--show-slave-auth-信息`](replication-options-source.html#option_mysqld_show-slave-auth-info)

    [](<>)[](<>)

    | 命令行格式 | `--show-slave-auth-info[={OFF|ON}]` |
    | ----- | ----------------------------------- |
    | 已弃用 | 8.0.26 |
    | 类型 | 布尔值 |
    | 默认值 | `离开` |

    在 MySQL 8.0.26 之前使用此选项，而不是[`--show-replica-auth-info`](replication-options-source.html#option_mysqld_show-replica-auth-info).这两个选项具有相同的效果。

##### 复制源服务器上使用的系统变量

以下系统变量用于复制源服务器或供复制源服务器使用：

-   [](<>) [`auto_increment_increment`](replication-options-source.html#sysvar_auto_increment_increment)

    [](<>)[](<>)

    | 命令行格式 | `--auto-increment-increment=#` |
    | ----- | ------------------------------ |
    | 系统变量 | `[auto_increment_increment]（复制选项-source.html#sysvar_auto_increment_increment）` |
    | 范围 | 全球, 会话 |
    | 动态的 | 是的 |
    | [`SET_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 是的 |
    | 类型 | 整数 |
    | 默认值 | `1` |
    | 最小值 | `1` |
    | 最大值 | `65535` |

    [`auto_increment_increment`](replication-options-source.html#sysvar_auto_increment_increment)和[`auto_increment_offset`](replication-options-source.html#sysvar_auto_increment_offset)旨在与循环（源到源）复制一起使用，并可用于控制`自动递增`列。这两个变量都有全局值和会话值，并且每个变量都可以假定一个介于 1 和 65,535 之间的整数值，包括 1 和 65,535。将这两个变量中的任何一个的值设置为 0 会导致其值被设置为 1。尝试将这两个变量中的任何一个的值设置为大于 65,535 或小于 0 的整数会导致其值被设置为 65,535。试图设置的值[`auto_increment_increment`](replication-options-source.html#sysvar_auto_increment_increment)要么[`auto_increment_offset`](replication-options-source.html#sysvar_auto_increment_offset)到非整数值会产生错误，并且变量的实际值保持不变。

    笔记

    [`auto_increment_increment`](replication-options-source.html#sysvar_auto_increment_increment)也支持与[`新开发银行`](mysql-cluster.html)桌子。

    从MySQL 8.0.18开始，设置此系统变量的会话值不再是一项受限操作。

    在服务器上启动组复制时[`自动增量`](replication-options-source.html#sysvar_auto_increment_increment)已更改为的值[`组复制自动增量增量`](group-replication-options.html#sysvar_group_replication_auto_increment_increment)，默认为7，值为[`自动增量偏移`](replication-options-source.html#sysvar_auto_increment_offset)更改为服务器ID。当组复制停止时，这些更改将恢复。这些更改仅在以下情况下进行和恢复：[`自动增量`](replication-options-source.html#sysvar_auto_increment_increment)和[`自动增量偏移`](replication-options-source.html#sysvar_auto_increment_offset)每个都有默认值1。如果它们的值已从默认值修改，则组复制不会更改它们。在MySQL 8.0中，当组复制处于单主模式时，系统变量也不会被修改，其中只有一台服务器写入。

    [`自动增量`](replication-options-source.html#sysvar_auto_increment_increment)和[`自动增量偏移`](replication-options-source.html#sysvar_auto_increment_offset)影响`自动增量`列的行为如下所示：

    -   [`自动增量`](replication-options-source.html#sysvar_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)
        ```

    -   [`自动增量偏移`](replication-options-source.html#sysvar_auto_increment_offset)确定目标的起点`自动增量`列值。考虑下面这些语句，假设这些语句是在与描述中给出的示例相同的会话期间执行的。[`自动增量`](replication-options-source.html#sysvar_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)
        ```

        当[`自动增量偏移`](replication-options-source.html#sysvar_auto_increment_offset)大于[`自动增量`](replication-options-source.html#sysvar_auto_increment_increment)，价值[`自动增量偏移`](replication-options-source.html#sysvar_auto_increment_offset)被忽略了。

        如果这些变量中的任何一个发生更改，然后将新行插入到包含`自动增量`在专栏中，结果似乎违反直觉，因为`自动增量`计算值时不考虑列中已存在的任何值，插入的下一个值是序列中大于列中现有最大值的最小值`自动增量`柱该系列的计算如下：

    `自动增量偏移` + *`N`* × `自动增量`

    哪里*`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)
    ```

    显示的值[`自动增量`](replication-options-source.html#sysvar_auto_increment_increment)和[`自动增量偏移`](replication-options-source.html#sysvar_auto_increment_offset)生成系列5+*`N`*×10，也就是，[5, 15, 25, 35, 45, ...].当前的最高价值`上校`前一列[`插入`](insert.html)是31，并且是中的下一个可用值`自动增量`级数是35，所以插入的`上校`从这一点开始，结果如下图所示[`选择`](select.html)查询

    不可能将这两个变量的影响限制在一个表中；这些变量控制着所有人的行为`自动增量`列*全部的*MySQL服务器上的表。如果设置了任一变量的全局值，其效果将持续，直到通过设置会话值更改或覆盖全局值，或者直到[**mysqld**](mysqld.html)重新启动。如果设置了局部值，则新值将影响`自动增量`当前用户在会话期间插入新行的所有表的列，除非在该会话期间更改了值。

    的默认值[`自动增量`](replication-options-source.html#sysvar_auto_increment_increment)是1。看见[第17.5.1.1节，“复制和自动\_增量“](replication-features-auto-increment.html).

-   [](<>) [`自动增量偏移`](replication-options-source.html#sysvar_auto_increment_offset)

    [](<>)[](<>)

    | 命令行格式 | `--自动增量偏移=#` |
    | ----- | ------------ |
    | 系统变量 | `[auto_increment_offset]（复制选项source.html#sysvar_auto_increment_offset）` |
    | 范围 | 全球会议 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 对 |
    | 类型 | 整数 |
    | 默认值 | `1.` |
    | 最小值 | `1.` |
    | 最大值 | `65535` |

    此变量的默认值为1。如果保留默认值，并且在服务器上以多主模式启动组复制，则会将其更改为服务器ID。有关更多信息，请参阅的说明[`自动增量`](replication-options-source.html#sysvar_auto_increment_increment).

    笔记

    `自动增量偏移`也支持与一起使用[`NDB`](mysql-cluster.html)桌子。

    从MySQL 8.0.18开始，设置此系统变量的会话值不再是一项受限操作。

-   [](<>) [`即时服务器版本`](replication-options-source.html#sysvar_immediate_server_version)

    [](<>)[](<>)

    | 介绍 | 8.0.14 |
    | --- | ------ |
    | 系统变量 | `[immediate_server_version]（复制选项source.html#sysvar_immediate_server_version）` |
    | 范围 | 一场 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |

    供复制的内部使用。此会话系统变量保存作为复制拓扑中直接源的服务器的MySQL服务器版本号（例如，`80014`对于MySQL 8.0.14服务器实例）。如果此即时服务器的版本不支持会话系统变量，则该变量的值将设置为0(`未知的\u服务器\u版本`).

    变量的值从源复制到副本。有了这些信息，副本可以正确地处理源于旧版本的数据，方法是识别相关版本之间发生语法更改或语义更改的位置，并适当地处理这些更改。这些信息还可以用于组复制环境，其中复制组的一个或多个成员的版本比其他成员的版本更新。变量的值可以在每个事务的二进制日志中查看（作为`Gtid_日志_事件`或`匿名_gtid_log_事件`如果服务器上没有使用GTID），并且可能有助于调试跨版本复制问题。

    设置此系统变量的会话值是一项受限操作。会话用户必须具有[`复制应用程序`](privileges-provided.html#priv_replication-applier)特权（见[第17.3.3节，“复制权限检查”](replication-privilege-checks.html))，或足以设置受限会话变量的权限（请参阅[第5.1.9.1节，“系统变量权限”](system-variable-privileges.html)).但是，请注意，该变量不是供用户设置的；它由复制基础架构自动设置。

-   [](<>) [`原始服务器版本`](replication-options-source.html#sysvar_original_server_version)

    [](<>)[](<>)

    | 介绍 | 8.0.14 |
    | --- | ------ |
    | 系统变量 | `[original_server_version]（复制选项source.html#sysvar_original_server_version）` |
    | 范围 | 一场 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |

    供复制的内部使用。此会话系统变量保存最初提交事务的服务器的MySQL服务器版本号（例如，`80014`对于MySQL 8.0.14服务器实例）。如果此原始服务器的版本不支持会话系统变量，则该变量的值将设置为0(`未知的\u服务器\u版本`)。请注意，当原始服务器设置版本号时，如果即时服务器或复制拓扑中的任何其他介入服务器不支持会话系统变量，因此不复制其值，则该变量的值将重置为0。

    变量的值的设置和使用方式与[`即时服务器版本`](replication-options-source.html#sysvar_immediate_server_version)系统变量。如果变量的值与[`即时服务器版本`](replication-options-source.html#sysvar_immediate_server_version)系统变量，只有后者记录在二进制日志中，并指示原始服务器版本相同。

    在组复制环境中，view change log events（查看更改日志事件）是在新成员加入组时由每个组成员排队的特殊事务，它被标记为排队处理该事务的组成员的服务器版本。这样可以确保加入成员知道原始捐赠者的服务器版本。由于排队等待特定视图更改的视图更改日志事件在所有成员上具有相同的GTID，因此仅在本例中，相同GTID的实例可能具有不同的原始服务器版本。

    设置此系统变量的会话值是一项受限操作。会话用户必须具有[`复制应用程序`](privileges-provided.html#priv_replication-applier)特权（见[第17.3.3节，“复制权限检查”](replication-privilege-checks.html))，或足以设置受限会话变量的权限（请参阅[第5.1.9.1节，“系统变量权限”](system-variable-privileges.html)).但是，请注意，该变量不是供用户设置的；它由复制基础架构自动设置。

-   [](<>) [`rpl_半同步_主同步_已启用`](replication-options-source.html#sysvar_rpl_semi_sync_master_enabled)

    [](<>)[](<>)

    | 命令行格式 | `--rpl半同步主机已启用[={OFF | ON}]` |
    | ----- | ---------------------------- |
    | 系统变量 | `[rpl_semi_sync_master_enabled]（复制选项source.html#sysvar_rpl_semi_sync_master_enabled）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 布尔值 |
    | 默认值 | `关` |

    控制是否在源服务器上启用半同步复制。要启用或禁用插件，请将此变量设置为`在…上`或`关`（或分别为1或0）。默认值是`关`.

    仅当安装了源端半同步复制插件时，此变量才可用。

-   [](<>) [`rpl_半同步_主控_超时`](replication-options-source.html#sysvar_rpl_semi_sync_master_timeout)

    [](<>)[](<>)

    | 命令行格式 | `--rpl半同步主机超时=#` |
    | ----- | ---------------- |
    | 系统变量 | `[rpl_semi_sync_master_timeout]（复制选项source.html#sysvar_rpl_semi_sync_master_timeout）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |
    | 默认值 | `10000` |

    以毫秒为单位的值，用于控制源在超时并恢复到异步复制之前等待副本确认的提交时间。默认值为10000（10秒）。

    仅当安装了源端半同步复制插件时，此变量才可用。

-   [](<>) [`rpl_半_同步_主_跟踪_级别`](replication-options-source.html#sysvar_rpl_semi_sync_master_trace_level)

    [](<>)[](<>)

    | 命令行格式 | `--rpl半同步主跟踪级别=#` |
    | ----- | ----------------- |
    | 系统变量 | `[rpl_semi_sync_master_trace_level]（replication options source.html#sysvar_rpl_semi_sync_master_trace_level）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |
    | 默认值 | `32` |

    源服务器上的半同步复制调试跟踪级别。定义了四个级别：

    -   1=一般水平（例如，时间功能故障）

    -   16=详细程度（更详细的信息）

    -   32=净等待级别（有关网络等待的更多信息）

    -   64=功能级别（有关功能进入和退出的信息）

        仅当安装了源端半同步复制插件时，此变量才可用。

-   [](<>) [`rpl_半_同步_主_等待_等待_从_计数`](replication-options-source.html#sysvar_rpl_semi_sync_master_wait_for_slave_count)

    [](<>)[](<>)

    | 命令行格式 | `--rpl半同步主机等待从机计数=#` |
    | ----- | -------------------- |
    | 系统变量 | `[rpl_semi_sync_master_wait_for_slave_count]（复制选项source.html#sysvar_rpl_semi_sync_master_wait_for_slave_count）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |
    | 默认值 | `1.` |
    | 最小值 | `1.` |
    | 最大值 | `65535` |

    源在继续之前每个事务必须接收的副本确认数。默认情况下`rpl_半_同步_主_等待_等待_从_计数`是`1.`，这意味着半同步复制在收到单个副本确认后继续进行。对于这个变量的小值，性能最好。

    例如，如果`rpl_半_同步_主_等待_等待_从_计数`是`2.`，则两个复制副本必须在配置的超时时间之前确认收到事务[`rpl_半同步_主控_超时`](replication-options-source.html#sysvar_rpl_semi_sync_master_timeout)以进行半同步复制。如果在超时期间确认收到事务的副本减少，则源将恢复到正常复制。

    笔记

    这种行为也取决于[`rpl\u半同步\u主\u等待\u无\u从机`](replication-options-source.html#sysvar_rpl_semi_sync_master_wait_no_slave)

    仅当安装了源端半同步复制插件时，此变量才可用。

-   [](<>) [`rpl\u半同步\u主\u等待\u无\u从机`](replication-options-source.html#sysvar_rpl_semi_sync_master_wait_no_slave)

    [](<>)[](<>)

    | 命令行格式 | `--rpl半同步主机等待无从机[={OFF | ON}]` |
    | ----- | ------------------------------ |
    | 系统变量 | `[rpl_semi_sync_master_wait_no_slave]（复制选项source.html 35; sysvar_rpl_semi_sync_master_wait_no_slave）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 布尔值 |
    | 默认值 | `在…上` |

    控制源是否等待由配置的超时时间[`rpl_半同步_主控_超时`](replication-options-source.html#sysvar_rpl_semi_sync_master_timeout)过期，即使副本计数下降到少于[`rpl_半_同步_主_等待_等待_从_计数`](replication-options-source.html#sysvar_rpl_semi_sync_master_wait_for_slave_count)在超时期间。

    当`rpl\u半同步\u主\u等待\u无\u从机`是`在…上`（默认设置），允许副本计数下降到小于[`rpl_半_同步_主_等待_等待_从_计数`](replication-options-source.html#sysvar_rpl_semi_sync_master_wait_for_slave_count)在超时期间。只要有足够多的副本在超时期限到期之前确认事务，半同步复制就会继续。

    当`rpl\u半同步\u主\u等待\u无\u从机`是`关`，如果副本计数降至中配置的数字以下[`rpl_半_同步_主_等待_等待_从_计数`](replication-options-source.html#sysvar_rpl_semi_sync_master_wait_for_slave_count)在由配置的超时期间的任何时间[`rpl_半同步_主控_超时`](replication-options-source.html#sysvar_rpl_semi_sync_master_timeout)，源将恢复为正常复制。

    仅当安装了源端半同步复制插件时，此变量才可用。

-   [](<>) [`rpl_半同步_主控_等待_点`](replication-options-source.html#sysvar_rpl_semi_sync_master_wait_point)

    [](<>)[](<>)

    | 命令行格式 | `--rpl半同步主机等待点=值` |
    | ----- | ----------------- |
    | 系统变量 | `[rpl_semi_sync_master_wait_point]（replication options source.html#sysvar_rpl_semi_sync_master_wait_point）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 列举 |
    | 默认值 | `同步后` |
    | 有效值 | `同步后`<br/><br/>`在你承诺之后` |

    此变量控制半同步复制源服务器在向提交事务的客户端返回状态之前等待事务接收的副本确认的时间点。这些值是允许的：

    -   `同步后`（默认设置）：源将每个事务写入其二进制日志和副本，并将二进制日志同步到磁盘。同步后，源等待事务收据的副本确认。收到确认后，源将事务提交到存储引擎，并将结果返回给客户端，然后客户端可以继续。

    -   `在你承诺之后`：源将每个事务写入其二进制日志和副本，同步二进制日志，并将事务提交到存储引擎。提交后，源等待事务接收的副本确认。收到确认后，源向客户端返回一个结果，然后客户端可以继续。

        这些设置的复制特性不同，如下所示：

    -   具有`同步后`，所有客户端都会同时看到提交的事务：在复制副本确认并提交到源上的存储引擎之后。因此，所有客户端在源上看到相同的数据。

        在源故障的情况下，源上提交的所有事务都已复制到副本（保存到其中继日志）。源服务器意外退出并故障切换到复制副本是无损的，因为复制副本是最新的。但是，请注意，在这种情况下，源无法重新启动，必须丢弃，因为其二进制日志可能包含未提交的事务，在二进制日志恢复后外部化时，这些事务可能会与副本发生冲突。

    -   具有`在你承诺之后`，发出事务的客户端只有在服务器提交到存储引擎并收到副本确认后才能获得返回状态。在提交之后和副本确认之前，其他客户端可以在提交客户端之前看到提交的事务。

        如果出现错误，导致复制副本无法处理事务，那么在源服务器意外退出并故障切换到复制副本时，这些客户端可能会看到与他们在源服务器上看到的数据相关的数据丢失。

        仅当安装了源端半同步复制插件时，此变量才可用。

        加上[`rpl_半同步_主控_等待_点`](replication-options-source.html#sysvar_rpl_semi_sync_master_wait_point)在MySQL 5.7中，创建了一个版本兼容性约束，因为它增加了半同步接口版本：MySQL 5.7及更高版本的服务器不使用旧版本的半同步复制插件，旧版本的服务器也不使用MySQL 5.7及更高版本的半同步复制插件。

-   [](<>) [`rpl_半同步_源已启用`](replication-options-source.html#sysvar_rpl_semi_sync_source_enabled)

    [](<>)[](<>)

    | 命令行格式 | `--rpl半同步源已启用[={OFF | ON}]` |
    | ----- | --------------------------- |
    | 介绍 | 8.0.26 |
    | 系统变量 | `[rpl_semi_sync_source_enabled]（复制选项source.html#sysvar_rpl_semi_sync_source_enabled）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 布尔值 |
    | 默认值 | `关` |

    [`rpl_半同步_源已启用`](replication-options-source.html#sysvar_rpl_semi_sync_source_enabled)当`rpl_半同步_源` (`半同步源。所以`库）插件安装在复制副本上以设置半同步复制。如果`rpl_半同步_主机`插件(`半同步大师。所以`安装了，[`rpl_半同步_主同步_已启用`](replication-options-source.html#sysvar_rpl_semi_sync_master_enabled)而是可用的。

    [`rpl_半同步_源已启用`](replication-options-source.html#sysvar_rpl_semi_sync_source_enabled)控制是否在源服务器上启用半同步复制。要启用或禁用插件，请将此变量设置为`在…上`或`关`（或分别为1或0）。默认值是`关`.

-   [](<>) [`rpl_半同步_源超时`](replication-options-source.html#sysvar_rpl_semi_sync_source_timeout)

    [](<>)[](<>)

    | 命令行格式 | `--rpl半同步源超时=#` |
    | ----- | --------------- |
    | 介绍 | 8.0.26 |
    | 系统变量 | `[rpl_semi_sync_source_timeout]（复制选项source.html#sysvar_rpl_semi_sync_source_timeout）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |
    | 默认值 | `10000` |

    [`rpl_半同步_源超时`](replication-options-source.html#sysvar_rpl_semi_sync_source_timeout)当`rpl_半同步_源` (`半同步源。所以`库）插件安装在复制副本上以设置半同步复制。如果`rpl_半同步_主机`插件(`半同步大师。所以`安装了，[`rpl_半同步_主控_超时`](replication-options-source.html#sysvar_rpl_semi_sync_master_timeout)而是可用的。

    [`rpl_半同步_源超时`](replication-options-source.html#sysvar_rpl_semi_sync_source_timeout)控制源在超时并恢复到异步复制之前等待副本确认的提交时间。该值以毫秒为单位指定，默认值为10000（10秒）。

-   [](<>) [`rpl_半同步_源跟踪_级别`](replication-options-source.html#sysvar_rpl_semi_sync_source_trace_level)

    [](<>)[](<>)

    | 命令行格式 | `--rpl半同步源跟踪级别=#` |
    | ----- | ----------------- |
    | 介绍 | 8.0.26 |
    | 系统变量 | `[rpl_semi_sync_source_trace_level]（replication options source.html#sysvar_rpl_semi_sync_source_trace_level）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |
    | 默认值 | `32` |

    [`rpl_半同步_源跟踪_级别`](replication-options-source.html#sysvar_rpl_semi_sync_source_trace_level)当`rpl_半同步_源` (`半同步源。所以`库）插件安装在复制副本上以设置半同步复制。如果`rpl_半同步_主机`插件(`半同步大师。所以`安装了，[`rpl_半_同步_主_跟踪_级别`](replication-options-source.html#sysvar_rpl_semi_sync_master_trace_level)而是可用的。

    [`rpl_半同步_源跟踪_级别`](replication-options-source.html#sysvar_rpl_semi_sync_source_trace_level)指定源服务器上的半同步复制调试跟踪级别。定义了四个级别：

    -   1=一般水平（例如，时间功能故障）

    -   16=详细程度（更详细的信息）

    -   32=净等待级别（有关网络等待的更多信息）

    -   64=功能级别（有关功能进入和退出的信息）

-   [](<>) [`rpl\u半同步\u源\u等待\u副本\u计数`](replication-options-source.html#sysvar_rpl_semi_sync_source_wait_for_replica_count)

    [](<>)[](<>)

    | 命令行格式 | `--rpl半同步源等待副本计数=#` |
    | ----- | ------------------- |
    | 介绍 | 8.0.26 |
    | 系统变量 | `[rpl_semi_sync_source_wait_for_replica_count]（replication options source.html#sysvar_rpl_semi_sync_source_wait_for_replica_count）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |
    | 默认值 | `1.` |
    | 最小值 | `1.` |
    | 最大值 | `65535` |

    [`rpl\u半同步\u源\u等待\u副本\u计数`](replication-options-source.html#sysvar_rpl_semi_sync_source_wait_for_replica_count)当`rpl_半同步_源` (`半同步源。所以`库）插件安装在复制副本上以设置半同步复制。如果`rpl_半同步_主机`插件(`半同步大师。所以`安装了，[`rpl_半_同步_主_等待_等待_从_计数`](replication-options-source.html#sysvar_rpl_semi_sync_master_wait_for_slave_count)而是可用的。

    [`rpl\u半同步\u源\u等待\u副本\u计数`](replication-options-source.html#sysvar_rpl_semi_sync_source_wait_for_replica_count)指定源在继续之前每个事务必须接收的副本确认数。默认情况下`rpl\u半同步\u源\u等待\u副本\u计数`是`1.`，这意味着半同步复制在收到单个副本确认后继续进行。对于这个变量的小值，性能最好。

    例如，如果`rpl\u半同步\u源\u等待\u副本\u计数`是`2.`，则两个复制副本必须在配置的超时时间之前确认收到事务[`rpl_半同步_源超时`](replication-options-source.html#sysvar_rpl_semi_sync_source_timeout)以进行半同步复制。如果在超时期间确认收到事务的副本减少，则源将恢复到正常复制。

    笔记

    这种行为也取决于[`rpl\u半同步\u源\u等待\u无\u副本`](replication-options-source.html#sysvar_rpl_semi_sync_source_wait_no_replica).

-   [](<>) [`rpl\u半同步\u源\u等待\u无\u副本`](replication-options-source.html#sysvar_rpl_semi_sync_source_wait_no_replica)

    [](<>)[](<>)

    | 命令行格式 | `--rpl半同步源等待无副本[={OFF | ON}]` |
    | ----- | ----------------------------- |
    | 介绍 | 8.0.26 |
    | 系统变量 | `[rpl_semi_sync_source_wait_no_replica]（replication options source.html#sysvar_rpl_semi_sync_source_wait_no_replica）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 布尔值 |
    | 默认值 | `在…上` |

    [`rpl\u半同步\u源\u等待\u无\u副本`](replication-options-source.html#sysvar_rpl_semi_sync_source_wait_no_replica)当`rpl_半同步_源` (`半同步源。所以`库）插件安装在复制副本上以设置半同步复制。如果`rpl_半同步_主机`插件(`半同步大师。所以`安装了，[`rpl\u半同步\u源\u等待\u无\u副本`](replication-options-source.html#sysvar_rpl_semi_sync_source_wait_no_replica)而是可用的。

    [`rpl\u半同步\u源\u等待\u无\u副本`](replication-options-source.html#sysvar_rpl_semi_sync_source_wait_no_replica)控制源是否等待由配置的超时时间[`rpl_半同步_源超时`](replication-options-source.html#sysvar_rpl_semi_sync_source_timeout)过期，即使副本计数下降到少于[`rpl\u半同步\u源\u等待\u副本\u计数`](replication-options-source.html#sysvar_rpl_semi_sync_source_wait_for_replica_count)在超时期间。

    当`rpl\u半同步\u源\u等待\u无\u副本`是`在…上`（默认设置），允许副本计数下降到小于[`rpl\u半同步\u源\u等待\u副本\u计数`](replication-options-source.html#sysvar_rpl_semi_sync_source_wait_for_replica_count)在超时期间。只要有足够多的副本在超时期限到期之前确认事务，半同步复制就会继续。

    当`rpl\u半同步\u源\u等待\u无\u副本`是`关`，如果副本计数降至中配置的数字以下[`rpl\u半同步\u源\u等待\u副本\u计数`](replication-options-source.html#sysvar_rpl_semi_sync_source_wait_for_replica_count)在由配置的超时期间的任何时间[`rpl_半同步_源超时`](replication-options-source.html#sysvar_rpl_semi_sync_source_timeout)，源将恢复为正常复制。

-   [](<>) [`rpl_半同步_源等待_点`](replication-options-source.html#sysvar_rpl_semi_sync_source_wait_point)

    [](<>)[](<>)

    | 命令行格式 | `--rpl半同步源等待点=值` |
    | ----- | ---------------- |
    | 介绍 | 8.0.26 |
    | 系统变量 | `[rpl_semi_sync_source_wait_point]（replication options source.html#sysvar_rpl_semi_sync_source_wait_point）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 列举 |
    | 默认值 | `同步后` |
    | 有效值 | `同步后`<br/><br/>`在你承诺之后` |

    [`rpl_半同步_源等待_点`](replication-options-source.html#sysvar_rpl_semi_sync_source_wait_point)当`rpl_半同步_源` (`半同步源。所以`库）插件安装在复制副本上以设置半同步复制。如果`rpl_半同步_主机`插件(`半同步大师。所以`安装了，[`rpl_半同步_主控_等待_点`](replication-options-source.html#sysvar_rpl_semi_sync_master_wait_point)而是可用的。

    [`rpl_半同步_源等待_点`](replication-options-source.html#sysvar_rpl_semi_sync_source_wait_point)控制半同步复制源服务器在向提交事务的客户端返回状态之前等待事务接收副本确认的时间点。这些值是允许的：

    -   `同步后`（默认设置）：源将每个事务写入其二进制日志和副本，并将二进制日志同步到磁盘。同步后，源等待事务收据的副本确认。收到确认后，源将事务提交到存储引擎，并将结果返回给客户端，然后客户端可以继续。

    -   `在你承诺之后`：源将每个事务写入其二进制日志和副本，同步二进制日志，并将事务提交到存储引擎。提交后，源等待事务接收的副本确认。收到确认后，源向客户端返回一个结果，然后客户端可以继续。

        这些设置的复制特性不同，如下所示：

    -   具有`同步后`，所有客户端都会同时看到提交的事务：在复制副本确认并提交到源上的存储引擎之后。因此，所有客户端在源上看到相同的数据。

        在源故障的情况下，源上提交的所有事务都已复制到副本（保存到其中继日志）。源服务器意外退出并故障切换到复制副本是无损的，因为复制副本是最新的。但是，请注意，在这种情况下，源无法重新启动，必须丢弃，因为其二进制日志可能包含未提交的事务，在二进制日志恢复后外部化时，这些事务可能会与副本发生冲突。

    -   具有`在你承诺之后`，发出事务的客户端只有在服务器提交到存储引擎并收到副本确认后才能获得返回状态。在提交之后和副本确认之前，其他客户端可以在提交客户端之前看到提交的事务。

        如果出现错误，导致复制副本无法处理事务，那么在源服务器意外退出并故障切换到复制副本时，这些客户端可能会看到与他们在源服务器上看到的数据相关的数据丢失。
