#### 17.1.6.3副本服务器选项和变量

本节解释了适用于副本服务器的服务器选项和系统变量，包括以下内容：

-   [副本服务器的启动选项](replication-options-replica.html#replication-optvars-slaves)

-   [副本服务器上使用的系统变量](replication-options-replica.html#replication-sysvars-slaves)

    在屏幕上指定选项[命令行](command-line-options.html)或者在一个[选项文件](option-files.html)。在服务器运行时，可以使用[`将复制源更改为`](change-replication-source-to.html)语句（来自MySQL 8.0.23）或[`将主机更改为`](change-master-to.html)语句（MySQL 8.0.23之前）。使用以下命令指定系统变量值：[`设置`](set-variable.html).

**服务器ID。**在源和每个副本上，必须设置[`服务器id`](replication-options.html#sysvar_server_id)系统变量，用于在1到2之间建立唯一的复制ID<sup>32</sup>− 1.“唯一”表示每个ID必须与复制拓扑中任何其他源或复制副本使用的每个其他ID不同。实例`我的cnf`文件：

```
[mysqld]
server-id=3
```

##### 副本服务器的启动选项

本节介绍用于控制副本服务器的启动选项。在服务器运行时，可以使用[`将复制源更改为`](change-replication-source-to.html)语句（来自MySQL 8.0.23）或[`将主机更改为`](change-master-to.html)语句（MySQL 8.0.23之前）。其他的，比如`--复制-*`选项，只能在副本服务器启动时设置。本节后面将讨论与复制相关的系统变量。

-   [](<>) [`--主信息文件=*`文件名`*`](replication-options-replica.html#option_mysqld_master-info-file)

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

    | 命令行格式 | `--主信息文件=文件名` |
    | ----- | ------------- |
    | 反对 | 8.0.18 |
    | 类型 | 文件名 |
    | 默认值 | `主人信息` |

    现在不推荐使用此选项。它用于设置副本的连接元数据存储库的文件名（如果需要）[`master_info_repository=文件`](replication-options-replica.html#sysvar_master_info_repository)一切都安排好了。[`--主信息文件`](replication-options-replica.html#option_mysqld_master-info-file)以及[`主信息存储库`](replication-options-replica.html#sysvar_master_info_repository)不推荐使用系统变量，因为用于连接元数据存储库的文件已被崩溃安全表取代。有关连接元数据存储库的信息，请参阅[第17.2.4.2节，“复制元数据存储库”](replica-logs-status.html).

-   [](<>) [`--主重试计数=*`计数`*`](replication-options-replica.html#option_mysqld_master-retry-count)

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

    | 命令行格式 | `--主重试计数=#` |
    | ----- | ----------- |
    | 反对 | 对 |
    | 类型 | 整数 |
    | 默认值 | `86400` |
    | 最小值 | `0` |
    | 最大值（64位平台） | `18446744073709551615` |
    | 最大值（32位平台） | `4294967295` |

    复制副本在放弃之前尝试重新连接到源的次数。默认值为86400倍。值为0表示“无限”，复制副本将尝试永久连接。当复制副本达到其连接超时（由[`副本\u网络\u超时`](replication-options-replica.html#sysvar_replica_net_timeout)或[`从网络超时`](replication-options-replica.html#sysvar_slave_net_timeout)系统变量），而不从源接收数据或心跳信号。重新连接的尝试间隔由`源\连接\重试` \| `主机连接重试`选择[`将复制源更改为`](change-replication-source-to.html) \| [`将主机更改为`](change-master-to.html)语句（默认为每60秒一次）。

    此选项已被弃用；预计它将在未来的MySQL版本中被删除。使用`来源_重试_计数` \| `主重试计数`选择[`将复制源更改为`](change-replication-source-to.html) \| [`将主机更改为`](change-master-to.html)而不是声明。

-   [](<>) [`--最大中继日志大小=*`大小`*`](replication-options-replica.html#option_mysqld_max-relay-log-size)

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

    | 命令行格式 | `--最大中继日志大小=#` |
    | ----- | -------------- |
    | 系统变量 | `[max_relay_log_size]（复制选项replica.html#sysvar_max_relay_log_size）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |
    | 默认值 | `0` |
    | 最小值 | `0` |
    | 最大值 | `1073741824` |
    | 块大小 | `4096` |

    服务器自动旋转中继日志文件的大小。如果该值不为零，当中继日志的大小超过该值时，中继日志将自动旋转。如果该值为零（默认值），则继电器日志旋转发生的大小由[`最大尺寸`](replication-options-binary-log.html#sysvar_max_binlog_size)。有关更多信息，请参阅[第17.2.4.1节，“继电器日志”](replica-logs-relaylog.html).

-   [](<>) [`--中继日志清除={0 | 1}`](replication-options-replica.html#option_mysqld_relay-log-purge)

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

    | 命令行格式 | `--继电器日志清除[={OFF | ON}]` |
    | ----- | ------------------------ |
    | 系统变量 | `[relay_log_purge]（复制选项replica.html#sysvar_relay_log_purge）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 布尔值 |
    | 默认值 | `在…上` |

    一旦不再需要中继日志，立即禁用或启用自动清除。默认值为1（已启用）。这是一个全局变量，可以通过`设置全局中继\u日志\u清除=*`N`*`.启用时禁用清除继电器日志[`--中继日志恢复`](replication-options-replica.html#sysvar_relay_log_recovery)该选项存在数据一致性风险，因此不安全。

-   [](<>) [`--继电器日志空间限制=*`大小`*`](replication-options-replica.html#option_mysqld_relay-log-space-limit)

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

    | 命令行格式 | `--继电器日志空间限制=#` |
    | ----- | --------------- |
    | 系统变量 | `[relay_log_space_limit]（replication options replica.html#sysvar_relay_log_space_limit）` |
    | 范围 | 全球的 |
    | 动态 | 不 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |
    | 默认值 | `0` |
    | 最小值 | `0` |
    | 最大值 | `4294967295` |

    此选项对副本上所有中继日志的总大小（以字节为单位）设置上限。值为0表示“无限制”。这对于磁盘空间有限的副本服务器主机很有用。当达到限制时，I/O（接收器）线程停止从源服务器读取二进制日志事件，直到SQL线程捕获并删除了一些未使用的中继日志。请注意，这个限制不是绝对的：在某些情况下，SQL（applier）线程需要更多事件才能删除中继日志。在这种情况下，接收方线程会超过限制，直到applier线程可以删除一些中继日志，因为不这样做会导致死锁。你不应该设置[`--继电器日志空间限制`](replication-options-replica.html#option_mysqld_relay-log-space-limit)不到[`--最大中继日志大小`](replication-options-replica.html#option_mysqld_max-relay-log-size)（或[`--最大binlog大小`](replication-options-binary-log.html#sysvar_max_binlog_size)如果[`--最大中继日志大小`](replication-options-replica.html#option_mysqld_max-relay-log-size)是0）。在这种情况下，接收方线程可能会等待可用空间，因为[`--继电器日志空间限制`](replication-options-replica.html#option_mysqld_relay-log-space-limit)已超出，但应用程序线程没有要清除的中继日志，无法满足接收器线程的要求。这会迫使接收方线程忽略[`--继电器日志空间限制`](replication-options-replica.html#option_mysqld_relay-log-space-limit)暂时

-   [](<>) [`--复制do数据库=*`db\_名称`*`](replication-options-replica.html#option_mysqld_replicate-do-db)

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

    | 命令行格式 | `--复制do db=name` |
    | ----- | ---------------- |
    | 类型 | 一串 |

    使用数据库的名称创建复制筛选器。也可以使用[`更改复制筛选器复制\u DO\u数据库`](change-replication-filter.html).

    此选项支持特定于通道的复制筛选器，使多源副本能够对不同的源使用特定的筛选器。在名为的通道上配置特定于通道的复制筛选器*`频道1`*使用`--复制do db：*`频道1`*:*`db\_名称`*`.在本例中，第一个冒号被解释为分隔符，后面的冒号是文字冒号。看见[第17.2.5.4节，“基于复制通道的过滤器”](replication-rules-channel-based-filters.html)了解更多信息。

    笔记

    全局复制筛选器不能用于为组复制配置的MySQL服务器实例，因为在某些服务器上过滤事务会使组无法就一致状态达成一致。特定于通道的复制筛选器可用于不直接涉及组复制的复制通道，例如组成员还充当组外源的副本的情况。它们不能在地面上使用`组复制应用程序`或`组_复制_恢复`频道。

    此复制筛选器的确切效果取决于使用的是基于语句的复制还是基于行的复制。

    **基于语句的复制。**告诉复制SQL线程将复制限制在默认数据库（即由[`使用`](use.html))是吗*`db_名称`*。要指定多个数据库，请多次使用此选项，每个数据库一次；然而，这样做确实有效*不*复制跨数据库语句，例如`更新*`一些\_db。几张桌子`*设置foo='bar'`而选择了其他数据库（或没有数据库）。

    警告

    要指定多个数据库，请执行以下操作：*必须*使用此选项的多个实例。由于数据库名称可以包含逗号，如果提供逗号分隔的列表，则该列表将被视为单个数据库的名称。

    在使用基于语句的复制时，有一个例子说明了哪些内容可能无法正常工作：如果复制副本是从[`--复制do db=销售`](replication-options-replica.html#option_mysqld_replicate-do-db)你对来源发表了以下声明[`使现代化`](update.html)声明是*不*复制：

    ```
    USE prices;
    UPDATE sales.january SET amount=amount+1000;
    ```

    这种“只检查默认数据库”行为的主要原因是，仅从语句就很难知道是否应该复制它（例如，如果使用多个表）[`删去`](delete.html)语句或多个表[`使现代化`](update.html)跨多个数据库运行的语句）。如果不需要的话，只检查默认数据库比检查所有数据库更快。

    **基于行的复制。**通知复制SQL线程将复制限制到数据库*`db_名称`*.只有属于*`db_名称`*改变了；当前数据库对此没有影响。假设复制副本以[`--复制do db=销售`](replication-options-replica.html#option_mysqld_replicate-do-db)基于行的复制生效，然后在源上运行以下语句：

    ```
    USE prices;
    UPDATE sales.february SET amount=amount+100;
    ```

    这个`二月`餐桌`出售`复制副本上的数据库将根据[`使现代化`](update.html)陈述无论[`使用`](use.html)声明发表。但是，在使用基于行的复制和复制时，在源上发出以下语句对复制副本没有影响[`--复制do db=销售`](replication-options-replica.html#option_mysqld_replicate-do-db):

    ```
    USE prices;
    UPDATE prices.march SET amount=amount-25;
    ```

    即使声明`使用价格`改为`利用销售`这个[`使现代化`](update.html)声明的效果仍然无法复制。

    另一个重要区别在于[`--复制do数据库`](replication-options-replica.html#option_mysqld_replicate-do-db)在基于语句的复制中处理，而不是在引用多个数据库的语句中发生基于行的复制。假设复制副本以[`--复制do db=db1`](replication-options-replica.html#option_mysqld_replicate-do-db)，并在源上执行以下语句：

    ```
    USE db1;
    UPDATE db1.table1, db2.table2 SET db1.table1.col1 = 10, db2.table2.col2 = 20;
    ```

    如果您使用的是基于语句的复制，那么这两个表都会在复制副本上更新。但是，在使用基于行的复制时`表1`在复制副本上受影响；自从`表2`在另一个数据库中，`表2`在复制副本上，不会被更改[`使现代化`](update.html).现在假设`使用db1`声明，a`使用db4`使用了以下语句：

    ```
    USE db4;
    UPDATE db1.table1, db2.table2 SET db1.table1.col1 = 10, db2.table2.col2 = 20;
    ```

    在这种情况下[`使现代化`](update.html)使用基于语句的复制时，语句对复制副本没有影响。但是，如果您使用的是基于行的复制，则[`使现代化`](update.html)会改变`表1`在复制品上，但不是`表2`-换句话说，只有数据库中名为[`--复制do数据库`](replication-options-replica.html#option_mysqld_replicate-do-db)并且默认数据库的选择对该行为没有影响。

    如果需要跨数据库更新才能工作，请使用[`--复制野生do表=*`db\_名称`*.%`](replication-options-replica.html#option_mysqld_replicate-wild-do-table)相反看见[第17.2.5节，“服务器如何评估复制筛选规则”](replication-rules.html).

    笔记

    此选项影响复制的方式与[`--binlog do db`](replication-options-binary-log.html#option_mysqld_binlog-do-db)影响二进制日志记录，以及复制格式对[`--复制do数据库`](replication-options-replica.html#option_mysqld_replicate-do-db)对复制行为的影响与日志记录格式对复制行为的影响相同[`--binlog do db`](replication-options-binary-log.html#option_mysqld_binlog-do-db).

    这个选项对你没有影响[`开始`](commit.html), [`犯罪`](commit.html)或[`回降`](commit.html)声明。

-   [](<>) [`--复制忽略数据库=*`db\_名称`*`](replication-options-replica.html#option_mysqld_replicate-ignore-db)

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

    | 命令行格式 | `--复制忽略db=name` |
    | ----- | --------------- |
    | 类型 | 一串 |

    使用数据库的名称创建复制筛选器。也可以使用[`更改复制筛选器复制\u忽略\u数据库`](change-replication-filter.html).

    此选项支持特定于通道的复制筛选器，使多源副本能够对不同的源使用特定的筛选器。在名为的通道上配置特定于通道的复制筛选器*`频道1`*使用`--复制忽略数据库：*`频道1`*:*`db\_名称`*`.在本例中，第一个冒号被解释为分隔符，后面的冒号是文字冒号。看见[第17.2.5.4节，“基于复制通道的过滤器”](replication-rules-channel-based-filters.html)了解更多信息。

    笔记

    全局复制筛选器不能用于为组复制配置的MySQL服务器实例，因为在某些服务器上过滤事务会使组无法就一致状态达成一致。特定于通道的复制筛选器可用于不直接涉及组复制的复制通道，例如组成员还充当组外源的副本的情况。它们不能在地面上使用`组复制应用程序`或`组_复制_恢复`频道。

    要指定要忽略的多个数据库，请多次使用此选项，每个数据库一次。因为数据库名称可以包含逗号，所以如果提供逗号分隔的列表，它将被视为单个数据库的名称。

    就像[`--复制do数据库`](replication-options-replica.html#option_mysqld_replicate-do-db)，此筛选的确切效果取决于使用的是基于语句的复制还是基于行的复制，下面几段将对此进行描述。

    **基于语句的复制。**告诉复制SQL线程不要复制默认数据库（即[`使用`](use.html))是吗*`db_名称`*.

    **基于行的复制。**告诉复制SQL线程不要更新数据库中的任何表*`db_名称`*。默认数据库无效。

    当使用基于语句的复制时，下面的示例并不像您预期的那样工作。假设复制副本以[`--复制忽略db=销售`](replication-options-replica.html#option_mysqld_replicate-ignore-db)你在来源上发表了以下声明：

    ```
    USE prices;
    UPDATE sales.january SET amount=amount+1000;
    ```

    这个[`使现代化`](update.html)陈述*是*在这种情况下复制是因为[`--复制忽略数据库`](replication-options-replica.html#option_mysqld_replicate-ignore-db)仅适用于默认数据库（由[`使用`](use.html)声明）。因为`出售`数据库已在语句中显式指定，但尚未筛选该语句。但是，在使用基于行的复制时[`使现代化`](update.html)声明的影响是*不*已传播到复制副本，并且复制副本的`出售。一月`表未更改；在这种情况下，[`--复制忽略db=销售`](replication-options-replica.html#option_mysqld_replicate-ignore-db)原因*全部的*对源副本中的表所做的更改`出售`复制副本将忽略的数据库。

    如果正在使用跨数据库更新，并且不希望复制这些更新，则不应使用此选项。看见[第17.2.5节，“服务器如何评估复制筛选规则”](replication-rules.html).

    如果需要跨数据库更新才能工作，请使用[`--复制野生忽略表=*`db\_名称`*.%`](replication-options-replica.html#option_mysqld_replicate-wild-ignore-table)相反看见[第17.2.5节，“服务器如何评估复制筛选规则”](replication-rules.html).

    笔记

    此选项影响复制的方式与[`--binlog忽略数据库`](replication-options-binary-log.html#option_mysqld_binlog-ignore-db)影响二进制日志记录，以及复制格式对[`--复制忽略数据库`](replication-options-replica.html#option_mysqld_replicate-ignore-db)对复制行为的影响与日志记录格式对复制行为的影响相同[`--binlog忽略数据库`](replication-options-binary-log.html#option_mysqld_binlog-ignore-db).

    这个选项对你没有影响[`开始`](commit.html), [`犯罪`](commit.html)或[`回降`](commit.html)声明。

-   [](<>) [`--复制do表=*`db\_名称。tbl\_名称`*`](replication-options-replica.html#option_mysqld_replicate-do-table)

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

    | 命令行格式 | `--复制do table=name` |
    | ----- | ------------------- |
    | 类型 | 一串 |

    通过告诉复制SQL线程将复制限制到给定表来创建复制筛选器。要指定多个表，请多次使用此选项，每个表一次。这适用于跨数据库更新和默认数据库更新，而不是[`--复制do数据库`](replication-options-replica.html#option_mysqld_replicate-do-db)看见[第17.2.5节，“服务器如何评估复制筛选规则”](replication-rules.html)。您也可以通过发出[`更改复制筛选器复制_DO_表`](change-replication-filter.html)陈述

    此选项支持特定于通道的复制筛选器，使多源副本能够对不同的源使用特定的筛选器。在名为的通道上配置特定于通道的复制筛选器*`频道1`*使用`--复制do表：*`频道1`*:*`db\_名称。tbl\_名称`*`.在本例中，第一个冒号被解释为分隔符，后面的冒号是文字冒号。看见[第17.2.5.4节，“基于复制通道的过滤器”](replication-rules-channel-based-filters.html)了解更多信息。

    笔记

    全局复制筛选器不能用于为组复制配置的MySQL服务器实例，因为在某些服务器上过滤事务会使组无法就一致状态达成一致。特定于通道的复制筛选器可用于不直接涉及组复制的复制通道，例如组成员还充当组外源的副本的情况。它们不能在地面上使用`组复制应用程序`或`组_复制_恢复`频道。

    此选项仅影响应用于表的语句。它不会影响仅适用于其他数据库对象（如存储例程）的语句。要筛选在存储例程上运行的语句，请使用一个或多个`--复制-*-db`选项。

-   [](<>) [`--复制忽略表=*`db\_名称。tbl\_名称`*`](replication-options-replica.html#option_mysqld_replicate-ignore-table)

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

    | 命令行格式 | `--复制忽略表=名称` |
    | ----- | ------------ |
    | 类型 | 一串 |

    通过告诉复制SQL线程不要复制任何更新指定表的语句来创建复制筛选器，即使任何其他表可能被同一语句更新。要指定要忽略的多个表，请多次使用此选项，每个表一次。这适用于跨数据库更新，而不是[`--复制忽略数据库`](replication-options-replica.html#option_mysqld_replicate-ignore-db)看见[第17.2.5节，“服务器如何评估复制筛选规则”](replication-rules.html)。您也可以通过发出[`更改复制筛选器复制\u忽略\u表`](change-replication-filter.html)陈述

    此选项支持特定于通道的复制筛选器，使多源副本能够对不同的源使用特定的筛选器。在名为的通道上配置特定于通道的复制筛选器*`频道1`*使用`--复制忽略表：*`频道1`*:*`db\_名称。tbl\_名称`*`.在本例中，第一个冒号被解释为分隔符，后面的冒号是文字冒号。看见[第17.2.5.4节，“基于复制通道的过滤器”](replication-rules-channel-based-filters.html)了解更多信息。

    笔记

    全局复制筛选器不能用于为组复制配置的MySQL服务器实例，因为在某些服务器上过滤事务会使组无法就一致状态达成一致。特定于通道的复制筛选器可用于不直接涉及组复制的复制通道，例如组成员还充当组外源的副本的情况。它们不能在地面上使用`组复制应用程序`或`组_复制_恢复`频道。

    此选项仅影响应用于表的语句。它不会影响仅适用于其他数据库对象（如存储例程）的语句。要筛选在存储例程上运行的语句，请使用一个或多个`--复制-*-db`选项。

-   [](<>) [`--复制重写数据库=*`从你的名字`*->*`直呼其名`*`](replication-options-replica.html#option_mysqld_replicate-rewrite-db)

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

    | 命令行格式 | `--复制重写db=旧名称->新名称` |
    | ----- | ------------------- |
    | 类型 | 一串 |

    通知复制副本创建复制筛选器，将指定的数据库转换为*`直呼其名`*如果是的话*`从你的名字`*在源头上。只影响涉及表的语句，而不影响[`创建数据库`](create-database.html), [`删除数据库`](drop-database.html)和[`改变数据库`](alter-database.html).

    要指定多次重写，请多次使用此选项。服务器使用第一个带有*`从你的名字`*匹配的值。数据库名称转换完成*之前*这个`--复制-*`规则是经过检验的。您还可以通过发出[`更改复制筛选器复制\u重写\u数据库`](change-replication-filter.html)陈述

    如果你使用[`--复制重写数据库`](replication-options-replica.html#option_mysqld_replicate-rewrite-db)选项和`>`字符是命令解释器特有的，请引用选项值。例如：

    ```
    $> mysqld --replicate-rewrite-db="olddb->newdb"
    ```

    影响[`--复制重写数据库`](replication-options-replica.html#option_mysqld_replicate-rewrite-db)选项的不同取决于查询使用的是基于语句还是基于行的二进制日志记录格式。使用基于语句的格式，DML语句将根据[`使用`](use.html)陈述使用基于行的格式，DML语句将根据修改表所在的数据库进行翻译。DDL语句总是根据当前数据库进行筛选，如[`使用`](use.html)语句，而不考虑二进制日志记录格式。

    为了确保重写产生预期的结果，特别是与其他复制筛选选项结合使用时，请在使用[`--复制重写数据库`](replication-options-replica.html#option_mysqld_replicate-rewrite-db)选项：

    -   创建*`从你的名字`*和*`直呼其名`*使用不同的名称在源和复制副本上手动创建数据库。

    -   如果使用基于语句或混合二进制日志记录格式，请不要使用跨数据库查询，也不要在查询中指定数据库名称。对于DDL和DML语句，依赖[`使用`](use.html)语句指定当前数据库，并在查询中仅使用表名。

    -   如果专门使用基于行的二进制日志记录格式，对于DDL语句，请依赖[`使用`](use.html)语句指定当前数据库，并在查询中仅使用表名。对于DML语句，可以使用完全限定的表名(*`分贝`*.*`桌子`*)如果你愿意的话。

        如果遵循这些建议，使用[`--复制重写数据库`](replication-options-replica.html#option_mysqld_replicate-rewrite-db)选项与表级复制筛选选项结合使用，例如[`--复制do表`](replication-options-replica.html#option_mysqld_replicate-do-table).

        此选项支持特定于通道的复制筛选器，使多源副本能够对不同的源使用特定的筛选器。指定频道名称，后跟冒号，后跟筛选器规范。第一个冒号被解释为分隔符，任何后续冒号都被解释为文字冒号。例如，要在名为*`频道1`*，使用：

    ```
    $> mysqld --replicate-rewrite-db=channel_1:db_name1->db_name2
    ```

    如果使用冒号但未指定通道名称，则该选项会为默认复制通道配置复制筛选器。看见[第17.2.5.4节，“基于复制通道的过滤器”](replication-rules-channel-based-filters.html)了解更多信息。

    笔记

    全局复制筛选器不能用于为组复制配置的MySQL服务器实例，因为在某些服务器上过滤事务会使组无法就一致状态达成一致。特定于通道的复制筛选器可用于不直接涉及组复制的复制通道，例如组成员还充当组外源的副本的情况。它们不能在地面上使用`组复制应用程序`或`组_复制_恢复`频道。

-   [](<>) [`--复制相同的服务器id`](replication-options-replica.html#option_mysqld_replicate-same-server-id)

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

    | 命令行格式 | `--复制相同的服务器id[={OFF | ON}]` |
    | ----- | --------------------------- |
    | 类型 | 布尔值 |
    | 默认值 | `关` |

    此选项用于复制副本。默认值为0(`错误的`)。将此选项设置为1(`符合事实的`)，复制副本不会跳过具有自己的服务器ID的事件。此设置通常仅在罕见的配置中有用。

    在副本上启用二进制日志记录时[`--复制相同的服务器id`](replication-options-replica.html#option_mysqld_replicate-same-server-id)和[`--日志从属更新`](replication-options-binary-log.html#sysvar_log_slave_updates)如果服务器是循环复制拓扑的一部分，副本上的选项可能会导致复制中出现无限循环。（在MySQL 8.0中，默认情况下启用二进制日志记录，启用二进制日志记录时，默认情况下启用副本更新日志记录。）然而，全局事务标识符（GTID）的使用通过跳过已经应用的事务的执行来防止这种情况。如果[`gtid_模式=开启`](replication-options-gtids.html#sysvar_gtid_mode)如果在复制副本上设置，则可以使用此选项组合启动服务器，但在服务器运行时不能更改为任何其他GTID模式。如果设置了任何其他GTID模式，则服务器不会使用此选项组合启动。

    默认情况下，复制I/O（接收器）线程不会将二进制日志事件写入中继日志（如果它们具有复制副本的服务器ID）（此优化有助于节省磁盘使用）。如果你想用[`--复制相同的服务器id`](replication-options-replica.html#option_mysqld_replicate-same-server-id)，请确保在使复制副本读取自己希望复制SQL（applier）线程执行的事件之前，使用此选项启动复制副本。

-   [](<>) [`--复制野生do表=*`db\_名称。tbl\_名称`*`](replication-options-replica.html#option_mysqld_replicate-wild-do-table)

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

    | 命令行格式 | `--复制wild do table=name` |
    | ----- | ------------------------ |
    | 类型 | 一串 |

    通过告诉复制SQL（applier）线程将复制限制为任何更新的表与指定的数据库和表名模式匹配的语句，创建复制筛选器。模式可以包含`%`和`_`通配符，其含义与[`喜欢`](string-comparison-functions.html#operator_like)模式匹配算子。要指定多个表，请多次使用此选项，每个表一次。这适用于跨数据库更新。看见[第17.2.5节，“服务器如何评估复制筛选规则”](replication-rules.html)。您也可以通过发出[`更改复制筛选器复制\u WILD\u DO\u表`](change-replication-filter.html)陈述

    此选项支持特定于通道的复制筛选器，使多源副本能够对不同的源使用特定的筛选器。在名为的通道上配置特定于通道的复制筛选器*`频道1`*使用`--复制wild do表格：*`频道1`*:*`db\_名称。tbl\_名称`*`.在本例中，第一个冒号被解释为分隔符，后面的冒号是文字冒号。看见[第17.2.5.4节，“基于复制通道的过滤器”](replication-rules-channel-based-filters.html)了解更多信息。

    重要的

    全局复制筛选器不能用于为组复制配置的MySQL服务器实例，因为在某些服务器上过滤事务会使组无法就一致状态达成一致。特定于通道的复制筛选器可用于不直接涉及组复制的复制通道，例如组成员还充当组外源的副本的情况。它们不能在地面上使用`组复制应用程序`或`组_复制_恢复`频道。

    由指定的复制筛选器[`--复制野生do表`](replication-options-replica.html#option_mysqld_replicate-wild-do-table)选项适用于表、视图和触发器。它不适用于存储过程、函数或事件。要筛选在后一个对象上运行的语句，请使用以下一个或多个`--复制-*-db`选项。

    例如，[`--复制wild do table=foo%。巴%`](replication-options-replica.html#option_mysqld_replicate-wild-do-table)仅复制使用数据库名称以开头的表的更新`福`表名以`酒吧`.

    如果表名模式为`%`，它匹配任何表名，该选项也适用于数据库级语句([`创建数据库`](create-database.html), [`删除数据库`](drop-database.html)和[`改变数据库`](alter-database.html)).例如，如果您使用[`--复制野生do表=foo%。%`](replication-options-replica.html#option_mysqld_replicate-wild-do-table)，如果数据库名称与模式匹配，则复制数据库级语句`foo%`.

    重要的

    表级复制筛选器仅应用于查询中明确提及并操作的表。它们不适用于由查询隐式更新的表。例如，一个[`授予`](grant.html)语句，它更新了`mysql。使用者`系统表但未提及该表，不受指定`mysql.%`作为通配符模式。

    要在数据库或表名模式中包含文字通配符，请使用反斜杠将其转义。例如，复制名为`我自己的%db`，但不从`my1ownAABCdb`数据库，你应该逃出`_`和`%`像这样的角色：[`--复制wild do table=my\_own\%db`](replication-options-replica.html#option_mysqld_replicate-wild-do-table)。如果使用命令行上的选项，可能需要将反斜杠加倍或引用选项值，具体取决于命令解释器。例如**猛击**shell，你需要打字[`--复制wild do table=my\\\u own\\%db`](replication-options-replica.html#option_mysqld_replicate-wild-do-table).

-   [](<>) [`--复制野生忽略表=*`db\_名称。tbl\_名称`*`](replication-options-replica.html#option_mysqld_replicate-wild-ignore-table)

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

    | 命令行格式 | `--复制野生忽略表=名称` |
    | ----- | -------------- |
    | 类型 | 一串 |

    创建复制筛选器，以防止复制SQL线程复制任何表都与给定通配符模式匹配的语句。要指定要忽略的多个表，请多次使用此选项，每个表一次。这适用于跨数据库更新。看见[第17.2.5节，“服务器如何评估复制筛选规则”](replication-rules.html)。您也可以通过发出[`更改复制筛选器复制\u野生\u忽略\u表`](change-replication-filter.html)陈述

    此选项支持特定于通道的复制筛选器，使多源副本能够对不同的源使用特定的筛选器。在名为的通道上配置特定于通道的复制筛选器*`频道1`*使用`--复制野生忽略：*`频道1`*:*`db\_名称。tbl\_名称`*`.在本例中，第一个冒号被解释为分隔符，后面的冒号是文字冒号。看见[第17.2.5.4节，“基于复制通道的过滤器”](replication-rules-channel-based-filters.html)了解更多信息。

    重要的

    全局复制筛选器不能用于为组复制配置的MySQL服务器实例，因为在某些服务器上过滤事务会使组无法就一致状态达成一致。特定于通道的复制筛选器可用于不直接涉及组复制的复制通道，例如组成员还充当组外源的副本的情况。它们不能在地面上使用`组复制应用程序`或`组_复制_恢复`频道。

    例如，[`--复制野生忽略表=foo%。巴%`](replication-options-replica.html#option_mysqld_replicate-wild-ignore-table)不复制使用数据库名称以开头的表的更新`福`表名以`酒吧`。有关匹配工作原理的信息，请参阅[`--复制野生do表`](replication-options-replica.html#option_mysqld_replicate-wild-do-table)选项在选项值中包含文字通配符的规则与[`--复制野生忽略表`](replication-options-replica.html#option_mysqld_replicate-wild-ignore-table)也

    重要的

    表级复制筛选器仅应用于查询中明确提及并操作的表。它们不适用于由查询隐式更新的表。例如，一个[`授予`](grant.html)语句，它更新了`mysql。使用者`系统表但未提及该表，不受指定`mysql.%`作为通配符模式。

    如果你需要过滤掉[`授予`](grant.html)声明或其他管理声明，一个可能的解决方法是使用[`--复制忽略数据库`](replication-options-replica.html#option_mysqld_replicate-ignore-db)滤器此筛选器在当前有效的默认数据库上运行，由[`使用`](use.html)陈述因此，您可以创建一个过滤器来忽略未复制数据库的语句，然后发出[`使用`](use.html)语句，以便在发出任何要忽略的管理语句之前立即将默认数据库切换到该数据库。在管理语句中，命名应用该语句的实际数据库。

    例如，如果[`--复制忽略数据库=未复制`](replication-options-replica.html#option_mysqld_replicate-ignore-db)在副本服务器上配置时，以下语句序列会导致[`授予`](grant.html)语句被忽略，因为默认数据库`无重复`实际上：

    ```
    USE nonreplicated;
    GRANT SELECT, INSERT ON replicated.t1 TO 'someuser'@'somehost';
    ```

-   [](<>) [`--跳过副本启动`](replication-options-replica.html#option_mysqld_skip-replica-start)

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

    | 命令行格式 | `--跳过副本开始[={OFF | ON}]` |
    | ----- | ----------------------- |
    | 介绍 | 8.0.26 |
    | 系统变量 | `[skip_replica_start]（replication options replica.html#sysvar_skip_replica_start）` |
    | 范围 | 全球的 |
    | 动态 | 不 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 布尔值 |
    | 默认值 | `关` |

    在MySQL 8.0.26中，使用[`--跳过副本启动`](replication-options-replica.html#option_mysqld_skip-replica-start)代替[`--跳过从机启动`](replication-options-replica.html#option_mysqld_skip-slave-start)，该版本已弃用。在MySQL 8.0.26之前的版本中，使用[`--跳过从机启动`](replication-options-replica.html#option_mysqld_skip-slave-start).

    [`--跳过副本启动`](replication-options-replica.html#option_mysqld_skip-replica-start)通知副本服务器在服务器启动时不要启动复制I/O（接收器）和SQL（应用程序）线程。要稍后启动线程，请使用[`开始复制`](start-replica.html)陈述

    你可以使用[`跳过副本开始`](replication-options-replica.html#sysvar_skip_replica_start)系统变量代替命令行选项，允许使用MySQL服务器的特权结构访问此功能，这样数据库管理员就不需要对操作系统进行任何特权访问。

-   [](<>) [`--跳过从机启动`](replication-options-replica.html#option_mysqld_skip-slave-start)

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

    | 命令行格式 | `--跳过从机启动[={OFF | ON}]` |
    | ----- | ----------------------- |
    | 反对 | 8.0.26 |
    | 系统变量 | `[skip_slave_start]（复制选项replica.html#sysvar_skip_slave_start）` |
    | 范围 | 全球的 |
    | 动态 | 不 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 布尔值 |
    | 默认值 | `关` |

    从MySQL 8.0.26开始，[`--跳过从机启动`](replication-options-replica.html#option_mysqld_skip-slave-start)已弃用，且别名[`--跳过副本启动`](replication-options-replica.html#option_mysqld_skip-replica-start)应该改用。在MySQL 8.0.26之前的版本中，使用[`--跳过从机启动`](replication-options-replica.html#option_mysqld_skip-slave-start).

    通知副本服务器在服务器启动时不要启动复制I/O（接收器）和SQL（应用程序）线程。要稍后启动线程，请使用[`开始复制`](start-replica.html)陈述

    在MySQL 8.0.24中，您可以使用[`跳过从站开始`](replication-options-replica.html#sysvar_skip_slave_start)系统变量代替命令行选项，允许使用MySQL服务器的特权结构访问此功能，这样数据库管理员就不需要对操作系统进行任何特权访问。

-   [](<>) [`--从机跳过错误=[*`错误代码1`*,*`错误代码2`*,...|所有| ddl_存在_错误]`](replication-options-replica.html#option_mysqld_slave-skip-errors)

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

    | 命令行格式 | `--从机跳过错误=名称` |
    | ----- | ------------- |
    | 反对 | 8.0.26 |
    | 系统变量 | `[slave_skip_errors]（复制选项replica.html#sysvar_slave_skip_errors）` |
    | 范围 | 全球的 |
    | 动态 | 不 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 一串 |
    | 默认值 | `关` |
    | 有效值 | `关`<br/><br/>`[错误代码列表]`<br/><br/>`全部的`<br/><br/>`ddl_存在错误` |

    通常，复制副本出现错误时，复制会停止，这使您有机会手动解决数据中的不一致性。当语句返回选项值中列出的任何错误时，此选项会使复制SQL线程继续复制。

    除非您完全理解出错的原因，否则不要使用此选项。如果复制设置和客户端程序中没有错误，MySQL本身也没有错误，那么就永远不会发生停止复制的错误。不加选择地使用此选项会导致副本与源极不同步，您不知道为什么会发生这种情况。

    对于错误代码，您应该在复制副本的错误日志和输出中使用错误消息提供的数字[`显示副本状态`](show-replica-status.html). [附录B，*错误消息和常见问题*](error-handling.html)，列出服务器错误代码。

    速记值`ddl_存在错误`相当于错误代码列表`1007,1008,1050,1051,1054,1060,1061,1068,1094,1146`.

    你也可以（但不应该）使用`全部的`使复制副本忽略所有错误消息并继续运行，无论发生什么情况。不用说，如果你使用`全部的`，我们无法保证您的数据的完整性。在这种情况下，如果复制副本的数据与源上的数据不接近，请不要抱怨（或提交错误报告）。*你被警告了*.

    在NDB群集之间进行复制时，由于内部[`NDB`](mysql-cluster.html)检查历元序列号的机制；通常，只要`NDB`如果检测到一个历元号丢失或顺序不正确，它会立即停止复制应用程序线程。从NDB 8.0.28开始，您可以通过指定[`--ndb应用程序允许跳过历元`](mysql-cluster-options-variables.html#option_mysqld_ndb-applier-allow-skip-epoch)连同`--从机跳过错误`; 这样做会导致`NDB`忽略跳过的历元事务。

    例如：

    ```
    --slave-skip-errors=1062,1053
    --slave-skip-errors=all
    --slave-skip-errors=ddl_exist_errors
    ```

-   [](<>) [`--从属sql验证校验和={0 | 1}`](replication-options-replica.html#option_mysqld_slave-sql-verify-checksum)

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

    | 命令行格式 | `--从属sql验证校验和[={OFF | ON}]` |
    | ----- | --------------------------- |
    | 类型 | 布尔值 |
    | 默认值 | `在…上` |

    启用此选项后，复制副本将检查从中继日志读取的校验和。在不匹配的情况下，复制副本会因错误而停止。

    MySQL测试套件在内部使用以下选项进行复制测试和调试。它们不适用于生产环境。

-   [](<>) [`--中止从属事件计数`](replication-options-replica.html#option_mysqld_abort-slave-event-count)

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

    | 命令行格式 | `--中止从属事件计数=#` |
    | ----- | -------------- |
    | 反对 | 8.0.29 |
    | 类型 | 整数 |
    | 默认值 | `0` |
    | 最小值 | `0` |

    当此选项设置为某个正整数时*`价值`*除0（默认值）外，它会对复制行为产生如下影响：复制SQL线程启动后，*`价值`*允许执行日志事件；之后，复制SQL线程不再接收任何事件，就像源的网络连接被切断一样。复制SQL线程继续运行，并且[`显示副本状态`](show-replica-status.html)展示`对`在这两方面`正在运行的复制副本`还有`副本\u SQL\u正在运行`列，但不会从中继日志中读取更多事件。

    MySQL测试套件在内部使用此选项进行复制测试和调试。它不适用于生产环境。从MySQL 8.0.29开始，它已被弃用，并可能在未来的MySQL版本中被删除。

-   [](<>) [`--断开从属事件计数`](replication-options-replica.html#option_mysqld_disconnect-slave-event-count)

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

    | 命令行格式 | `--断开从属事件计数=#` |
    | ----- | -------------- |
    | 反对 | 8.0.29 |
    | 类型 | 整数 |
    | 默认值 | `0` |

    MySQL测试套件在内部使用此选项进行复制测试和调试。它不适用于生产环境。从MySQL 8.0.29开始，它已被弃用，并可能在未来的MySQL版本中被删除。

##### 副本服务器上使用的系统变量

以下列表描述了用于控制副本服务器的系统变量。它们可以在服务器启动时设置，其中一些可以在运行时使用[`设置`](set-variable.html).本节前面列出了用于复制副本的服务器选项。

-   [](<>) [`初始复制`](replication-options-replica.html#sysvar_init_replica)

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

    | 命令行格式 | `--init replica=name` |
    | ----- | --------------------- |
    | 介绍 | 8.0.26 |
    | 系统变量 | `[init_replica]（replication options replica.html#sysvar_init_replica）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 一串 |

    在MySQL 8.0.26中，使用[`初始复制`](replication-options-replica.html#sysvar_init_replica)代替[`init_slave`](replication-options-replica.html#sysvar_init_slave)，该版本已弃用。在MySQL 8.0.26之前的版本中，使用[`init_slave`](replication-options-replica.html#sysvar_init_slave).

    [`初始复制`](replication-options-replica.html#sysvar_init_replica)类似于[`init_connect`](server-system-variables.html#sysvar_init_connect)，但是副本服务器每次启动复制SQL线程时要执行的字符串。字符串的格式与[`init_connect`](server-system-variables.html#sysvar_init_connect)变量此变量的设置对后续操作生效[`开始复制`](start-replica.html)声明。

    笔记

    复制SQL线程在执行之前向客户端发送确认[`初始复制`](replication-options-replica.html#sysvar_init_replica).因此，不能保证[`初始复制`](replication-options-replica.html#sysvar_init_replica)被执行时[`开始复制`](start-replica.html)返回。看见[第13.4.2.8节“开始副本声明”](start-replica.html)了解更多信息。

-   [](<>) [`init_slave`](replication-options-replica.html#sysvar_init_slave)

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

    | 命令行格式 | `--init slave=name` |
    | ----- | ------------------- |
    | 反对 | 8.0.26 |
    | 系统变量 | `[init_slave]（复制选项replica.html#sysvar_init_slave）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 一串 |

    从MySQL 8.0.26开始，[`init_slave`](replication-options-replica.html#sysvar_init_slave)已弃用，且别名[`初始复制`](replication-options-replica.html#sysvar_init_replica)应该改用。在MySQL 8.0.26之前的版本中，使用[`init_slave`](replication-options-replica.html#sysvar_init_slave).

    [`init_slave`](replication-options-replica.html#sysvar_init_slave)类似于[`init_connect`](server-system-variables.html#sysvar_init_connect)，但是副本服务器每次启动复制SQL线程时要执行的字符串。字符串的格式与[`init_connect`](server-system-variables.html#sysvar_init_connect)变量此变量的设置对后续操作生效[`开始复制`](start-replica.html)声明。

    笔记

    复制SQL线程在执行之前向客户端发送确认[`init_slave`](replication-options-replica.html#sysvar_init_slave).因此，不能保证[`init_slave`](replication-options-replica.html#sysvar_init_slave)被执行时[`开始复制`](start-replica.html)返回。看见[第13.4.2.8节“开始副本声明”](start-replica.html)了解更多信息。

-   [](<>) [`记录_slow _replica _语句`](replication-options-replica.html#sysvar_log_slow_replica_statements)

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

    | 命令行格式 | `--记录慢速复制语句[={OFF | ON}]` |
    | ----- | ------------------------- |
    | 介绍 | 8.0.26 |
    | 系统变量 | `[log_slow_replica_statements]（replication options replica.html#sysvar_log_slow_replica_statements）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 布尔值 |
    | 默认值 | `关` |

    在MySQL 8.0.26中，使用[`记录_slow _replica _语句`](replication-options-replica.html#sysvar_log_slow_replica_statements)代替[`日志\u slow\u slave\u语句`](replication-options-replica.html#sysvar_log_slow_slave_statements)，该版本已弃用。在MySQL 8.0.26之前的版本中，使用[`日志\u slow\u slave\u语句`](replication-options-replica.html#sysvar_log_slow_slave_statements).

    启用慢速查询日志时，[`记录_slow _replica _语句`](replication-options-replica.html#sysvar_log_slow_replica_statements)允许记录花费超过[`很长时间`](server-system-variables.html#sysvar_long_query_time)在复制副本上执行的秒数。请注意，如果正在使用基于行的复制([`binlog_格式=行`](replication-options-binary-log.html#sysvar_binlog_format)), [`记录_slow _replica _语句`](replication-options-replica.html#sysvar_log_slow_replica_statements)没有效果。当查询以语句格式记录在二进制日志中时，即[`binlog_format=语句`](replication-options-binary-log.html#sysvar_binlog_format)是设定的，还是什么时候[`binlog_格式=混合`](replication-options-binary-log.html#sysvar_binlog_format)并以语句格式记录该语句。以行格式记录的慢速查询[`binlog_格式=混合`](replication-options-binary-log.html#sysvar_binlog_format)已设置，或在[`binlog_格式=行`](replication-options-binary-log.html#sysvar_binlog_format)已设置，则不会添加到副本的慢速查询日志中，即使[`记录_slow _replica _语句`](replication-options-replica.html#sysvar_log_slow_replica_statements)已启用。

    背景[`记录_slow _replica _语句`](replication-options-replica.html#sysvar_log_slow_replica_statements)没有立竿见影的效果。变量的状态适用于所有后续变量[`开始复制`](start-replica.html)声明。还要注意的是[`很长时间`](server-system-variables.html#sysvar_long_query_time)适用于SQL线程的生存期。如果更改该设置，则必须停止并重新启动复制SQL线程，以在那里实现更改（例如，通过发出[`停止复制`](stop-replica.html)和[`开始复制`](start-replica.html)与`SQL_线程`选项）。

-   [](<>) [`日志\u slow\u slave\u语句`](replication-options-replica.html#sysvar_log_slow_slave_statements)

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

    | 命令行格式 | `--记录慢速从属语句[={OFF | ON}]` |
    | ----- | ------------------------- |
    | 反对 | 8.0.26 |
    | 系统变量 | `[log_slow_slave_语句]（复制选项replica.html#sysvar_log_slow_slave_语句）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 布尔值 |
    | 默认值 | `关` |

    从MySQL 8.0.26开始，[`日志\u slow\u slave\u语句`](replication-options-replica.html#sysvar_log_slow_slave_statements)已弃用，且别名[`记录_slow _replica _语句`](replication-options-replica.html#sysvar_log_slow_replica_statements)应该改用。在MySQL 8.0.26之前的版本中，使用[`日志\u slow\u slave\u语句`](replication-options-replica.html#sysvar_log_slow_slave_statements).

    启用慢速查询日志时，[`日志\u slow\u slave\u语句`](replication-options-replica.html#sysvar_log_slow_slave_statements)允许记录花费超过[`很长时间`](server-system-variables.html#sysvar_long_query_time)在复制副本上执行的秒数。请注意，如果正在使用基于行的复制([`binlog_格式=行`](replication-options-binary-log.html#sysvar_binlog_format)), [`日志\u slow\u slave\u语句`](replication-options-replica.html#sysvar_log_slow_slave_statements)没有效果。当查询以语句格式记录在二进制日志中时，即[`binlog_format=语句`](replication-options-binary-log.html#sysvar_binlog_format)是设定的，还是什么时候[`binlog_格式=混合`](replication-options-binary-log.html#sysvar_binlog_format)并以语句格式记录该语句。以行格式记录的慢速查询[`binlog_格式=混合`](replication-options-binary-log.html#sysvar_binlog_format)已设置，或在[`binlog_格式=行`](replication-options-binary-log.html#sysvar_binlog_format)已设置，则不会添加到副本的慢速查询日志中，即使[`日志\u slow\u slave\u语句`](replication-options-replica.html#sysvar_log_slow_slave_statements)已启用。

    背景[`日志\u slow\u slave\u语句`](replication-options-replica.html#sysvar_log_slow_slave_statements)没有立竿见影的效果。变量的状态适用于所有后续变量[`开始复制`](start-replica.html)声明。还要注意的是[`很长时间`](server-system-variables.html#sysvar_long_query_time)适用于SQL线程的生存期。如果更改该设置，则必须停止并重新启动复制SQL线程，以在那里实现更改（例如，通过发出[`停止复制`](stop-replica.html)和[`开始复制`](start-replica.html)与`SQL_线程`选项）。

-   [](<>) [`主信息存储库`](replication-options-replica.html#sysvar_master_info_repository)

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

    | 命令行格式 | `--主信息存储库={FILE | TABLE}` |
    | ----- | ------------------------- |
    | 反对 | 8.0.23 |
    | 系统变量 | `[master_info_repository]（复制选项replica.html#sysvar_master_info_repository）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 一串 |
    | 默认值 | `桌子` |
    | 有效值 | `文件`<br/><br/>`桌子` |

    现在不推荐使用此系统变量。背景`桌子`是默认值，并且在配置多个复制通道时是必需的。另一种设置`文件`以前被弃用过。

    在默认设置下，复制副本将有关源的元数据（包括状态和连接信息）记录到`InnoDB`餐桌`mysql`系统数据库名为`mysql。奴隶主信息`。有关连接元数据存储库的更多信息，请参阅[第17.2.4节，“中继日志和复制元数据存储库”](replica-logs.html).

    这个`文件`设置将复制副本的连接元数据存储库写入一个名为`主人信息`默认情况下。可以使用[`--主信息文件`](replication-options-replica.html#option_mysqld_master-info-file)选项

-   [](<>) [`最大继电器日志大小`](replication-options-replica.html#sysvar_max_relay_log_size)

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

    | 命令行格式 | `--最大中继日志大小=#` |
    | ----- | -------------- |
    | 系统变量 | `[max_relay_log_size]（复制选项replica.html#sysvar_max_relay_log_size）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |
    | 默认值 | `0` |
    | 最小值 | `0` |
    | 最大值 | `1073741824` |
    | 块大小 | `4096` |

    如果复制副本对其中继日志的写入导致当前日志文件大小超过此变量的值，则复制副本会旋转中继日志（关闭当前文件并打开下一个文件）。如果[`最大继电器日志大小`](replication-options-replica.html#sysvar_max_relay_log_size)是0，服务器使用[`最大尺寸`](replication-options-binary-log.html#sysvar_max_binlog_size)用于二进制日志和中继日志。如果[`最大继电器日志大小`](replication-options-replica.html#sysvar_max_relay_log_size)大于0时，它会约束中继日志的大小，这使您可以为两个日志设置不同的大小。你必须定下来[`最大继电器日志大小`](replication-options-replica.html#sysvar_max_relay_log_size)介于4096字节和1GB（含）之间，或0。默认值为0。看见[第17.2.3节，“复制线程”](replication-implementation-details.html).

-   [](<>) [`中继日志`](replication-options-replica.html#sysvar_relay_log)

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

    | 命令行格式 | `--中继日志=文件名` |
    | ----- | ------------ |
    | 系统变量 | `[relay_log]（复制选项replica.html#sysvar_relay_log）` |
    | 范围 | 全球的 |
    | 动态 | 不 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 文件名 |

    中继日志文件的基本名称。对于默认复制通道，中继日志的默认基本名称为`*`主机名`*-中继箱`。对于非默认复制通道，中继日志的默认基本名称为`*`主机名`*-中继箱-*`频道`*`哪里*`频道`*是记录在此中继日志中的复制通道的名称。

    服务器将文件写入数据目录，除非基名称带有前导绝对路径名，以指定不同的目录。服务器通过向基名称添加数字后缀，按顺序创建中继日志文件。

    复制服务器上的中继日志和中继日志索引的名称不能与二进制日志和二进制日志索引的名称相同，后者的名称由[`--木箱`](replication-options-binary-log.html#option_mysqld_log-bin)和[`--日志箱索引`](replication-options-binary-log.html#option_mysqld_log-bin-index)选项。如果二进制日志和中继日志文件的基本名称相同，服务器将发出错误消息，并且不会启动。

    由于MySQL解析服务器选项的方式，如果在服务器启动时指定此变量，则必须提供一个值；*只有在未实际指定该选项时，才会使用默认基名称*.如果您指定[`中继日志`](replication-options-replica.html#sysvar_relay_log)系统变量在服务器启动时未指定值，可能会导致意外行为；此行为取决于所使用的其他选项、指定它们的顺序，以及它们是在命令行还是在选项文件中指定的。有关MySQL如何处理服务器选项的更多信息，请参阅[第4.2.2节“指定程序选项”](program-options.html).

    如果指定此变量，指定的值也将用作中继日志索引文件的基本名称。通过使用[`中继日志索引`](replication-options-replica.html#sysvar_relay_log_index)系统变量。

    当服务器从索引文件中读取条目时，它会检查该条目是否包含相对路径。如果是，则使用[`中继日志`](replication-options-replica.html#sysvar_relay_log)系统变量。绝对路径不变；在这种情况下，必须手动编辑索引以启用新路径。

    你可以找到[`中继日志`](replication-options-replica.html#sysvar_relay_log)在执行以下任务时有用的系统变量：

    -   创建名称独立于主机名的中继日志。

    -   如果您需要将中继日志放在数据目录之外的某个区域，因为您的中继日志往往非常大，并且您不想减少[`最大继电器日志大小`](replication-options-replica.html#sysvar_max_relay_log_size).

    -   通过在磁盘之间使用负载平衡来提高速度。

        可以从中获取中继日志文件名（和路径）[`中继\u日志\u基本名称`](replication-options-replica.html#sysvar_relay_log_basename)系统变量。

-   [](<>) [`中继\u日志\u基本名称`](replication-options-replica.html#sysvar_relay_log_basename)

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

    | 系统变量 | `[relay_log_basename]（复制选项replica.html#sysvar_relay_log_basename）` |
    | ---- | ------------------------------------------------------------------ |
    | 范围 | 全球的 |
    | 动态 | 不 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 文件名 |
    | 默认值 | `datadir+'/'+主机名+'-中继站'` |

    保存中继日志文件的基本名称和完整路径。最大可变长度为256。此变量由服务器设置，为只读。

-   [](<>) [`中继日志索引`](replication-options-replica.html#sysvar_relay_log_index)

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

    | 命令行格式 | `--中继日志索引=文件名` |
    | ----- | -------------- |
    | 系统变量 | `[relay_log_index]（replication options replica.html#sysvar_relay_log_index）` |
    | 范围 | 全球的 |
    | 动态 | 不 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 文件名 |
    | 默认值 | `*主机名*-中继箱。指数` |

    中继日志索引文件的名称。最大可变长度为256。如果未指定此变量，但[`中继日志`](replication-options-replica.html#sysvar_relay_log)指定系统变量后，其值将用作中继日志索引文件的默认基名称。如果[`中继日志`](replication-options-replica.html#sysvar_relay_log)也未指定，则对于默认复制通道，默认名称为`*`主机名`*-接力箱。指数`，使用主机的名称。对于非默认复制通道，默认名称为`*`主机名`*-中继箱-*`频道`*.索引`哪里*`频道`*是记录在此中继日志索引中的复制通道的名称。

    中继日志文件的默认位置是数据目录，或使用[`中继日志`](replication-options-replica.html#sysvar_relay_log)系统变量。你可以使用[`中继日志索引`](replication-options-replica.html#sysvar_relay_log_index)系统变量来指定替代位置，方法是将前导绝对路径名添加到基名称以指定不同的目录。

    复制服务器上的中继日志和中继日志索引的名称不能与二进制日志和二进制日志索引的名称相同，后者的名称由[`--木箱`](replication-options-binary-log.html#option_mysqld_log-bin)和[`--日志箱索引`](replication-options-binary-log.html#option_mysqld_log-bin-index)选项。如果二进制日志和中继日志文件的基本名称相同，服务器将发出错误消息，并且不会启动。

    由于MySQL解析服务器选项的方式，如果在服务器启动时指定此变量，则必须提供一个值；*只有在未实际指定该选项时，才会使用默认基名称*.如果您指定[`中继日志索引`](replication-options-replica.html#sysvar_relay_log_index)系统变量在服务器启动时未指定值，可能会导致意外行为；此行为取决于所使用的其他选项、指定它们的顺序，以及它们是在命令行还是在选项文件中指定的。有关MySQL如何处理服务器选项的更多信息，请参阅[第4.2.2节“指定程序选项”](program-options.html).

-   [](<>) [`中继日志信息文件`](replication-options-replica.html#sysvar_relay_log_info_file)

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

    | 命令行格式 | `--中继日志信息文件=文件名` |
    | ----- | ---------------- |
    | 反对 | 8.0.18 |
    | 系统变量 | `[relay_log_info_file]（复制选项replica.html#sysvar_relay_log_info_file）` |
    | 范围 | 全球的 |
    | 动态 | 不 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 文件名 |
    | 默认值 | `中继日志。信息` |

    现在不推荐使用此系统变量。它用于设置复制副本的applier元数据存储库的文件名（如果需要）[`中继日志信息存储库=文件`](replication-options-replica.html#sysvar_relay_log_info_repository)一切都安排好了。[`中继日志信息文件`](replication-options-replica.html#sysvar_relay_log_info_file)以及[`中继日志信息存储库`](replication-options-replica.html#sysvar_relay_log_info_repository)不推荐使用系统变量，因为applier元数据存储库中的文件已被崩溃安全表取代。有关applier元数据存储库的信息，请参阅[第17.2.4.2节，“复制元数据存储库”](replica-logs-status.html).

-   [](<>) [`中继日志信息存储库`](replication-options-replica.html#sysvar_relay_log_info_repository)

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

    | 命令行格式 | `--中继日志信息存储库=值` |
    | ----- | --------------- |
    | 反对 | 8.0.23 |
    | 系统变量 | `[relay_log_info_repository]（replication options replica.html#sysvar_relay_log_info_repository）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 一串 |
    | 默认值 | `桌子` |
    | 有效值 | `文件`<br/><br/>`桌子` |

    现在不推荐使用此系统变量。背景`桌子`是默认值，并且在配置多个复制通道时是必需的。这个`桌子`还需要为复制副本的applier元数据存储库进行设置，以使复制能够适应意外中断。看见[第17.4.2节，“处理副本意外停止”](replication-solutions-unexpected-replica-halt.html)了解更多信息。另一种设置`文件`以前被弃用过。

    在默认设置下，复制副本将其applier元数据存储库存储为`InnoDB`餐桌`mysql`系统数据库名为`mysql。从属继电器日志信息`。有关applier元数据存储库的更多信息，请参阅[第17.2.4节，“中继日志和复制元数据存储库”](replica-logs.html).

    这个`文件`设置将复制副本的applier元数据存储库写入一个名为`中继日志。信息`默认情况下。可以使用[`中继日志信息文件`](replication-options-replica.html#sysvar_relay_log_info_file)系统变量。

-   [](<>) [`继电器\u日志\u清除`](replication-options-replica.html#sysvar_relay_log_purge)

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

    | 命令行格式 | `--继电器日志清除[={OFF | ON}]` |
    | ----- | ------------------------ |
    | 系统变量 | `[relay_log_purge]（复制选项replica.html#sysvar_relay_log_purge）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 布尔值 |
    | 默认值 | `在…上` |

    一旦不再需要中继日志文件，就禁用或启用自动清除。默认值为1(`在…上`).

-   [](<>) [`中继日志恢复`](replication-options-replica.html#sysvar_relay_log_recovery)

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

    | 命令行格式 | `--中继日志恢复[={OFF | ON}]` |
    | ----- | ----------------------- |
    | 系统变量 | `[relay_log_recovery]（复制选项replica.html#sysvar_relay_log_recovery）` |
    | 范围 | 全球的 |
    | 动态 | 不 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 布尔值 |
    | 默认值 | `关` |

    如果启用，此变量将在服务器启动后立即启用自动中继日志恢复。恢复过程创建一个新的中继日志文件，将SQL（applier）线程位置初始化为此新中继日志，并将I/O（receiver）线程初始化为applier线程位置。然后继续从源读取中继日志。如果`SOURCE_AUTO_POSITION=1`已使用为复制通道设置[`将复制源更改为`](change-replication-source-to.html)选项中，用于启动复制的源位置可能是连接中接收到的位置，而不是在此过程中分配的位置。

    此全局变量在运行时是只读的。它的值可以通过[`--中继日志恢复`](replication-options-replica.html#sysvar_relay_log_recovery)在副本服务器启动时的选项，该选项应在副本意外停止后使用，以确保不会处理可能损坏的中继日志，并且必须使用该选项以确保副本的崩溃安全。默认值为0（已禁用）。有关副本上最能适应意外中断的设置组合的信息，请参阅[第17.4.2节，“处理副本意外停止”](replication-solutions-unexpected-replica-halt.html).

    对于多线程复制副本（其中[`复制并行工作人员`](replication-options-replica.html#sysvar_replica_parallel_workers)或[`奴隶工人`](replication-options-replica.html#sysvar_slave_parallel_workers)大于0），设置[`--中继日志恢复`](replication-options-replica.html#sysvar_relay_log_recovery)启动时自动处理从中继日志执行的事务序列中的任何不一致和间隙。在使用基于文件位置的复制时，可能会出现这些间隙。（有关更多详细信息，请参阅[第17.5.1.34节，“复制和事务不一致”](replication-features-transaction-inconsistencies.html)中继日志恢复过程使用与[`开始复制，直到SQL\u在\u MTS\u间隙之后`](start-replica.html)声明会。当副本达到一致的无间隙状态时，中继日志恢复过程将继续从SQL（applier）线程位置开始从源获取更多事务。当使用基于GTID的复制时，从MySQL 8.0.18开始，多线程副本首先检查`主自动位置`即将`在…上`，如果是，则省略计算应跳过或不应跳过的事务的步骤，以便恢复过程不需要旧的中继日志。

    笔记

    此变量不影响以下组复制通道：

    -   `组复制应用程序`

    -   `组_复制_恢复`

        组上运行的任何其他通道都会受到影响，例如从外部源或其他组复制的通道。

-   [](<>) [`继电器日志空间限制`](replication-options-replica.html#sysvar_relay_log_space_limit)

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

    | 命令行格式 | `--继电器日志空间限制=#` |
    | ----- | --------------- |
    | 系统变量 | `[relay_log_space_limit]（replication options replica.html#sysvar_relay_log_space_limit）` |
    | 范围 | 全球的 |
    | 动态 | 不 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |
    | 默认值 | `0` |
    | 最小值 | `0` |
    | 最大值 | `4294967295` |

    用于所有中继日志的最大空间量。

-   [](<>) [`副本检查点组`](replication-options-replica.html#sysvar_replica_checkpoint_group)

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

    | 命令行格式 | `--副本检查点组=#` |
    | ----- | ------------ |
    | 介绍 | 8.0.26 |
    | 系统变量 | `[replica_checkpoint_group](replication-options-replica.html#sysvar_replica_checkpoint_group)` |
    | 范围 | 全球的 |
    | 动态的 | 是的 |
    | [`SET_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |
    | 默认值 | `512` |
    | 最小值 | `32` |
    | 最大值 | `524280` |
    | 块大小 | `8` |

    从 MySQL 8.0.26 开始，使用[`副本检查点组`](replication-options-replica.html#sysvar_replica_checkpoint_group)代替[`slave_checkpoint_group`](replication-options-replica.html#sysvar_slave_checkpoint_group)，该版本已弃用。在 MySQL 8.0.26 之前的版本中，使用[`slave_checkpoint_group`](replication-options-replica.html#sysvar_slave_checkpoint_group).

    [`副本检查点组`](replication-options-replica.html#sysvar_replica_checkpoint_group)设置在调用检查点操作以更新其状态之前，多线程副本可以处理的最大事务数，如下所示[`显示副本状态`](show-replica-status.html)。设置此变量对未启用多线程的副本没有影响。设置此变量不会立即生效。变量的状态适用于所有后续变量[`开始复制`](start-replica.html)命令。

    笔记

    NDB Cluster当前不支持多线程副本，它会自动忽略此变量的设置。看见[第23.7.3节，“NDB群集复制中的已知问题”](mysql-cluster-replication-issues.html)，以获取更多信息。

    此变量与[`副本\u检查点\u周期`](replication-options-replica.html#sysvar_replica_checkpoint_period)系统变量，当超过任一限制时，执行检查点，并重置跟踪事务数和自上次检查点以来经过的时间的计数器。

    此变量允许的最小值为32，除非服务器是使用[`-带调试的数据`](source-configuration-options.html#option_cmake_with_debug)，在这种情况下，最小值为1。有效值始终是8的倍数；您可以将其设置为一个不是该倍数的值，但服务器会在存储该值之前将其向下舍入到下一个较低的8倍数。(*例外*：调试服务器不执行这种舍入。）不管服务器是如何构建的，默认值是512，允许的最大值是524280。

-   [](<>) [`副本\u检查点\u周期`](replication-options-replica.html#sysvar_replica_checkpoint_period)

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

    | 命令行格式 | `--副本检查点周期=#` |
    | ----- | ------------- |
    | 介绍 | 8.0.26 |
    | 系统变量 | `[replica_checkpoint_period]（replication options replica.html#sysvar_replica_checkpoint_period）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |
    | 默认值 | `300` |
    | 最小值 | `1.` |
    | 最大值 | `4294967295` |
    | 单元 | `毫秒` |

    在MySQL 8.0.26中，使用[`副本\u sql\u验证\u校验和`](replication-options-replica.html#sysvar_replica_sql_verify_checksum)代替[`从机\u sql\u验证\u校验和`](replication-options-replica.html#sysvar_slave_sql_verify_checksum)，该版本已弃用。在MySQL 8.0.26之前的版本中，使用[`从机\u sql\u验证\u校验和`](replication-options-replica.html#sysvar_slave_sql_verify_checksum).

    [`副本\u检查点\u周期`](replication-options-replica.html#sysvar_replica_checkpoint_period)设置在调用检查点操作以更新多线程复制副本的状态之前允许经过的最长时间（以毫秒为单位），如所示[`显示副本状态`](show-replica-status.html)。设置此变量对未启用多线程的副本没有影响。设置此变量将立即对所有复制通道生效，包括正在运行的通道。

    笔记

    NDB Cluster当前不支持多线程副本，它会自动忽略此变量的设置。看见[第23.7.3节，“NDB群集复制中的已知问题”](mysql-cluster-replication-issues.html)，以获取更多信息。

    此变量与[`副本检查点组`](replication-options-replica.html#sysvar_replica_checkpoint_group)系统变量，当超过任一限制时，执行检查点，并重置跟踪事务数和自上次检查点以来经过的时间的计数器。

    此变量允许的最小值为1，除非服务器是使用[`-带调试的数据`](source-configuration-options.html#option_cmake_with_debug)，在这种情况下，最小值为0。不管服务器是如何构建的，默认值是300，最大可能值是4294967295（4GB）。

-   [](<>) [`副本压缩协议`](replication-options-replica.html#sysvar_replica_compressed_protocol)

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

    | 命令行格式 | `--副本压缩协议[={OFF | ON}]` |
    | ----- | ----------------------- |
    | 介绍 | 8.0.26 |
    | 系统变量 | `[replica_compressed_protocol]（复制选项replica.html#sysvar_replica_compressed_protocol）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 布尔值 |
    | 默认值 | `关` |

    在MySQL 8.0.26中，使用[`副本压缩协议`](replication-options-replica.html#sysvar_replica_compressed_protocol)代替[`slave_压缩_协议`](replication-options-replica.html#sysvar_slave_compressed_protocol)，这是不推荐的。在MySQL 8.0.26之前的版本中，使用[`slave_压缩_协议`](replication-options-replica.html#sysvar_slave_compressed_protocol).

    [`副本压缩协议`](replication-options-replica.html#sysvar_replica_compressed_protocol)指定如果源和副本都支持源/副本连接协议，是否使用该协议的压缩。如果禁用此变量（默认），则连接将被解压缩。对该变量的更改将在后续连接尝试时生效；这包括在发布[`开始复制`](start-replica.html)语句，以及正在运行的复制I/O（接收器）线程进行的重新连接。

    二进制日志事务压缩（从MySQL 8.0.20开始提供），由[`binlog_事务_压缩`](replication-options-binary-log.html#sysvar_binlog_transaction_compression)系统变量，也可以用来节省带宽。如果将二进制日志事务压缩与协议压缩结合使用，协议压缩对数据的作用机会较小，但仍然可以压缩头以及未压缩的事件和事务有效载荷。有关二进制日志事务压缩的更多信息，请参阅[第5.4.4.5节，“二进制日志事务压缩”](binary-log-transaction-compression.html).

    如果[`副本压缩协议`](replication-options-replica.html#sysvar_replica_compressed_protocol)如果启用，则优先于任何`源压缩算法`为[`将复制源更改为`](change-replication-source-to.html)陈述在这种情况下，到源的连接将使用`兹利布`如果源和副本都支持该算法，则进行压缩。如果[`副本压缩协议`](replication-options-replica.html#sysvar_replica_compressed_protocol)已禁用，则`源压缩算法`应用。有关更多信息，请参阅[第4.2.8节，“连接压缩控制”](connection-compression-control.html).

-   [](<>) [`副本执行模式`](replication-options-replica.html#sysvar_replica_exec_mode)

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

    | 命令行格式 | `--副本执行模式=模式` |
    | ----- | ------------- |
    | 介绍 | 8.0.26 |
    | 系统变量 | `[replica_exec_mode]（replication options replica.html#sysvar_replica_exec_mode）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 列举 |
    | 默认值 | `幂等元`（NDB）<br/><br/>`严格的`（其他） |
    | 有效值 | `严格的`<br/><br/>`幂等元` |

    在MySQL 8.0.26中，使用[`副本执行模式`](replication-options-replica.html#sysvar_replica_exec_mode)代替[`从执行模式`](replication-options-replica.html#sysvar_slave_exec_mode)，该版本已弃用。在MySQL 8.0.26之前的版本中，使用[`从执行模式`](replication-options-replica.html#sysvar_slave_exec_mode).

    [`副本执行模式`](replication-options-replica.html#sysvar_replica_exec_mode)控制复制线程在复制期间解决冲突和错误的方式。`幂等元`模式导致重复键被抑制，且未发现键错误；`严格的`意味着不会发生这样的镇压。

    `幂等元`模式旨在用于多源复制、循环复制以及NDB群集复制的其他一些特殊复制场景。（见[第23.7.10节，“NDB群集复制：双向和循环复制”](mysql-cluster-replication-multi-source.html)和[第23.7.11节，“NDB群集复制冲突解决”](mysql-cluster-replication-conflict-resolution.html)，以获取更多信息。）NDB Cluster忽略任何显式设置的值[`副本执行模式`](replication-options-replica.html#sysvar_replica_exec_mode)，并始终将其视为`幂等元`.

    在MySQL Server 8.0中，`严格的`模式是默认值。

    设置此变量对所有复制通道（包括正在运行的通道）立即生效。

    对于存储引擎，而不是[`NDB`](mysql-cluster.html), *`幂等元`只有在绝对确定可以安全忽略重复的密钥错误和未找到密钥的错误时，才应使用模式*。它用于NDB群集的故障转移场景，其中使用了多源复制或循环复制，不建议在其他情况下使用。

-   [](<>) [`副本加载tmpdir`](replication-options-replica.html#sysvar_replica_load_tmpdir)

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

    | 命令行格式 | `--副本加载tmpdir=dir_name` |
    | ----- | ----------------------- |
    | 介绍 | 8.0.26 |
    | 系统变量 | `[replica_load_tmpdir]（replication options replica.html#sysvar_replica_load_tmpdir）` |
    | 范围 | 全球的 |
    | 动态 | 不 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 目录名 |
    | 默认值 | `值--tmpdir` |

    在MySQL 8.0.26中，使用[`副本加载tmpdir`](replication-options-replica.html#sysvar_replica_load_tmpdir)代替[`从机负载tmpdir`](replication-options-replica.html#sysvar_slave_load_tmpdir)，该版本已弃用。在MySQL 8.0.26之前的版本中，使用[`从机负载tmpdir`](replication-options-replica.html#sysvar_slave_load_tmpdir).

    [`副本加载tmpdir`](replication-options-replica.html#sysvar_replica_load_tmpdir)指定复制副本创建临时文件的目录的名称。设置此变量将立即对所有复制通道生效，包括正在运行的通道。默认情况下，变量值等于[`tmpdir`](server-system-variables.html#sysvar_tmpdir)系统变量，或未指定该系统变量时应用的默认值。

    当复制SQL线程复制[`加载数据`](load-data.html)语句，它将要从中继日志加载的文件提取到临时文件中，然后将这些文件加载到表中。如果源上加载的文件很大，副本上的临时文件也很大。因此，建议使用此选项告诉复制副本将临时文件放在某个文件系统中的目录中，该目录具有大量可用空间。在这种情况下，中继日志也是巨大的，因此您可能还需要设置[`中继日志`](replication-options-replica.html#sysvar_relay_log)系统变量将中继日志放置在该文件系统中。

    此选项指定的目录应位于基于磁盘的文件系统（而不是基于内存的文件系统）中，以便用于复制的临时文件[`加载数据`](load-data.html)语句在机器重启后仍然有效。该目录也不应是在系统启动过程中被操作系统清除的目录。但是，如果临时文件已被删除，现在可以在重新启动后继续复制。

-   [](<>) [`副本\u最大\u允许\u数据包`](replication-options-replica.html#sysvar_replica_max_allowed_packet)

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

    | 命令行格式 | `--副本最大允许数据包数=#` |
    | ----- | ---------------- |
    | 介绍 | 8.0.26 |
    | 系统变量 | `[replica_max_allowed_packet]（replication options replica.html#sysvar_replica_max_allowed_packet）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |
    | 默认值 | `1073741824` |
    | 最小值 | `1024` |
    | 最大值 | `1073741824` |
    | 块大小 | `1024` |

    在MySQL 8.0.26中，使用[`副本\u最大\u允许\u数据包`](replication-options-replica.html#sysvar_replica_max_allowed_packet)代替[`从\u最大\u允许\u数据包`](replication-options-replica.html#sysvar_slave_max_allowed_packet)，该版本已弃用。在MySQL 8.0.26之前的版本中，使用[`从\u最大\u允许\u数据包`](replication-options-replica.html#sysvar_slave_max_allowed_packet).

    [`副本\u最大\u允许\u数据包`](replication-options-replica.html#sysvar_replica_max_allowed_packet)设置复制SQL（应用程序）和I/O（接收器）线程可以处理的最大数据包大小（字节）。设置此变量将立即对所有复制通道生效，包括正在运行的通道。源写入二进制日志事件的时间可能比其[`最大允许包数`](server-system-variables.html#sysvar_max_allowed_packet)添加事件标题后进行设置。设置[`副本\u最大\u允许\u数据包`](replication-options-replica.html#sysvar_replica_max_allowed_packet)必须大于[`最大允许包数`](server-system-variables.html#sysvar_max_allowed_packet)设置，以便使用基于行的复制的大型更新不会导致复制失败。

    这个全局变量的值总是1024的正整数倍；如果将其设置为某个值，则该值会向下舍入到1024的下一个最高倍数，因为它被存储或使用；背景`副本\u最大\u允许\u数据包`到0会导致使用1024。（在所有此类情况下都会发出截断警告。）默认值和最大值为1073741824（1 GB）；最小值为1024。

-   [](<>) [`副本\u网络\u超时`](replication-options-replica.html#sysvar_replica_net_timeout)

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

    | 命令行格式 | `--副本网络超时=#` |
    | ----- | ------------ |
    | 介绍 | 8.0.26 |
    | 系统变量 | `[replica_net_timeout]（replication options replica.html#sysvar_replica_net_timeout）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |
    | 默认值 | `60` |
    | 最小值 | `1.` |
    | 最大值 | `31536000` |

    在MySQL 8.0.26中，使用[`副本\u网络\u超时`](replication-options-replica.html#sysvar_replica_net_timeout)代替[`从网络超时`](replication-options-replica.html#sysvar_slave_net_timeout)，该版本已弃用。在MySQL 8.0.26之前的版本中，使用[`从网络超时`](replication-options-replica.html#sysvar_slave_net_timeout).

    [`副本\u网络\u超时`](replication-options-replica.html#sysvar_replica_net_timeout)指定在复制副本认为连接已断开、中止读取并尝试重新连接之前，等待来自源的更多数据或心跳信号的秒数。设置此变量不会立即生效。变量的状态适用于所有后续变量[`开始复制`](start-replica.html)命令。

    默认值为60秒（一分钟）。第一次重试在超时后立即发生。重试间隔由`源\连接\重试`选择[`将复制源更改为`](change-replication-source-to.html)声明，重新连接尝试的次数受`来源_重试_计数`选项

    心跳间隔由`源_心跳_周期`选择[`将复制源更改为`](change-replication-source-to.html)陈述心跳间隔默认为[`副本\u网络\u超时`](replication-options-replica.html#sysvar_replica_net_timeout)，并记录在副本的连接元数据存储库中，并显示在[`复制\连接\配置`](performance-schema-replication-connection-configuration-table.html)性能模式表。请注意，对的值或默认设置的更改[`副本\u网络\u超时`](replication-options-replica.html#sysvar_replica_net_timeout)不会自动更改心跳间隔，无论是显式设置还是使用之前计算的默认值。如果更改了连接超时，还必须发出[`将复制源更改为`](change-replication-source-to.html)将心跳间隔调整为适当的值，使其在连接超时之前发生。

-   [](<>) [`副本\u并行\u类型`](replication-options-replica.html#sysvar_replica_parallel_type)

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

    | 命令行格式 | `--副本并行类型=值` |
    | ----- | ------------ |
    | 介绍 | 8.0.26 |
    | 反对 | 8.0.29 |
    | 系统变量 | `[replica_parallel_type]（replication options replica.html#sysvar_replica_parallel_type）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 列举 |
    | 默认值(≥ 8.0.27) | `逻辑时钟` |
    | 默认值（8.0.26） | `数据库` |
    | 有效值 | `数据库`<br/><br/>`逻辑时钟` |

    在MySQL 8.0.26中，使用[`副本\u并行\u类型`](replication-options-replica.html#sysvar_replica_parallel_type)代替[`从并行型`](replication-options-replica.html#sysvar_slave_parallel_type)，该版本已弃用。在MySQL 8.0.26之前的版本中，使用[`从并行型`](replication-options-replica.html#sysvar_slave_parallel_type).

    对于多线程复制副本（其上的复制副本）[`复制并行工作人员`](replication-options-replica.html#sysvar_replica_parallel_workers)或[`奴隶工人`](replication-options-replica.html#sysvar_slave_parallel_workers)设置为大于0的值），[`副本\u并行\u类型`](replication-options-replica.html#sysvar_replica_parallel_type)指定用于决定允许在复制副本上并行执行哪些事务的策略。该变量对未启用多线程的副本没有影响。可能的值为：

    -   `逻辑时钟`：作为源上相同二进制日志组提交的一部分的事务将并行应用于副本。根据事务的时间戳跟踪事务之间的依赖关系，以便在可能的情况下提供额外的并行化。设置此值时[`binlog_事务_依赖关系_跟踪`](replication-options-binary-log.html#sysvar_binlog_transaction_dependency_tracking)如果一个写集可用于事务，并且与时间戳相比可以提供更好的结果，则可以在源上使用系统变量来指定将写集用于并行化，而不是时间戳。

    -   `数据库`：同时应用更新不同数据库的事务。此值仅适用于将数据划分为多个数据库的情况，这些数据库在源上同时独立更新。必须没有跨数据库约束，因为复制副本上可能会违反此类约束。

        什么时候[`副本保存提交顺序=开启`](replication-options-replica.html#sysvar_replica_preserve_commit_order)或[`slave_preserve_commit_order=ON`](replication-options-replica.html#sysvar_slave_preserve_commit_order)已设置，您只能使用`逻辑时钟`.在MySQL 8.0.27之前，`数据库`这是默认值。在MySQL 8.0.27中，副本服务器默认启用多线程([`副本\u并行\u工作者=4`](replication-options-replica.html#sysvar_replica_parallel_workers)默认情况下），所以`逻辑时钟`是默认值，设置为[`副本保存提交顺序=开启`](replication-options-replica.html#sysvar_replica_preserve_commit_order)也是默认值。

        当复制拓扑使用多个级别的副本时，`逻辑时钟`对于副本远离源的每个级别，可能会实现较少的并行化。你可以通过使用[`binlog_事务_依赖关系_跟踪`](replication-options-binary-log.html#sysvar_binlog_transaction_dependency_tracking)在源代码上指定在可能的情况下使用写集而不是时间戳进行并行化。

        当使用[`binlog_事务_压缩`](replication-options-binary-log.html#sysvar_binlog_transaction_compression)系统变量，如果[`副本\u并行\u类型`](replication-options-replica.html#sysvar_replica_parallel_type)即将`数据库`，所有受该事务影响的数据库都会在计划该事务之前映射。使用二进制日志事务压缩`数据库`与未压缩事务相比，策略可以降低并行性，未压缩事务为每个事件进行映射和调度。

    `副本\u并行\u类型`不推荐从MySQL 8.0.29开始使用，也不推荐使用数据库分区支持事务并行化。希望在未来的版本中删除对这些功能的支持，以及`逻辑时钟`以后只能使用。

-   [](<>) [`复制并行工作人员`](replication-options-replica.html#sysvar_replica_parallel_workers)

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

    | 命令行格式 | `--复制并行工作者=#` |
    | ----- | ------------- |
    | 介绍 | 8.0.26 |
    | 系统变量 | `[replica_parallel_workers]（replication options replica.html#sysvar_replica_parallel_workers）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |
    | 默认值(≥ 8.0.27) | `4.` |
    | 默认值（8.0.26） | `0` |
    | 最小值 | `0` |
    | 最大值 | `1024` |

    在MySQL 8.0.26中，使用[`复制并行工作人员`](replication-options-replica.html#sysvar_replica_parallel_workers)代替[`奴隶工人`](replication-options-replica.html#sysvar_slave_parallel_workers)，该版本已弃用。在MySQL 8.0.26之前的版本中，使用[`奴隶工人`](replication-options-replica.html#sysvar_slave_parallel_workers).

    [`复制并行工作人员`](replication-options-replica.html#sysvar_replica_parallel_workers)在复制副本上启用多线程，并设置用于并行执行复制事务的应用程序线程数。当该值大于0时，复制副本是一个多线程复制副本，具有指定数量的应用程序线程，外加一个协调器线程来管理它们。如果使用多个复制通道，则每个通道都有此数量的线程。

    在MySQL 8.0.27之前，该系统变量的默认值为0，因此默认情况下副本不是多线程的。在MySQL 8.0.27中，默认值为4，因此默认情况下副本是多线程的。

    在副本上启用多线程时，支持事务重试。什么时候[`副本保存提交顺序=开启`](replication-options-replica.html#sysvar_replica_preserve_commit_order)或[`slave_preserve_commit_order=ON`](replication-options-replica.html#sysvar_slave_preserve_commit_order)设置后，副本上的事务将按照它们在副本的中继日志中出现的顺序在副本上外部化。事务在应用程序线程之间的分配方式由[`副本\u并行\u类型`](replication-options-replica.html#sysvar_replica_parallel_type)（来自MySQL 8.0.26）或[`从并行型`](replication-options-replica.html#sysvar_slave_parallel_type)（MySQL 8.0.26之前）。在MySQL 8.0.27中，这些系统变量也有适当的多线程默认值。

    要禁用并行执行，请设置[`复制并行工作人员`](replication-options-replica.html#sysvar_replica_parallel_workers)0，这将为复制副本提供一个应用程序线程，而没有协调线程。在这种设置下[`副本\u并行\u类型`](replication-options-replica.html#sysvar_replica_parallel_type)或[`从并行型`](replication-options-replica.html#sysvar_slave_parallel_type)和[`副本保存提交顺序`](replication-options-replica.html#sysvar_replica_preserve_commit_order)或[`奴隶_保存_提交_命令`](replication-options-replica.html#sysvar_slave_preserve_commit_order)系统变量不起作用，会被忽略。在MySQL 8.0.27中，如果在[`将复制源更改为`](change-replication-source-to.html)选项`仅限GTID_`如果在副本上启用，则副本实际上使用一个并行工作进程来利用该方法重试事务，而无需访问文件位置。有了一个并行工人[`副本保存提交顺序`](replication-options-replica.html#sysvar_replica_preserve_commit_order)或[`奴隶_保存_提交_命令`](replication-options-replica.html#sysvar_slave_preserve_commit_order)系统变量也没有影响。

    背景[`复制并行工作人员`](replication-options-replica.html#sysvar_replica_parallel_workers)没有立竿见影的效果。变量的状态适用于所有后续变量[`开始复制`](start-replica.html)声明。

    笔记

    NDB群集当前不支持多线程副本。看见[第23.7.3节，“NDB群集复制中的已知问题”](mysql-cluster-replication-issues.html)，以获取有关如何[`NDB`](mysql-cluster.html)处理此变量的设置。

-   [](<>) [`副本_待定_作业_大小_最大值`](replication-options-replica.html#sysvar_replica_pending_jobs_size_max)

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

    | 命令行格式 | `--副本挂起作业最大大小=#` |
    | ----- | ---------------- |
    | 介绍 | 8.0.26 |
    | 系统变量 | `[replica_pending_jobs_size_max]（replication options replica.html#sysvar_replica_pending_jobs_size_max）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |
    | 默认值 | `128M` |
    | 最小值 | `1024` |
    | 最大值 | `16EiB` |
    | 单元 | `字节` |
    | 块大小 | `1024` |

    在MySQL 8.0.26中，使用[`副本_待定_作业_大小_最大值`](replication-options-replica.html#sysvar_replica_pending_jobs_size_max)代替[`从属\u待处理\u作业\u大小\u最大值`](replication-options-replica.html#sysvar_slave_pending_jobs_size_max)，该版本已弃用。在MySQL 8.0.26之前的版本中，使用[`从属\u待处理\u作业\u大小\u最大值`](replication-options-replica.html#sysvar_slave_pending_jobs_size_max).

    对于多线程副本，此变量设置保存尚未应用的事件的应用程序队列可用的最大内存量（字节）。设置此变量对未启用多线程的副本没有影响。设置此变量不会立即生效。变量的状态适用于所有后续变量[`开始复制`](start-replica.html)命令。

    此变量的最小可能值为1024字节；默认值为128MB。最大可能值为18446744073709551615（16个字节）。不是1024字节的精确倍数的值在存储之前会向下舍入到下一个较低的1024字节倍数。

    此变量的值是一个软限制，可以设置为与正常工作负载匹配。如果异常大的事件超过此大小，事务将一直保持，直到所有工作线程都有空队列，然后再进行处理。所有后续交易都会被保留，直到大型交易完成。

-   [](<>) [`副本保存提交顺序`](replication-options-replica.html#sysvar_replica_preserve_commit_order)

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

    | 命令行格式 | `--副本保留提交顺序[={OFF | ON}]` |
    | ----- | ------------------------- |
    | 介绍 | 8.0.26 |
    | 系统变量 | `[replica_preserve_commit_order]（replication options replica.html#sysvar_replica_preserve_commit_order）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 布尔值 |
    | 默认值(≥ 8.0.27) | `在…上` |
    | 默认值（8.0.26） | `关` |

    在MySQL 8.0.26中，使用[`副本保存提交顺序`](replication-options-replica.html#sysvar_replica_preserve_commit_order)代替[`奴隶_保存_提交_命令`](replication-options-replica.html#sysvar_slave_preserve_commit_order)，该版本已弃用。在MySQL 8.0.26之前的版本中，使用[`奴隶_保存_提交_命令`](replication-options-replica.html#sysvar_slave_preserve_commit_order).

    对于多线程复制副本（其上的复制副本）[`复制并行工作人员`](replication-options-replica.html#sysvar_replica_parallel_workers)设置为大于0的值），设置[`副本保存提交顺序=开启`](replication-options-replica.html#sysvar_replica_preserve_commit_order)确保事务在复制副本上的执行和提交顺序与它们在复制副本的中继日志中的显示顺序相同。这可以防止从复制副本的中继日志执行的事务序列出现间隔，并在复制副本上保留与源上相同的事务历史记录（限制如下所列）。此变量对未启用多线程的副本没有影响。

    在MySQL 8.0.27之前，此系统变量的默认值为`关`，这意味着交易可能会无序进行。在MySQL 8.0.27中，副本服务器默认启用多线程([`副本\u并行\u工作者=4`](replication-options-replica.html#sysvar_replica_parallel_workers)默认情况下），所以[`副本保存提交顺序=开启`](replication-options-replica.html#sysvar_replica_preserve_commit_order)是默认值，设置为[`副本\并行\类型=逻辑\时钟`](replication-options-replica.html#sysvar_replica_parallel_type)也是默认值。同样来自MySQL 8.0.27，设置[`副本保存提交顺序`](replication-options-replica.html#sysvar_replica_preserve_commit_order)如果[`复制并行工作人员`](replication-options-replica.html#sysvar_replica_parallel_workers)设置为1，因为在这种情况下，事务的顺序仍然保留。

    不需要在副本上设置二进制日志记录和副本更新日志记录[`副本保存提交顺序=开启`](replication-options-replica.html#sysvar_replica_preserve_commit_order)，如果需要，可以禁用。背景[`副本保存提交顺序=开启`](replication-options-replica.html#sysvar_replica_preserve_commit_order)需要[`副本\u并行\u类型`](replication-options-replica.html#sysvar_replica_parallel_type)即将`逻辑时钟`，也就是*不*MySQL 8.0.27之前的默认设置。在更改[`副本保存提交顺序`](replication-options-replica.html#sysvar_replica_preserve_commit_order)和[`副本\u并行\u类型`](replication-options-replica.html#sysvar_replica_parallel_type)，必须停止复制SQL线程（如果使用多个复制通道，则适用于所有复制通道）。

    什么时候[`复制副本保存提交顺序=关闭`](replication-options-replica.html#sysvar_replica_preserve_commit_order)设置后，多线程副本并行应用的事务可能会无序提交。因此，检查最近执行的事务并不能保证源中以前的所有事务都已在副本上执行。从复制副本的中继日志执行的事务序列中可能存在间隙。这对使用多线程复制副本时的日志记录和恢复有影响。看见[第17.5.1.34节，“复制和事务不一致”](replication-features-transaction-inconsistencies.html)了解更多信息。

    什么时候[`副本保存提交顺序=开启`](replication-options-replica.html#sysvar_replica_preserve_commit_order)设置时，执行工作线程将等待所有以前的事务提交后再提交。当给定线程正在等待其他工作线程提交其事务时，它会将其状态报告为`正在等待前一个事务提交`。在这种模式下，多线程副本永远不会进入源未处于的状态。这支持使用复制进行读取扩展。看见[第17.4.5节，“使用复制进行扩展”](replication-solutions-scaleout.html).

    笔记

    -   [`副本保存提交顺序=开启`](replication-options-replica.html#sysvar_replica_preserve_commit_order)不阻止源二进制日志位置延迟，其中`行政主管、主管、日志、职位`位于已执行交易的位置之后。看见[第17.5.1.34节，“复制和事务不一致”](replication-features-transaction-inconsistencies.html).

    -   [`副本保存提交顺序=开启`](replication-options-replica.html#sysvar_replica_preserve_commit_order)如果复制副本在其二进制日志上使用筛选器，则不会保留提交顺序和事务历史记录，例如[`--binlog do db`](replication-options-binary-log.html#option_mysqld_binlog-do-db).

    -   [`副本保存提交顺序=开启`](replication-options-replica.html#sysvar_replica_preserve_commit_order)不保留非事务性DML更新的顺序。这些可能会在中继日志中它们之前的事务之前提交，这可能会导致从复制副本的中继日志执行的事务序列出现间隔。

    -   如果使用基于语句的复制，并且事务性和非事务性存储引擎都参与在源上回滚的非XA事务，则可能会出现保留副本上提交顺序的限制。通常，在源上回滚的非XA事务不会复制到副本，但在这种特定情况下，事务可能会复制到副本。如果确实发生这种情况，则没有二进制日志记录的多线程副本不会处理事务回滚，因此在这种情况下，副本上的提交顺序与事务的中继日志顺序不同。

-   [](<>) [`副本\u sql\u验证\u校验和`](replication-options-replica.html#sysvar_replica_sql_verify_checksum)

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

    | 命令行格式 | `--副本sql验证校验和[={OFF | ON}]` |
    | ----- | --------------------------- |
    | 介绍 | 8.0.26 |
    | 系统变量 | `[replica_sql_verify_checksum]（replication options replica.html#sysvar_replica_sql_verify_checksum）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 布尔值 |
    | 默认值 | `在…上` |

    在MySQL 8.0.26中，使用[`副本\u sql\u验证\u校验和`](replication-options-replica.html#sysvar_replica_sql_verify_checksum)代替[`从机\u sql\u验证\u校验和`](replication-options-replica.html#sysvar_slave_sql_verify_checksum)，该版本已弃用。在MySQL 8.0.26之前的版本中，使用[`从机\u sql\u验证\u校验和`](replication-options-replica.html#sysvar_slave_sql_verify_checksum).

    [`从机\u sql\u验证\u校验和`](replication-options-replica.html#sysvar_slave_sql_verify_checksum)使复制SQL（applier）线程使用从中继日志读取的校验和来验证数据。在不匹配的情况下，复制副本会因错误而停止。设置此变量将立即对所有复制通道生效，包括正在运行的通道。

    笔记

    复制I/O（接收器）线程在通过网络接收事件时，如果可能，总是读取校验和。

-   [](<>) [`副本\u事务\u重试`](replication-options-replica.html#sysvar_replica_transaction_retries)

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

    | 命令行格式 | `--副本事务重试=#` |
    | ----- | ------------ |
    | 介绍 | 8.0.26 |
    | 系统变量 | `[replica_transaction_retries]（replication options replica.html#sysvar_replica_transaction_retries）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |
    | 默认值 | `10` |
    | 最小值 | `0` |
    | 最大值 | `18446744073709551615` |

    在MySQL 8.0.26中，使用[`副本\u事务\u重试`](replication-options-replica.html#sysvar_replica_transaction_retries)代替[`从\u事务\u重试`](replication-options-replica.html#sysvar_slave_transaction_retries)，该版本已弃用。在MySQL 8.0.26之前的版本中，使用[`从\u事务\u重试`](replication-options-replica.html#sysvar_slave_transaction_retries).

    [`副本\u事务\u重试`](replication-options-replica.html#sysvar_replica_transaction_retries)设置单线程或多线程复制副本上的复制SQL线程在停止之前自动重试失败事务的最大次数。设置此变量将立即对所有复制通道生效，包括正在运行的通道。默认值为10。将变量设置为0将禁用事务的自动重试。

    如果复制SQL线程由于错误而无法执行事务[`InnoDB`](innodb-storage-engine.html)死锁或因为事务的执行时间已超过[`InnoDB`](innodb-storage-engine.html)是的[`innodb\u锁定\u等待\u超时`](innodb-parameters.html#sysvar_innodb_lock_wait_timeout)或[`NDB`](mysql-cluster.html)是的[`TransactionDeadlockDetectionTimeout`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-transactiondeadlockdetectiontimeout)或[`事务处理活动超时`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-transactioninactivetimeout)，它会自动重试[`副本\u事务\u重试`](replication-options-replica.html#sysvar_replica_transaction_retries)在因错误而停止之前。不重试出现非临时错误的事务。

    性能模式表[`复制\u应用程序\u状态`](performance-schema-replication-applier-status-table.html)显示在中的每个复制通道上进行的重试次数`计数\u事务\u重试次数`柱性能模式表[`复制\u应用程序\u状态\u由\u工作者`](performance-schema-replication-applier-status-by-worker-table.html)显示单个应用程序线程在单线程或多线程副本上重试事务的详细信息，并标识导致重新尝试上一个事务和当前正在进行的事务的错误。

-   [](<>) [`副本类型转换`](replication-options-replica.html#sysvar_replica_type_conversions)

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

    | 命令行格式 | `--副本类型转换=设置` |
    | ----- | ------------- |
    | 介绍 | 8.0.26 |
    | 系统变量 | `[replica_type_conversions]（replication options replica.html#sysvar_replica_type_conversions）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 设置 |
    | 默认值 | `` |
    | 有效值 | `都是有损的`<br/><br/>`所有无损耗`<br/><br/>`所有人都签名了`<br/><br/>`所有人都没有签名` |

    在MySQL 8.0.26中，使用[`副本类型转换`](replication-options-replica.html#sysvar_replica_type_conversions)代替[`从属类型转换`](replication-options-replica.html#sysvar_slave_type_conversions)，该版本已弃用。在MySQL 8.0.26之前的版本中，使用[`从属类型转换`](replication-options-replica.html#sysvar_slave_type_conversions).

    [`副本类型转换`](replication-options-replica.html#sysvar_replica_type_conversions)控制使用基于行的复制时副本上有效的类型转换模式。其值是由列表中的零个或多个元素组成的逗号分隔集：`都是有损的`, `所有无损耗`, `所有人都签名了`, `所有人都没有签名`。将此变量设置为空字符串，以禁止源和副本之间的类型转换。设置此变量将立即对所有复制通道生效，包括正在运行的通道。

    有关适用于基于行的复制中的属性升级和降级的类型转换模式的更多信息，请参阅[基于行的复制：属性升级和降级](replication-features-differing-tables.html#replication-features-attribute-promotion).

-   [](<>) [`复制\u优化\u静态\u插件\u配置`](replication-options-replica.html#sysvar_replication_optimize_for_static_plugin_config)

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

    | 命令行格式 | `--静态插件配置的复制优化[={OFF | ON}]` |
    | ----- | ---------------------------- |
    | 介绍 | 8.0.23 |
    | 系统变量 | `[replication_optimize_for_static_plugin_config]（replication options replica.html#sysvar_replication_optimize_for_static_plugin_config）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 布尔值 |
    | 默认值 | `关` |

    使用共享锁，并避免不必要的锁获取，以提高半同步复制的性能。这个设置和[`复制\u发送方\u观察\u提交\u仅限`](replication-options-replica.html#sysvar_replication_sender_observe_commit_only)副本数量增加时会提供帮助，因为争用锁会降低性能。启用此系统变量后，无法卸载半同步复制插件，因此必须先禁用该系统变量，然后才能完成卸载。

    此系统变量可以在安装半同步复制插件之前或之后启用，也可以在复制运行时启用。半同步复制源服务器还可以从启用此系统变量中获得性能优势，因为它们使用与副本相同的锁定机制。

    [`复制\u优化\u静态\u插件\u配置`](replication-options-replica.html#sysvar_replication_optimize_for_static_plugin_config)可以在服务器上使用组复制时启用。在这种情况下，当由于高工作负载而存在锁争用时，它可能会提高性能。

-   [](<>) [`复制\u发送方\u观察\u提交\u仅限`](replication-options-replica.html#sysvar_replication_sender_observe_commit_only)

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

    | 命令行格式 | `--复制发送方仅观察提交[={OFF | ON}]` |
    | ----- | --------------------------- |
    | 介绍 | 8.0.23 |
    | 系统变量 | `[replication_sender_observe_commit_only]（replication options replica.html#sysvar_replication_sender_observe_commit_only）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 布尔值 |
    | 默认值 | `关` |

    限制回调以提高半同步复制的性能。这个设置和[`复制\u优化\u静态\u插件\u配置`](replication-options-replica.html#sysvar_replication_optimize_for_static_plugin_config)副本数量增加时会提供帮助，因为争用锁会降低性能。

    此系统变量可以在安装半同步复制插件之前或之后启用，也可以在复制运行时启用。半同步复制源服务器还可以从启用此系统变量中获得性能优势，因为它们使用与副本相同的锁定机制。

-   [](<>) [`报告主持人`](replication-options-replica.html#sysvar_report_host)

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

    | 命令行格式 | `--报告主机=主机名称` |
    | ----- | ------------- |
    | 系统变量 | `[report_host]（replication options replica.html#sysvar_report_host）` |
    | 范围 | 全球的 |
    | 动态 | 不 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 一串 |

    复制副本注册期间要报告给源的复制副本的主机名或IP地址。此值出现在的输出中[`显示副本`](show-replicas.html)在源服务器上。如果不希望复制副本向源注册，请将该值保留为未设置。

    笔记

    在副本连接后，源仅从TCP/IP套接字读取副本服务器的IP地址是不够的。由于NAT和其他路由问题，该IP可能无法从源主机或其他主机连接到副本。

-   [](<>) [`报告密码`](replication-options-replica.html#sysvar_report_password)

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

    | 命令行格式 | `--报告密码=名称` |
    | ----- | ----------- |
    | 系统变量 | `[report_password]（复制选项replica.html#sysvar_report_password）` |
    | 范围 | 全球的 |
    | 动态 | 不 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 一串 |

    复制副本注册期间要报告给源的复制副本的帐户密码。此值出现在的输出中[`显示副本`](show-replicas.html)在源服务器上，如果源是以[`--显示副本身份验证信息`](replication-options-source.html#option_mysqld_show-replica-auth-info)或[`--显示从属身份验证信息`](replication-options-source.html#option_mysqld_show-slave-auth-info).

    尽管这个变量的名称可能暗示着其他情况，[`报告密码`](replication-options-replica.html#sysvar_report_password)未连接到MySQL用户权限系统，因此不一定（甚至可能）与MySQL复制用户帐户的密码相同。

-   [](<>) [`报告港口`](replication-options-replica.html#sysvar_report_port)

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

    | 命令行格式 | `--报告端口=端口号` |
    | ----- | ------------ |
    | 系统变量 | `[report_port]（replication options replica.html#sysvar_report_port）` |
    | 范围 | 全球的 |
    | 动态 | 不 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |
    | 默认值 | `[从端口]` |
    | 最小值 | `0` |
    | 最大值 | `65535` |

    用于连接到复制副本的TCP/IP端口号，将在复制副本注册期间报告给源。仅当复制副本正在非默认端口上侦听，或者从源或其他客户端到复制副本有特殊隧道时，才设置此选项。如果不确定，请不要使用此选项。

    此选项的默认值是复制副本实际使用的端口号。这也是显示的默认值[`显示副本`](show-replicas.html).

-   [](<>) [`报告用户`](replication-options-replica.html#sysvar_report_user)

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

    | 命令行格式 | `--报告用户=名称` |
    | ----- | ----------- |
    | 系统变量 | `[report_user]（replication options replica.html#sysvar_report_user）` |
    | 范围 | 全球的 |
    | 动态 | 不 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 一串 |

    复制副本注册期间要报告给源的复制副本的帐户用户名。此值出现在的输出中[`显示副本`](show-replicas.html)在源服务器上，如果源是以[`--显示副本身份验证信息`](replication-options-source.html#option_mysqld_show-replica-auth-info)或[`--显示从属身份验证信息`](replication-options-source.html#option_mysqld_show-slave-auth-info).

    尽管这个变量的名称可能暗示着其他情况，[`报告用户`](replication-options-replica.html#sysvar_report_user)未连接到MySQL用户权限系统，因此不一定（甚至可能）与MySQL复制用户帐户的名称相同。

-   [](<>) [`rpl_读取_大小`](replication-options-replica.html#sysvar_rpl_read_size)

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

    | 命令行格式 | `--rpl读取大小=#` |
    | ----- | ------------- |
    | 系统变量 | `[rpl_read_size]（复制选项replica.html#sysvar_rpl_read_size）` |
    | 范围 | 全球的 |
    | 动态的 | 是的 |
    | [`SET_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |
    | 默认值 | `8192` |
    | 最小值 | `8192` |
    | 最大值 | `4294959104` |
    | 块大小 | `8192` |

    这[`rpl_read_size`](replication-options-replica.html#sysvar_rpl_read_size)系统变量控制从二进制日志文件和中继日志文件读取的最小数据量（以字节为单位）。如果这些文件的大量磁盘 I/O 活动阻碍了数据库的性能，那么当操作系统当前未缓存文件数据时，增加读取大小可能会减少文件读取和 I/O 停顿。

    的最小值和默认值[`rpl_read_size`](replication-options-replica.html#sysvar_rpl_read_size)是 8192 字节。该值必须是 4KB 的倍数。请注意，为从二进制日志和中继日志文件读取的每个线程分配了该值大小的缓冲区，包括源上的转储线程和副本上的协调器线程。因此，设置较大的值可能会对服务器的内存消耗产生影响。

-   [](<>) [`rpl_semi_sync_replica_enabled`](replication-options-replica.html#sysvar_rpl_semi_sync_replica_enabled)

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

    | 命令行格式 | `--rpl-semi-sync-replica-enabled[={OFF|ON}]` |
    | ----- | -------------------------------------------- |
    | 介绍 | 8.0.26 |
    | 系统变量 | `[rpl_semi_sync_replica_enabled]（复制选项-replica.html#sysvar_rpl_semi_sync_replica_enabled）` |
    | 范围 | 全球的 |
    | 动态的 | 是的 |
    | [`SET_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 布尔值 |
    | 默认值 | `离开` |

    [`rpl_semi_sync_replica_enabled`](replication-options-replica.html#sysvar_rpl_semi_sync_replica_enabled)可用时`rpl_semi_sync_replica`(`semisync_replica.so`library) 插件安装在副本上以设置半同步复制。如果`rpl_semi_sync_slave`插入 （`semisync_slave.so`库）已安装，[`rpl_semi_sync_slave_enabled`](replication-options-replica.html#sysvar_rpl_semi_sync_slave_enabled)改为可用。

    [`rpl_semi_sync_replica_enabled`](replication-options-replica.html#sysvar_rpl_semi_sync_replica_enabled)控制是否在副本服务器上启用半同步复制。要启用或禁用插件，请将此变量设置为`在`要么`离开`（或 1 或 0），分别。默认是`离开`.

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

-   [](<>) [`rpl_semi_sync_replica_trace_level`](replication-options-replica.html#sysvar_rpl_semi_sync_replica_trace_level)

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

    | 命令行格式 | `--rpl-semi-sync-replica-trace-level=#` |
    | ----- | --------------------------------------- |
    | 介绍 | 8.0.26 |
    | 系统变量 | `[rpl_semi_sync_replica_trace_level]（复制选项-replica.html#sysvar_rpl_semi_sync_replica_trace_level）` |
    | 范围 | 全球的 |
    | 动态的 | 是的 |
    | [`SET_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |
    | 默认值 | `32` |

    [`rpl_semi_sync_replica_trace_level`](replication-options-replica.html#sysvar_rpl_semi_sync_replica_trace_level)可用时`rpl_semi_sync_replica`(`semisync_replica.so`library) 插件安装在副本上以设置半同步复制。如果`rpl_semi_sync_slave`插入 （`semisync_slave.so`库）已安装，[`rpl_semi_sync_slave_trace_level`](replication-options-replica.html#sysvar_rpl_semi_sync_slave_trace_level)改为可用。

    [`rpl_semi_sync_replica_trace_level`](replication-options-replica.html#sysvar_rpl_semi_sync_replica_trace_level)控制副本服务器上的半同步复制调试跟踪级别。看[`rpl_semi_sync_master_trace_level`](replication-options-source.html#sysvar_rpl_semi_sync_master_trace_level)为允许值。

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

-   [](<>) [`rpl_semi_sync_slave_enabled`](replication-options-replica.html#sysvar_rpl_semi_sync_slave_enabled)

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

    | 命令行格式 | `--rpl-semi-sync-slave-enabled[={OFF|ON}]` |
    | ----- | ------------------------------------------ |
    | 系统变量 | `[rpl_semi_sync_slave_enabled]（复制选项-replica.html#sysvar_rpl_semi_sync_slave_enabled）` |
    | 范围 | 全球的 |
    | 动态的 | 是的 |
    | [`SET_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 布尔值 |
    | 默认值 | `离开` |

    [`rpl_semi_sync_slave_enabled`](replication-options-replica.html#sysvar_rpl_semi_sync_slave_enabled)可用时`rpl_semi_sync_slave`(`semisync_slave.so`library) 插件安装在副本上以设置半同步复制。如果`rpl_semi_sync_replica`插入 （`semisync_replica.so`库）已安装，[`rpl_semi_sync_replica_enabled`](replication-options-replica.html#sysvar_rpl_semi_sync_replica_enabled)改为可用。

    [`rpl_semi_sync_slave_enabled`](replication-options-replica.html#sysvar_rpl_semi_sync_slave_enabled)控制是否在副本服务器上启用半同步复制。要启用或禁用插件，请将此变量设置为`在`要么`离开`（或 1 或 0），分别。默认是`离开`.

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

-   [](<>) [`rpl_semi_sync_slave_trace_level`](replication-options-replica.html#sysvar_rpl_semi_sync_slave_trace_level)

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

    | 命令行格式 | `--rpl-semi-sync-slave-trace-level=#` |
    | ----- | ------------------------------------- |
    | 系统变量 | `[rpl_semi_sync_slave_trace_level]（复制选项-replica.html#sysvar_rpl_semi_sync_slave_trace_level）` |
    | 范围 | 全球的 |
    | 动态的 | 是的 |
    | [`SET_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |
    | 默认值 | `32` |

    [`rpl_semi_sync_slave_trace_level`](replication-options-replica.html#sysvar_rpl_semi_sync_slave_trace_level)可用时`rpl_semi_sync_slave`(`semisync_slave.so`library) 插件安装在副本上以设置半同步复制。如果`rpl_semi_sync_replica`插入 （`semisync_replica.so`库）已安装，[`rpl_semi_sync_replica_trace_level`](replication-options-replica.html#sysvar_rpl_semi_sync_replica_trace_level)改为可用。

    [`rpl_semi_sync_slave_trace_level`](replication-options-replica.html#sysvar_rpl_semi_sync_slave_trace_level)控制副本服务器上的半同步复制调试跟踪级别。看[`rpl_semi_sync_master_trace_level`](replication-options-source.html#sysvar_rpl_semi_sync_master_trace_level)为允许值。

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

-   [](<>) [`rpl_stop_replica_timeout`](replication-options-replica.html#sysvar_rpl_stop_replica_timeout)

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

    | 命令行格式 | `--rpl-stop-replica-timeout=秒` |
    | ----- | ------------------------------ |
    | 介绍 | 8.0.26 |
    | 系统变量 | `[rpl_stop_replica_timeout]（复制选项-replica.html#sysvar_rpl_stop_replica_timeout）` |
    | 范围 | 全球的 |
    | 动态的 | 是的 |
    | [`SET_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |
    | 默认值 | `31536000` |
    | 最小值 | `2` |
    | 最大值 | `31536000` |

    从 MySQL 8.0.26 开始，使用[`rpl_stop_replica_timeout`](replication-options-replica.html#sysvar_rpl_stop_replica_timeout)代替[`rpl_stop_slave_timeout`](replication-options-replica.html#sysvar_rpl_stop_slave_timeout)，该版本已弃用。在 MySQL 8.0.26 之前的版本中，使用[`rpl_stop_slave_timeout`](replication-options-replica.html#sysvar_rpl_stop_slave_timeout).

    您可以控制时间长度（以秒为单位）[`停止复制`](stop-replica.html)通过设置此变量在超时之前等待。这可以用来避免之间的死锁[`停止复制`](stop-replica.html)和其他使用不同客户端连接到副本的 SQL 语句。

    最大值和默认值`rpl_stop_replica_timeout`是 31536000 秒（1 年）。最小值为 2 秒。对此变量的更改将在后续生效[`停止复制`](stop-replica.html)陈述。

    此变量仅影响发出[`停止复制`](stop-replica.html)陈述。达到超时时，发出客户端会返回一条错误消息，指出命令执行不完整。然后客户端停止等待复制 I/O（接收方）和 SQL（应用程序）线程停止，但复制线程继续尝试停止，并且[`停止复制`](stop-replica.html)指令仍然有效。一旦复制线程不再忙，[`停止复制`](stop-replica.html)语句被执行并且副本停止。

-   [](<>) [`rpl_stop_slave_timeout`](replication-options-replica.html#sysvar_rpl_stop_slave_timeout)

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

    | 命令行格式 | `--rpl-stop-slave-timeout=秒` |
    | ----- | ---------------------------- |
    | 已弃用 | 8.0.26 |
    | 系统变量 | `[rpl_stop_slave_timeout]（复制选项-replica.html#sysvar_rpl_stop_slave_timeout）` |
    | 范围 | 全球的 |
    | 动态的 | 是的 |
    | [`SET_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |
    | 默认值 | `31536000` |
    | 最小值 | `2` |
    | 最大值 | `31536000` |

    从 MySQL 8.0.26 开始，[`rpl_stop_slave_timeout`](replication-options-replica.html#sysvar_rpl_stop_slave_timeout)已弃用且别名[`rpl_stop_replica_timeout`](replication-options-replica.html#sysvar_rpl_stop_replica_timeout)应改为使用。在 MySQL 8.0.26 之前的版本中，使用[`rpl_stop_slave_timeout`](replication-options-replica.html#sysvar_rpl_stop_slave_timeout).

    您可以控制时间长度（以秒为单位）[`停止复制`](stop-replica.html)通过设置此变量在超时之前等待。这可以用来避免之间的死锁[`停止复制`](stop-replica.html)和其他使用不同客户端连接到副本的 SQL 语句。

    最大值和默认值`rpl_stop_slave_timeout`是 31536000 秒（1 年）。最小值为 2 秒。对此变量的更改将在后续生效[`停止复制`](stop-replica.html)陈述。

    此变量仅影响发出[`停止复制`](stop-replica.html)陈述。达到超时时，发出客户端会返回一条错误消息，指出命令执行不完整。然后客户端停止等待复制 I/O（接收方）和 SQL（应用程序）线程停止，但复制线程继续尝试停止，并且[`停止复制`](stop-replica.html)指令仍然有效。一旦复制线程不再忙，[`停止复制`](stop-replica.html)语句被执行并且副本停止。

-   [](<>) [`skip_replica_start`](replication-options-replica.html#sysvar_skip_replica_start)

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

    | 命令行格式 | `--skip-replica-start[={OFF|ON}]` |
    | ----- | --------------------------------- |
    | 介绍 | 8.0.26 |
    | 系统变量 | `[skip_replica_start]（复制选项-replica.html#sysvar_skip_replica_start）` |
    | 范围 | 全球的 |
    | 动态的 | 不 |
    | [`SET_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 布尔值 |
    | 默认值 | `离开` |

    从 MySQL 8.0.26 开始，使用[`skip_replica_start`](replication-options-replica.html#sysvar_skip_replica_start)代替[`skip_slave_start`](replication-options-replica.html#sysvar_skip_slave_start)，该版本已弃用。在 MySQL 8.0.26 之前的版本中，使用[`skip_slave_start`](replication-options-replica.html#sysvar_skip_slave_start).

    [`skip_replica_start`](replication-options-replica.html#sysvar_skip_replica_start)告诉副本服务器在服务器启动时不要启动复制 I/O（接收方）和 SQL（应用程序）线程。要稍后启动线程，请使用[`开始复制`](start-replica.html)陈述。

    此系统变量是只读的，可以使用`PERSIST_ONLY`关键字或`@@persist_only`预选赛[`放`](set.html)陈述。这[`--skip-replica-start`](replication-options-replica.html#option_mysqld_skip-replica-start)命令行选项也设置这个系统变量。您可以使用系统变量代替命令行选项，以允许使用 MySQL 服务器的权限结构访问此功能，以便数据库管理员不需要对操作系统的任何特权访问。

-   [](<>) [`skip_slave_start`](replication-options-replica.html#sysvar_skip_slave_start)

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

    | 命令行格式 | `--skip-slave-start[={OFF|ON}]` |
    | ----- | ------------------------------- |
    | 已弃用 | 8.0.26 |
    | 系统变量 | `[skip_slave_start]（复制选项-replica.html#sysvar_skip_slave_start）` |
    | 范围 | 全球的 |
    | 动态的 | 不 |
    | [`SET_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 布尔值 |
    | 默认值 | `离开` |

    从 MySQL 8.0.26 开始，[`skip_slave_start`](replication-options-replica.html#sysvar_skip_slave_start)已弃用且别名[`skip_replica_start`](replication-options-replica.html#sysvar_skip_replica_start)应改为使用。在 MySQL 8.0.26 之前的版本中，使用[`skip_slave_start`](replication-options-replica.html#sysvar_skip_slave_start).

    告诉副本服务器在服务器启动时不要启动复制 I/O（接收方）和 SQL（应用程序）线程。要稍后启动线程，请使用[`开始复制`](start-replica.html)陈述。

    此系统变量可从 MySQL 8.0.24 获得。它是只读的，可以使用`PERSIST_ONLY`关键字或`@@persist_only`预选赛[`放`](set.html)陈述。这[`--skip-slave-启动`](replication-options-replica.html#option_mysqld_skip-slave-start)命令行选项也设置这个系统变量。您可以使用系统变量代替命令行选项，以允许使用 MySQL 服务器的权限结构访问此功能，以便数据库管理员不需要对操作系统的任何特权访问。

-   [](<>) [`slave_checkpoint_group`](replication-options-replica.html#sysvar_slave_checkpoint_group)

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

    | 命令行格式 | `--从检查点组=#` |
    | ----- | ----------- |
    | 已弃用 | 8.0.26 |
    | 系统变量 | `[slave_checkpoint_group]（复制选项-replica.html#sysvar_slave_checkpoint_group）` |
    | 范围 | 全球的 |
    | 动态的 | 是的 |
    | [`SET_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |
    | 默认值 | `512` |
    | 最小值 | `32` |
    | 最大值 | `524280` |
    | 块大小 | `8` |

    从 MySQL 8.0.26 开始，[`slave_checkpoint_group`](replication-options-replica.html#sysvar_slave_checkpoint_group)已弃用，且别名[`副本检查点组`](replication-options-replica.html#sysvar_replica_checkpoint_group)应该改用。在MySQL 8.0.26之前的版本中，使用[`slave_checkpoint_组`](replication-options-replica.html#sysvar_slave_checkpoint_group).

    [`slave_checkpoint_组`](replication-options-replica.html#sysvar_slave_checkpoint_group)设置在调用检查点操作以更新其状态之前，多线程复制副本可以处理的最大事务数，如所示[`显示副本状态`](show-replica-status.html)。设置此变量对未启用多线程的副本没有影响。设置此变量不会立即生效。变量的状态适用于所有后续变量[`开始复制`](start-replica.html)命令。

    笔记

    NDB Cluster当前不支持多线程副本，它会自动忽略此变量的设置。看见[第23.7.3节，“NDB群集复制中的已知问题”](mysql-cluster-replication-issues.html)，以获取更多信息。

    此变量与[`奴隶检查站`](replication-options-replica.html#sysvar_slave_checkpoint_period)系统变量，当超过任一限制时，执行检查点，并重置跟踪事务数和自上次检查点以来经过的时间的计数器。

    此变量允许的最小值为32，除非服务器是使用[`-带调试的数据`](source-configuration-options.html#option_cmake_with_debug)，在这种情况下，最小值为1。有效值始终是8的倍数；您可以将其设置为一个不是该倍数的值，但服务器会在存储该值之前将其向下舍入到下一个较低的8倍数。(*例外*：调试服务器不执行这种舍入。）不管服务器是如何构建的，默认值是512，允许的最大值是524280。

-   [](<>) [`奴隶检查站`](replication-options-replica.html#sysvar_slave_checkpoint_period)

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

    | 命令行格式 | `--从属检查点周期=#` |
    | ----- | ------------- |
    | 反对 | 8.0.26 |
    | 系统变量 | `[slave_checkpoint_period]（复制选项replica.html#sysvar_slave_checkpoint_period）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |
    | 默认值 | `300` |
    | 最小值 | `1.` |
    | 最大值 | `4294967295` |
    | 单元 | `毫秒` |

    从MySQL 8.0.26开始，[`奴隶检查站`](replication-options-replica.html#sysvar_slave_checkpoint_period)已弃用，且别名[`副本\u检查点\u周期`](replication-options-replica.html#sysvar_replica_checkpoint_period)应该改用。在MySQL 8.0.26之前的版本中，使用[`奴隶检查站`](replication-options-replica.html#sysvar_slave_checkpoint_period).

    [`奴隶检查站`](replication-options-replica.html#sysvar_slave_checkpoint_period)设置在调用检查点操作以更新多线程复制副本的状态之前允许经过的最长时间（以毫秒为单位），如所示[`显示副本状态`](show-replica-status.html)。设置此变量对未启用多线程的副本没有影响。设置此变量将立即对所有复制通道生效，包括正在运行的通道。

    笔记

    NDB Cluster当前不支持多线程副本，它会自动忽略此变量的设置。看见[第23.7.3节，“NDB群集复制中的已知问题”](mysql-cluster-replication-issues.html)，以获取更多信息。

    此变量与[`slave_checkpoint_组`](replication-options-replica.html#sysvar_slave_checkpoint_group)系统变量，当超过任一限制时，执行检查点，并重置跟踪事务数和自上次检查点以来经过的时间的计数器。

    此变量允许的最小值为1，除非服务器是使用[`-带调试的数据`](source-configuration-options.html#option_cmake_with_debug)，在这种情况下，最小值为0。不管服务器是如何构建的，默认值是300，最大可能值是4294967295（4GB）。

-   [](<>) [`slave_压缩_协议`](replication-options-replica.html#sysvar_slave_compressed_protocol)

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

    | 命令行格式 | `--从压缩协议[={OFF | ON}]` |
    | ----- | ---------------------- |
    | 反对 | 8.0.18 |
    | 系统变量 | `[slave_compressed_protocol]（复制选项replica.html#sysvar_slave_compressed_protocol）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 布尔值 |
    | 默认值 | `关` |

    [`slave_压缩_协议`](replication-options-replica.html#sysvar_slave_compressed_protocol)已弃用，从MySQL 8.0.26开始，别名[`副本压缩协议`](replication-options-replica.html#sysvar_replica_compressed_protocol)应该改用。在MySQL 8.0.26之前的版本中，使用[`slave_压缩_协议`](replication-options-replica.html#sysvar_slave_compressed_protocol).

    [`slave_压缩_协议`](replication-options-replica.html#sysvar_slave_compressed_protocol)控制是否使用源/副本连接协议的压缩（如果源和副本都支持）。如果禁用此变量（默认），则连接将被解压缩。对该变量的更改将在后续连接尝试时生效；这包括在发布[`开始复制`](start-replica.html)语句，以及正在运行的复制I/O（接收器）线程进行的重新连接。

    二进制日志事务压缩（从MySQL 8.0.20开始提供），由[`binlog_事务_压缩`](replication-options-binary-log.html#sysvar_binlog_transaction_compression)系统变量，也可以用来节省带宽。如果将二进制日志事务压缩与协议压缩结合使用，协议压缩对数据的作用机会较小，但仍然可以压缩头以及未压缩的事件和事务有效载荷。有关二进制日志事务压缩的更多信息，请参阅[第5.4.4.5节，“二进制日志事务压缩”](binary-log-transaction-compression.html).

    从MySQL 8.0.18开始，如果[`slave_压缩_协议`](replication-options-replica.html#sysvar_slave_compressed_protocol)如果启用，则优先于任何`源压缩算法` \| `掌握压缩算法`为[`将复制源更改为`](change-replication-source-to.html) \| [`将主机更改为`](change-master-to.html)陈述在这种情况下，到源的连接将使用`兹利布`如果源和副本都支持该算法，则进行压缩。如果[`slave_压缩_协议`](replication-options-replica.html#sysvar_slave_compressed_protocol)已禁用，则`源压缩算法` \| `掌握压缩算法`应用。有关更多信息，请参阅[第4.2.8节，“连接压缩控制”](connection-compression-control.html).

    从MySQL 8.0.18开始，该系统变量已被弃用。您应该期望在MySQL的未来版本中删除它。看见[配置旧连接压缩](connection-compression-control.html#connection-compression-legacy-configuration).

-   [](<>) [`从执行模式`](replication-options-replica.html#sysvar_slave_exec_mode)

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

    | 命令行格式 | `--从执行模式=模式` |
    | ----- | ------------ |
    | 系统变量 | `[slave_exec_mode]（复制选项replica.html#sysvar_slave_exec_mode）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 列举 |
    | 默认值 | `幂等元`（NDB）<br/><br/>`严格的`（其他） |
    | 有效值 | `严格的`<br/><br/>`幂等元` |

    从MySQL 8.0.26开始，[`从执行模式`](replication-options-replica.html#sysvar_slave_exec_mode)已弃用，且别名[`副本执行模式`](replication-options-replica.html#sysvar_replica_exec_mode)应该改用。在MySQL 8.0.26之前的版本中，使用[`从执行模式`](replication-options-replica.html#sysvar_slave_exec_mode).

    [`从执行模式`](replication-options-replica.html#sysvar_slave_exec_mode)控制复制线程在复制期间解决冲突和错误的方式。`幂等元`模式导致重复键被抑制，且未发现键错误；`严格的`意味着不会发生这样的镇压。

    `幂等元`模式旨在用于多源复制、循环复制以及NDB群集复制的其他一些特殊复制场景。（见[第23.7.10节，“NDB群集复制：双向和循环复制”](mysql-cluster-replication-multi-source.html)和[第23.7.11节，“NDB群集复制冲突解决”](mysql-cluster-replication-conflict-resolution.html)，以获取更多信息。）NDB Cluster忽略任何显式设置的值[`从执行模式`](replication-options-replica.html#sysvar_slave_exec_mode)，并始终将其视为`幂等元`.

    在MySQL Server 8.0中，`严格的`模式是默认值。

    设置此变量对所有复制通道（包括正在运行的通道）立即生效。

    对于存储引擎，而不是[`NDB`](mysql-cluster.html), *`幂等元`只有在绝对确定可以安全忽略重复的密钥错误和未找到密钥的错误时，才应使用模式*。它用于NDB群集的故障转移场景，其中使用了多源复制或循环复制，不建议在其他情况下使用。

-   [](<>) [`从机负载tmpdir`](replication-options-replica.html#sysvar_slave_load_tmpdir)

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

    | 命令行格式 | `--从属加载tmpdir=dir_name` |
    | ----- | ----------------------- |
    | 反对 | 8.0.26 |
    | 系统变量 | `[slave_load_tmpdir]（复制选项replica.html#sysvar_slave_load_tmpdir）` |
    | 范围 | 全球的 |
    | 动态 | 不 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 目录名 |
    | 默认值 | `值--tmpdir` |

    从MySQL 8.0.26开始，[`从机负载tmpdir`](replication-options-replica.html#sysvar_slave_load_tmpdir)已弃用，且别名[`副本加载tmpdir`](replication-options-replica.html#sysvar_replica_load_tmpdir)应该改用。在MySQL 8.0.26之前的版本中，使用[`从机负载tmpdir`](replication-options-replica.html#sysvar_slave_load_tmpdir).

    [`从机负载tmpdir`](replication-options-replica.html#sysvar_slave_load_tmpdir)指定复制副本创建临时文件的目录的名称。设置此变量将立即对所有复制通道生效，包括正在运行的通道。默认情况下，变量值等于[`tmpdir`](server-system-variables.html#sysvar_tmpdir)系统变量，或未指定该系统变量时应用的默认值。

    当复制SQL线程复制[`加载数据`](load-data.html)语句，它将要从中继日志加载的文件提取到临时文件中，然后将这些文件加载到表中。如果源上加载的文件很大，副本上的临时文件也很大。因此，建议使用此选项告诉复制副本将临时文件放在某个文件系统中的目录中，该目录具有大量可用空间。在这种情况下，中继日志也是巨大的，因此您可能还需要设置[`中继日志`](replication-options-replica.html#sysvar_relay_log)系统变量将中继日志放置在该文件系统中。

    此选项指定的目录应位于基于磁盘的文件系统（而不是基于内存的文件系统）中，以便用于复制的临时文件[`加载数据`](load-data.html)语句在机器重启后仍然有效。该目录也不应是在系统启动过程中被操作系统清除的目录。但是，如果临时文件已被删除，现在可以在重新启动后继续复制。

-   [](<>) [`从\u最大\u允许\u数据包`](replication-options-replica.html#sysvar_slave_max_allowed_packet)

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

    | 命令行格式 | `--允许的最大从数据包数=#` |
    | ----- | ---------------- |
    | 反对 | 8.0.26 |
    | 系统变量 | `[slave_max_allowed_packet]（复制选项replica.html#sysvar_slave_max_allowed_packet）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |
    | 默认值 | `1073741824` |
    | 最小值 | `1024` |
    | 最大值 | `1073741824` |
    | 块大小 | `1024` |

    从MySQL 8.0.26开始，[`从\u最大\u允许\u数据包`](replication-options-replica.html#sysvar_slave_max_allowed_packet)已弃用，且别名[`副本\u最大\u允许\u数据包`](replication-options-replica.html#sysvar_replica_max_allowed_packet)应该改用。在MySQL 8.0.26之前的版本中，使用[`从\u最大\u允许\u数据包`](replication-options-replica.html#sysvar_slave_max_allowed_packet).

    [`从\u最大\u允许\u数据包`](replication-options-replica.html#sysvar_slave_max_allowed_packet)设置复制SQL（应用程序）和I/O（接收器）线程可以处理的最大数据包大小（字节）。设置此变量将立即对所有复制通道生效，包括正在运行的通道。源写入二进制日志事件的时间可能比其[`最大允许包数`](server-system-variables.html#sysvar_max_allowed_packet)添加事件标题后进行设置。设置[`从\u最大\u允许\u数据包`](replication-options-replica.html#sysvar_slave_max_allowed_packet)必须大于[`最大允许包数`](server-system-variables.html#sysvar_max_allowed_packet)设置，以便使用基于行的复制的大型更新不会导致复制失败。

    这个全局变量的值总是1024的正整数倍；如果将其设置为某个值，则该值会向下舍入到1024的下一个最高倍数，因为它被存储或使用；背景`从\u最大\u允许\u数据包`到0会导致使用1024。（在所有此类情况下都会发出截断警告。）默认值和最大值为1073741824（1 GB）；最小值为1024。

-   [](<>) [`从网络超时`](replication-options-replica.html#sysvar_slave_net_timeout)

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

    | 命令行格式 | `--从网络超时=#` |
    | ----- | ----------- |
    | 反对 | 8.0.26 |
    | 系统变量 | `[slave_net_timeout]（复制选项replica.html#sysvar_slave_net_timeout）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |
    | 默认值 | `60` |
    | 最小值 | `1.` |
    | 最大值 | `31536000` |

    从MySQL 8.0.26开始，[`从网络超时`](replication-options-replica.html#sysvar_slave_net_timeout)已弃用，且别名[`副本\u网络\u超时`](replication-options-replica.html#sysvar_replica_net_timeout)应该改用。在MySQL 8.0.26之前的版本中，使用[`从网络超时`](replication-options-replica.html#sysvar_slave_net_timeout).

    [`从网络超时`](replication-options-replica.html#sysvar_slave_net_timeout)指定在复制副本认为连接已断开、中止读取并尝试重新连接之前，等待来自源的更多数据或心跳信号的秒数。设置此变量不会立即生效。变量的状态适用于所有后续变量[`开始复制`](start-replica.html)命令。

    默认值为60秒（一分钟）。第一次重试在超时后立即发生。重试间隔由`源\连接\重试` \| `主机连接重试`选择[`将复制源更改为`](change-replication-source-to.html) \| [`将主机更改为`](change-master-to.html)声明，重新连接尝试的次数受`来源_重试_计数` \| `主重试计数`选项

    心跳间隔由`源_心跳_周期` \| `主心跳周期`选择[`将复制源更改为`](change-replication-source-to.html) \| [`将主机更改为`](change-master-to.html)陈述心跳间隔默认为[`从网络超时`](replication-options-replica.html#sysvar_slave_net_timeout)，并记录在副本的连接元数据存储库中，并显示在[`复制\连接\配置`](performance-schema-replication-connection-configuration-table.html)性能模式表。请注意，对的值或默认设置的更改[`从网络超时`](replication-options-replica.html#sysvar_slave_net_timeout)不会自动更改心跳间隔，无论是显式设置还是使用之前计算的默认值。如果更改了连接超时，还必须发出[`将复制源更改为`](change-replication-source-to.html) \| [`将主机更改为`](change-master-to.html)将心跳间隔调整为适当的值，使其在连接超时之前发生。

-   [](<>) [`从并行型`](replication-options-replica.html#sysvar_slave_parallel_type)

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

    | 命令行格式 | `--从并行类型=值` |
    | ----- | ----------- |
    | 反对 | 8.0.26 |
    | 系统变量 | `[slave_parallel_type]（复制选项replica.html#sysvar_slave_parallel_type）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 列举 |
    | 默认值(≥ 8.0.27) | `逻辑时钟` |
    | 默认值(≤ 8.0.26) | `数据库` |
    | 有效值 | `数据库`<br/><br/>`逻辑时钟` |

    从MySQL 8.0.26开始，[`从并行型`](replication-options-replica.html#sysvar_slave_parallel_type)已弃用，且别名[`副本\u并行\u类型`](replication-options-replica.html#sysvar_replica_parallel_type)应该改用。在MySQL 8.0.26之前的版本中，使用[`从并行型`](replication-options-replica.html#sysvar_slave_parallel_type).

    对于多线程复制副本（其上的复制副本）[`复制并行工作人员`](replication-options-replica.html#sysvar_replica_parallel_workers)或[`奴隶工人`](replication-options-replica.html#sysvar_slave_parallel_workers)设置为大于0的值），[`从并行型`](replication-options-replica.html#sysvar_slave_parallel_type)指定用于决定允许在复制副本上并行执行哪些事务的策略。该变量对未启用多线程的副本没有影响。可能的值为：

    -   `逻辑时钟`：作为源上相同二进制日志组提交的一部分的事务将并行应用于副本。根据事务的时间戳跟踪事务之间的依赖关系，以便在可能的情况下提供额外的并行化。设置此值时[`binlog_事务_依赖关系_跟踪`](replication-options-binary-log.html#sysvar_binlog_transaction_dependency_tracking)如果一个写集可用于事务，并且与时间戳相比可以提供更好的结果，则可以在源上使用系统变量来指定将写集用于并行化，而不是时间戳。

    -   `数据库`：同时应用更新不同数据库的事务。此值仅适用于将数据划分为多个数据库的情况，这些数据库在源上同时独立更新。必须没有跨数据库约束，因为复制副本上可能会违反此类约束。

        什么时候[`副本保存提交顺序=开启`](replication-options-replica.html#sysvar_replica_preserve_commit_order)或[`slave_preserve_commit_order=ON`](replication-options-replica.html#sysvar_slave_preserve_commit_order)已设置，您只能使用`逻辑时钟`.在MySQL 8.0.27之前，`数据库`这是默认值。在MySQL 8.0.27中，副本服务器默认启用多线程([`副本\u并行\u工作者=4`](replication-options-replica.html#sysvar_replica_parallel_workers)默认情况下），所以`逻辑时钟`是默认值，设置为[`副本保存提交顺序=开启`](replication-options-replica.html#sysvar_replica_preserve_commit_order)也是默认值。

        当复制拓扑使用多个级别的副本时，`逻辑时钟`对于副本远离源的每个级别，可能会实现较少的并行化。你可以通过使用[`binlog_事务_依赖关系_跟踪`](replication-options-binary-log.html#sysvar_binlog_transaction_dependency_tracking)在源代码上指定在可能的情况下使用写集而不是时间戳进行并行化。

        当使用[`binlog_事务_压缩`](replication-options-binary-log.html#sysvar_binlog_transaction_compression)系统变量，如果[`副本\u并行\u类型`](replication-options-replica.html#sysvar_replica_parallel_type)或[`从并行型`](replication-options-replica.html#sysvar_slave_parallel_type)即将`数据库`，所有受该事务影响的数据库都会在计划该事务之前映射。使用二进制日志事务压缩`数据库`与未压缩事务相比，策略可以降低并行性，未压缩事务为每个事件进行映射和调度。

-   [](<>) [`奴隶工人`](replication-options-replica.html#sysvar_slave_parallel_workers)

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

    | 命令行格式 | `--奴隶平行工=#` |
    | ----- | ----------- |
    | 反对 | 8.0.26 |
    | 系统变量 | `[slave_parallel_workers]（复制选项replica.html#sysvar_slave_parallel_workers）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |
    | 默认值(≥ 8.0.27) | `4.` |
    | 默认值(≤ 8.0.26) | `0` |
    | 最小值 | `0` |
    | 最大值 | `1024` |

    从MySQL 8.0.26开始，[`奴隶工人`](replication-options-replica.html#sysvar_slave_parallel_workers)已弃用，且别名[`复制并行工作人员`](replication-options-replica.html#sysvar_replica_parallel_workers)应该改用。在MySQL 8.0.26之前的版本中，使用[`奴隶工人`](replication-options-replica.html#sysvar_slave_parallel_workers).

    [`奴隶工人`](replication-options-replica.html#sysvar_slave_parallel_workers)在复制副本上启用多线程，并设置用于并行执行复制事务的应用程序线程数。当该值大于0时，复制副本是一个多线程复制副本，具有指定数量的应用程序线程，外加一个协调器线程来管理它们。如果使用多个复制通道，则每个通道都有此数量的线程。

    在MySQL 8.0.27之前，该系统变量的默认值为0，因此默认情况下副本不是多线程的。在MySQL 8.0.27中，默认值为4，因此默认情况下副本是多线程的。

    在副本上启用多线程时，支持事务重试。什么时候[`副本保存提交顺序=开启`](replication-options-replica.html#sysvar_replica_preserve_commit_order)或[`slave_preserve_commit_order=ON`](replication-options-replica.html#sysvar_slave_preserve_commit_order)设置后，副本上的事务将按照它们在副本的中继日志中出现的顺序在副本上外部化。事务在应用程序线程之间的分配方式由[`副本\u并行\u类型`](replication-options-replica.html#sysvar_replica_parallel_type)（来自MySQL 8.0.26）或[`从并行型`](replication-options-replica.html#sysvar_slave_parallel_type)（MySQL 8.0.26之前）。在MySQL 8.0.27中，这些系统变量也有适当的多线程默认值。

    要禁用并行执行，请设置[`复制并行工作人员`](replication-options-replica.html#sysvar_replica_parallel_workers)0，这将为复制副本提供一个应用程序线程，而没有协调线程。在这种设置下[`副本\u并行\u类型`](replication-options-replica.html#sysvar_replica_parallel_type)或[`从并行型`](replication-options-replica.html#sysvar_slave_parallel_type)和[`副本保存提交顺序`](replication-options-replica.html#sysvar_replica_preserve_commit_order)或[`奴隶_保存_提交_命令`](replication-options-replica.html#sysvar_slave_preserve_commit_order)系统变量不起作用，会被忽略。在MySQL 8.0.27中，如果在[`将复制源更改为`](change-replication-source-to.html)选项`仅限GTID_`如果在副本上启用，则副本实际上使用一个并行工作进程来利用该方法重试事务，而无需访问文件位置。有了一个并行工人[`副本保存提交顺序`](replication-options-replica.html#sysvar_replica_preserve_commit_order) ([`奴隶_保存_提交_命令`](replication-options-replica.html#sysvar_slave_preserve_commit_order))系统变量也没有影响。

    背景[`复制并行工作人员`](replication-options-replica.html#sysvar_replica_parallel_workers)没有立竿见影的效果。变量的状态适用于所有后续变量[`开始复制`](start-replica.html)声明。

    NDB群集当前不支持多线程副本。看见[第23.7.3节，“NDB群集复制中的已知问题”](mysql-cluster-replication-issues.html)，以获取有关如何[`NDB`](mysql-cluster.html)处理此变量的设置。

-   [](<>) [`从属\u待处理\u作业\u大小\u最大值`](replication-options-replica.html#sysvar_slave_pending_jobs_size_max)

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

    | 命令行格式 | `--从挂起作业最大大小=#` |
    | ----- | --------------- |
    | 反对 | 8.0.26 |
    | 系统变量 | `[slave_pending_jobs_size_max]（replication options replica.html#sysvar_slave_pending_jobs_size_max）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |
    | 默认值(≥ 8.0.12) | `128M` |
    | 默认值（8.0.11） | `16M` |
    | 最小值 | `1024` |
    | 最大值 | `16EiB` |
    | 单元 | `字节` |
    | 块大小 | `1024` |

    从MySQL 8.0.26开始，[`从属\u待处理\u作业\u大小\u最大值`](replication-options-replica.html#sysvar_slave_pending_jobs_size_max)已弃用，且别名[`副本_待定_作业_大小_最大值`](replication-options-replica.html#sysvar_replica_pending_jobs_size_max)应该改用。在MySQL 8.0.26之前的版本中，使用[`从属\u待处理\u作业\u大小\u最大值`](replication-options-replica.html#sysvar_slave_pending_jobs_size_max).

    对于多线程副本，此变量设置保存尚未应用的事件的应用程序队列可用的最大内存量（字节）。设置此变量对未启用多线程的副本没有影响。设置此变量不会立即生效。变量的状态适用于所有后续变量[`开始复制`](start-replica.html)命令。

    此变量的最小可能值为1024字节；默认值为128MB。最大可能值为18446744073709551615（16个字节）。不是1024字节的精确倍数的值在存储之前会向下舍入到下一个较低的1024字节倍数。

    此变量的值是一个软限制，可以设置为与正常工作负载匹配。如果异常大的事件超过此大小，事务将一直保持，直到所有工作线程都有空队列，然后再进行处理。所有后续交易都会被保留，直到大型交易完成。

-   [](<>) [`奴隶_保存_提交_命令`](replication-options-replica.html#sysvar_slave_preserve_commit_order)

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

    | 命令行格式 | `--从保存提交顺序[={OFF | ON}]` |
    | ----- | ------------------------ |
    | 反对 | 8.0.26 |
    | 系统变量 | `[slave_preserve_commit_order]（复制选项replica.html#sysvar_slave_preserve_commit_order）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 布尔值 |
    | 默认值(≥ 8.0.27) | `在…上` |
    | 默认值(≤ 8.0.26) | `关` |

    从MySQL 8.0.26开始，[`奴隶_保存_提交_命令`](replication-options-replica.html#sysvar_slave_preserve_commit_order)已弃用，且别名[`副本保存提交顺序`](replication-options-replica.html#sysvar_replica_preserve_commit_order)应该改用。在MySQL 8.0.26之前的版本中，使用[`奴隶_保存_提交_命令`](replication-options-replica.html#sysvar_slave_preserve_commit_order).

    对于多线程复制副本（其上的复制副本）[`复制并行工作人员`](replication-options-replica.html#sysvar_replica_parallel_workers)或[`奴隶工人`](replication-options-replica.html#sysvar_slave_parallel_workers)设置为大于0的值），设置[`从属\u保存\u提交\u顺序=1`](replication-options-replica.html#sysvar_slave_preserve_commit_order)确保事务在复制副本上的执行和提交顺序与它们在复制副本的中继日志中的显示顺序相同。这可以防止从复制副本的中继日志执行的事务序列出现间隔，并在复制副本上保留与源上相同的事务历史记录（限制如下所列）。此变量对未启用多线程的副本没有影响。

    在MySQL 8.0.27之前，此系统变量的默认值为`关`，这意味着交易可能会无序进行。在MySQL 8.0.27中，副本服务器默认启用多线程([`副本\u并行\u工作者=4`](replication-options-replica.html#sysvar_replica_parallel_workers)默认情况下），所以[`slave_preserve_commit_order=ON`](replication-options-replica.html#sysvar_slave_preserve_commit_order)是默认值，设置为[`从并行时钟类型=逻辑时钟`](replication-options-replica.html#sysvar_slave_parallel_type)也是默认值。同样来自MySQL 8.0.27，设置[`奴隶_保存_提交_命令`](replication-options-replica.html#sysvar_slave_preserve_commit_order)如果[`奴隶工人`](replication-options-replica.html#sysvar_slave_parallel_workers)设置为1，因为在这种情况下，事务的顺序仍然保留。

    MySQL 8.0.18之前（含），设置[`slave_preserve_commit_order=ON`](replication-options-replica.html#sysvar_slave_preserve_commit_order)需要二进制日志记录([`木箱`](replication-options-binary-log.html#sysvar_log_bin))和副本更新日志记录([`日志_slave _更新`](replication-options-binary-log.html#sysvar_log_slave_updates))在副本上启用，这是MySQL 8.0的默认设置。从MySQL 8.0.19开始，不需要在副本上设置二进制日志和副本更新日志[`slave_preserve_commit_order=ON`](replication-options-replica.html#sysvar_slave_preserve_commit_order)，如果需要，可以禁用。在所有版本中，设置[`slave_preserve_commit_order=ON`](replication-options-replica.html#sysvar_slave_preserve_commit_order)需要[`从并行型`](replication-options-replica.html#sysvar_slave_parallel_type)即将`逻辑时钟`，也就是*不*MySQL 8.0.27之前的默认设置。在更改[`奴隶_保存_提交_命令`](replication-options-replica.html#sysvar_slave_preserve_commit_order)和[`从并行型`](replication-options-replica.html#sysvar_slave_parallel_type)，必须停止复制SQL线程（如果使用多个复制通道，则适用于所有复制通道）。

    什么时候[`slave_preserve_commit_order=OFF`](replication-options-replica.html#sysvar_slave_preserve_commit_order)如果设置了，则多线程副本并行应用的事务可能会无序提交。因此，检查最近执行的事务并不能保证源中以前的所有事务都已在副本上执行。从复制副本的中继日志执行的事务序列中可能存在间隙。这对使用多线程复制副本时的日志记录和恢复有影响。看见[第17.5.1.34节，“复制和事务不一致”](replication-features-transaction-inconsistencies.html)了解更多信息。

    什么时候[`slave_preserve_commit_order=ON`](replication-options-replica.html#sysvar_slave_preserve_commit_order)设置时，执行工作线程将等待所有以前的事务提交后再提交。当给定线程正在等待其他工作线程提交其事务时，它会将其状态报告为`正在等待前一个事务提交`。在这种模式下，多线程副本永远不会进入源未处于的状态。这支持使用复制进行读取扩展。看见[第17.4.5节，“使用复制进行扩展”](replication-solutions-scaleout.html).

    笔记

    -   [`slave_preserve_commit_order=ON`](replication-options-replica.html#sysvar_slave_preserve_commit_order)不阻止源二进制日志位置延迟，其中`行政主管、主管、日志、职位`位于已执行交易的位置之后。看见[第17.5.1.34节，“复制和事务不一致”](replication-features-transaction-inconsistencies.html).

    -   [`slave_preserve_commit_order=ON`](replication-options-replica.html#sysvar_slave_preserve_commit_order)如果复制副本在其二进制日志上使用筛选器，则不会保留提交顺序和事务历史记录，例如[`--binlog do db`](replication-options-binary-log.html#option_mysqld_binlog-do-db).

    -   [`slave_preserve_commit_order=ON`](replication-options-replica.html#sysvar_slave_preserve_commit_order)不保留非事务性DML更新的顺序。这些可能会在中继日志中它们之前的事务之前提交，这可能会导致从复制副本的中继日志执行的事务序列出现间隔。

    -   在MySQL 8.0.19之前的版本中，[`slave_preserve_commit_order=ON`](replication-options-replica.html#sysvar_slave_preserve_commit_order)不保留带有`如果存在`当相关对象不存在时。这些可能会在中继日志中它们之前的事务之前提交，这可能会导致从复制副本的中继日志执行的事务序列出现间隔。

    -   如果使用基于语句的复制，并且事务性和非事务性存储引擎都参与在源上回滚的非XA事务，则可能会出现保留副本上提交顺序的限制。通常，在源上回滚的非XA事务不会复制到副本，但在这种特定情况下，事务可能会复制到副本。如果确实发生这种情况，则没有二进制日志记录的多线程副本不会处理事务回滚，因此在这种情况下，副本上的提交顺序与事务的中继日志顺序不同。

-   [](<>) [`从行搜索算法`](replication-options-replica.html#sysvar_slave_rows_search_algorithms)

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

    | 命令行格式 | `--从行搜索算法=值` |
    | ----- | ------------ |
    | 反对 | 8.0.18 |
    | 系统变量 | `[slave_rows_search_algorithms]（复制选项replica.html#sysvar_slave_rows_search_algorithms）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 设置 |
    | 默认值 | `索引扫描、哈希扫描` |
    | 有效值 | `表格扫描、索引扫描`<br/><br/>`索引扫描、哈希扫描`<br/><br/>`表扫描，哈希扫描`<br/><br/>`表扫描、索引扫描、哈希扫描`（相当于指数）\_扫描，散列\_（扫描） |

    为基于行的日志记录和复制准备批处理行时，此系统变量控制如何搜索行以查找匹配项，尤其是是否使用哈希扫描。现在不推荐使用此系统变量。默认设置`索引扫描、哈希扫描`性能最佳，在所有情况下都能正常工作。看见[第17.5.1.27节，“复制和行搜索”](replication-features-row-searches.html).

-   [](<>) [`slave_skip_错误`](replication-options-replica.html#sysvar_slave_skip_errors)

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

    | 命令行格式 | `--从机跳过错误=名称` |
    | ----- | ------------- |
    | 反对 | 8.0.26 |
    | 系统变量 | `[slave_skip_errors]（复制选项replica.html#sysvar_slave_skip_errors）` |
    | 范围 | 全球的 |
    | 动态 | 不 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 一串 |
    | 默认值 | `关` |
    | 有效值 | `关`<br/><br/>`[错误代码列表]`<br/><br/>`全部的`<br/><br/>`ddl_存在错误` |

    从MySQL 8.0.26开始，[`slave_skip_错误`](replication-options-replica.html#sysvar_slave_skip_errors)已弃用，且别名[`复制副本\u跳过\u错误`](replication-options-replica.html#sysvar_replica_skip_errors)应该改用。在MySQL 8.0.26之前的版本中，使用[`slave_skip_错误`](replication-options-replica.html#sysvar_slave_skip_errors).

    通常，复制副本出现错误时，复制会停止，这使您有机会手动解决数据中的不一致性。当语句返回变量值中列出的任何错误时，此变量会导致复制SQL线程继续复制。

-   [](<>) [`复制副本\u跳过\u错误`](replication-options-replica.html#sysvar_replica_skip_errors)

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

    | 命令行格式 | `--副本跳过错误=名称` |
    | ----- | ------------- |
    | 介绍 | 8.0.26 |
    | 系统变量 | `[replica_skip_errors]（replication options replica.html#sysvar_replica_skip_errors）` |
    | 范围 | 全球的 |
    | 动态 | 不 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 一串 |
    | 默认值 | `关` |
    | 有效值 | `关`<br/><br/>`[错误代码列表]`<br/><br/>`全部的`<br/><br/>`ddl_存在错误` |

    在MySQL 8.0.26中，使用[`复制副本\u跳过\u错误`](replication-options-replica.html#sysvar_replica_skip_errors)代替[`slave_skip_错误`](replication-options-replica.html#sysvar_slave_skip_errors)，该版本已弃用。在MySQL 8.0.26之前的版本中，使用[`slave_skip_错误`](replication-options-replica.html#sysvar_slave_skip_errors).

    通常，复制副本出现错误时，复制会停止，这使您有机会手动解决数据中的不一致性。当语句返回变量值中列出的任何错误时，此变量会导致复制SQL线程继续复制。

-   [](<>) [`从机\u sql\u验证\u校验和`](replication-options-replica.html#sysvar_slave_sql_verify_checksum)

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

    | 命令行格式 | `--从属sql验证校验和[={OFF | ON}]` |
    | ----- | --------------------------- |
    | 反对 | 8.0.26 |
    | 系统变量 | `[slave_sql_verify_checksum]（复制选项replica.html#sysvar_slave_sql_verify_checksum）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 布尔值 |
    | 默认值 | `在…上` |

    从MySQL 8.0.26开始，[`从机\u sql\u验证\u校验和`](replication-options-replica.html#sysvar_slave_sql_verify_checksum)已弃用，且别名[`副本\u sql\u验证\u校验和`](replication-options-replica.html#sysvar_replica_sql_verify_checksum)应该改用。在MySQL 8.0.26之前的版本中，使用[`从机\u sql\u验证\u校验和`](replication-options-replica.html#sysvar_slave_sql_verify_checksum).

    [`从机\u sql\u验证\u校验和`](replication-options-replica.html#sysvar_slave_sql_verify_checksum)使复制SQL线程使用从中继日志读取的校验和来验证数据。在不匹配的情况下，复制副本会因错误而停止。设置此变量将立即对所有复制通道生效，包括正在运行的通道。

    笔记

    复制I/O（接收器）线程在通过网络接收事件时，如果可能，总是读取校验和。

-   [](<>) [`从\u事务\u重试`](replication-options-replica.html#sysvar_slave_transaction_retries)

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

    | 命令行格式 | `--从事务重试=#` |
    | ----- | ----------- |
    | 反对 | 8.0.26 |
    | 系统变量 | `[slave_transaction_retries]（复制选项replica.html#sysvar_slave_transaction_retries）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |
    | 默认值 | `10` |
    | 最小值 | `0` |
    | 最大值（64位平台） | `18446744073709551615` |
    | 最大值（32位平台） | `4294967295` |

    从MySQL 8.0.26开始，[`从\u事务\u重试`](replication-options-replica.html#sysvar_slave_transaction_retries)已弃用，且别名[`副本\u事务\u重试`](replication-options-replica.html#sysvar_replica_transaction_retries)应该改用。在MySQL 8.0.26之前的版本中，使用[`从\u事务\u重试`](replication-options-replica.html#sysvar_slave_transaction_retries).

    [`从\u事务\u重试`](replication-options-replica.html#sysvar_slave_transaction_retries)设置单线程或多线程复制副本上的复制SQL线程在停止之前自动重试失败事务的最大次数。设置此变量将立即对所有复制通道生效，包括正在运行的通道。默认值为10。将变量设置为0将禁用事务的自动重试。

    如果复制SQL线程由于错误而无法执行事务[`InnoDB`](innodb-storage-engine.html)死锁或因为事务的执行时间已超过[`InnoDB`](innodb-storage-engine.html)是的[`innodb\u锁定\u等待\u超时`](innodb-parameters.html#sysvar_innodb_lock_wait_timeout)或[`NDB`](mysql-cluster.html)是的[`TransactionDeadlockDetectionTimeout`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-transactiondeadlockdetectiontimeout)或[`事务处理活动超时`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-transactioninactivetimeout)，它会自动重试[`从\u事务\u重试`](replication-options-replica.html#sysvar_slave_transaction_retries)在因错误而停止之前。不重试出现非临时错误的事务。

    性能模式表[`复制\u应用程序\u状态`](performance-schema-replication-applier-status-table.html)显示在中的每个复制通道上进行的重试次数`计数\u事务\u重试次数`柱性能模式表[`复制\u应用程序\u状态\u由\u工作者`](performance-schema-replication-applier-status-by-worker-table.html)显示单个应用程序线程在单线程或多线程副本上重试事务的详细信息，并标识导致重新尝试上一个事务和当前正在进行的事务的错误。

-   [](<>) [`从属类型转换`](replication-options-replica.html#sysvar_slave_type_conversions)

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

    | 命令行格式 | `--从属类型转换=设置` |
    | ----- | ------------- |
    | 反对 | 8.0.26 |
    | 系统变量 | `[slave_type_conversions]（复制选项replica.html#sysvar_slave_type_conversions）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 设置 |
    | 默认值 | `` |
    | 有效值 | `都是有损的`<br/><br/>`所有无损耗`<br/><br/>`所有人都签名了`<br/><br/>`所有人都没有签名` |

    从MySQL 8.0.26开始，[`从属类型转换`](replication-options-replica.html#sysvar_slave_type_conversions)已弃用，且别名[`副本类型转换`](replication-options-replica.html#sysvar_replica_type_conversions)应该改用。在MySQL 8.0.26之前的版本中，使用[`从属类型转换`](replication-options-replica.html#sysvar_slave_type_conversions).

    [`从属类型转换`](replication-options-replica.html#sysvar_slave_type_conversions)控制使用基于行的复制时副本上有效的类型转换模式。其值是由列表中的零个或多个元素组成的逗号分隔集：`都是有损的`, `所有无损耗`, `所有人都签名了`, `所有人都没有签名`。将此变量设置为空字符串，以禁止源和副本之间的类型转换。设置此变量将立即对所有复制通道生效，包括正在运行的通道。

    有关适用于基于行的复制中的属性升级和降级的类型转换模式的更多信息，请参阅[基于行的复制：属性升级和降级](replication-features-differing-tables.html#replication-features-attribute-promotion).

-   [](<>) [`sql_复制_跳过_计数器`](replication-options-replica.html#sysvar_sql_replica_skip_counter)

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

    | 介绍 | 8.0.26 |
    | --- | ------ |
    | 系统变量 | `[sql_replica_skip_counter]（复制选项replica.html#sysvar_sql_replica_skip_counter）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |
    | 默认值 | `0` |
    | 最小值 | `0` |
    | 最大值 | `4294967295` |

    在MySQL 8.0.26中，使用[`sql_复制_跳过_计数器`](replication-options-replica.html#sysvar_sql_replica_skip_counter)代替[`sql_slave_skip_计数器`](replication-options-replica.html#sysvar_sql_slave_skip_counter)，该版本已弃用。在MySQL 8.0.26之前的版本中，使用[`sql_slave_skip_计数器`](replication-options-replica.html#sysvar_sql_slave_skip_counter).

    [`sql_复制_跳过_计数器`](replication-options-replica.html#sysvar_sql_replica_skip_counter)指定复制副本应跳过的源事件数。设置该选项不会立即生效。该变量适用于下一个变量[`开始复制`](start-replica.html)陈述下一个[`开始复制`](start-replica.html)语句还将该值更改回0。如果此变量设置为非零值，并且配置了多个复制通道，则[`开始复制`](start-replica.html)语句只能与`频道*`频道`*`条款

    此选项与基于GTID的复制不兼容，并且在以下情况下不能设置为非零值：[`gtid_模式=开启`](replication-options-gtids.html#sysvar_gtid_mode)一切就绪。如果在使用GTID时需要跳过事务，请使用[`gtid_已执行`](replication-options-gtids.html#sysvar_gtid_executed)而是从源头上。如果已使用在复制通道上启用GTID分配`将_gtid_分配给_匿名_事务`选择[`将复制源更改为`](change-replication-source-to.html)陈述[`sql_复制_跳过_计数器`](replication-options-replica.html#sysvar_sql_replica_skip_counter)有空。看见[第17.1.7.3节“跳过交易”](replication-administration-skip.html).

    重要的

    如果跳过设置此变量所指定的事件数量，将导致副本在事件组的中间开始，则副本继续跳过直到找到下一个事件组的开始并从该点开始。有关更多信息，请参阅[第17.1.7.3节“跳过交易”](replication-administration-skip.html).

-   [](<>) [`sql_slave_skip_计数器`](replication-options-replica.html#sysvar_sql_slave_skip_counter)

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

    | 反对 | 8.0.26 |
    | --- | ------ |
    | 系统变量 | `[sql_slave_skip_counter]（复制选项replica.html#sysvar_sql_slave_skip_counter）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |
    | 默认值 | `0` |
    | 最小值 | `0` |
    | 最大值 | `4294967295` |

    从MySQL 8.0.26开始，[`sql_slave_skip_计数器`](replication-options-replica.html#sysvar_sql_slave_skip_counter)已弃用，且别名[`sql_复制_跳过_计数器`](replication-options-replica.html#sysvar_sql_replica_skip_counter)应该改用。在MySQL 8.0.26之前的版本中，使用[`sql_slave_skip_计数器`](replication-options-replica.html#sysvar_sql_slave_skip_counter).

    [`sql_slave_skip_计数器`](replication-options-replica.html#sysvar_sql_slave_skip_counter)指定复制副本应跳过的源事件数。设置该选项不会立即生效。该变量适用于下一个变量[`开始复制`](start-replica.html)陈述下一个[`开始复制`](start-replica.html)语句还将该值更改回0。如果此变量设置为非零值，并且配置了多个复制通道，则[`开始复制`](start-replica.html)语句只能与`频道*`频道`*`条款

    此选项与基于GTID的复制不兼容，并且在以下情况下不能设置为非零值：[`gtid_模式=开启`](replication-options-gtids.html#sysvar_gtid_mode)一切就绪。如果在使用GTID时需要跳过事务，请使用[`gtid_已执行`](replication-options-gtids.html#sysvar_gtid_executed)而是从源头上。如果已使用在复制通道上启用GTID分配`将_gtid_分配给_匿名_事务`选择[`将复制源更改为`](change-replication-source-to.html)陈述[`sql_slave_skip_计数器`](replication-options-replica.html#sysvar_sql_slave_skip_counter)有空。看见[第17.1.7.3节“跳过交易”](replication-administration-skip.html).

    重要的

    如果跳过设置此变量所指定的事件数量，将导致副本在事件组的中间开始，则副本继续跳过直到找到下一个事件组的开始并从该点开始。有关更多信息，请参阅[第17.1.7.3节“跳过交易”](replication-administration-skip.html).

-   [](<>) [`同步主机信息`](replication-options-replica.html#sysvar_sync_master_info)

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

    | 命令行格式 | `--同步主信息=#` |
    | ----- | ----------- |
    | 反对 | 8.0.26 |
    | 系统变量 | `[sync_master_info]（复制选项replica.html#sysvar_sync_master_info）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |
    | 默认值 | `10000` |
    | 最小值 | `0` |
    | 最大值 | `4294967295` |

    从MySQL 8.0.26开始，[`同步主机信息`](replication-options-replica.html#sysvar_sync_master_info)已弃用，且别名[`同步源信息`](replication-options-replica.html#sysvar_sync_source_info)应该改用。在MySQL 8.0.26之前的版本中，使用[`同步主机信息`](replication-options-replica.html#sysvar_sync_master_info).

    [`同步主机信息`](replication-options-replica.html#sysvar_sync_master_info)指定复制副本更新连接元数据存储库之后的事件数。当连接元数据存储库存储为[`InnoDB`](innodb-storage-engine.html)表，这是MySQL 8.0中的默认值，它会在发生这些事件后更新。如果连接元数据存储库存储为文件（MySQL 8.0不推荐使用），则复制副本会同步其`主人信息`文件到磁盘（使用`fdatasync（）`)在这一系列事件之后。默认值为10000，零值表示存储库永远不会更新。设置此变量将立即对所有复制通道生效，包括正在运行的通道。

-   [](<>) [`同步中继日志`](replication-options-replica.html#sysvar_sync_relay_log)

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

    | 命令行格式 | `--同步中继日志=#` |
    | ----- | ------------ |
    | 系统变量 | `[sync_relay_log]（复制选项replica.html#sysvar_sync_relay_log）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |
    | 默认值 | `10000` |
    | 最小值 | `0` |
    | 最大值 | `4294967295` |

    如果该变量的值大于0，MySQL服务器会将其中继日志同步到磁盘（使用`fdatasync（）`)以后`同步中继日志`事件会写入中继日志。设置此变量将立即对所有复制通道生效，包括正在运行的通道。

    背景`同步中继日志`到0导致不同步到磁盘；在这种情况下，服务器依赖操作系统不时刷新中继日志的内容，就像刷新任何其他文件一样。

    值1是最安全的选择，因为如果发生意外停止，您最多会丢失中继日志中的一个事件。然而，它也是最慢的选择（除非磁盘有电池支持的缓存，这使得同步非常快）。有关副本上最能适应意外中断的设置组合的信息，请参阅[第17.4.2节，“处理副本意外停止”](replication-solutions-unexpected-replica-halt.html).

-   [](<>) [`同步中继日志信息`](replication-options-replica.html#sysvar_sync_relay_log_info)

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

    | 命令行格式 | `--同步中继日志信息=#` |
    | ----- | -------------- |
    | 系统变量 | `[sync_relay_log_info]（replication options replica.html#sysvar_sync_relay_log_info）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |
    | 默认值 | `10000` |
    | 最小值 | `0` |
    | 最大值 | `4294967295` |

    副本更新applier元数据存储库之后的事务数。当applier元数据存储库存储为[`InnoDB`](innodb-storage-engine.html)表，这是MySQL 8.0中的默认值，它在每次事务后都会更新，并且忽略此系统变量。如果applier元数据存储库存储为文件（MySQL 8.0不推荐使用），则复制副本会同步其`中继日志。信息`文件到磁盘（使用`fdatasync（）`)在这一数量的交易之后。的默认值`同步中继日志信息`为10000，零值表示文件内容仅由操作系统刷新。设置此变量将立即对所有复制通道生效，包括正在运行的通道。

-   [](<>) [`同步源信息`](replication-options-replica.html#sysvar_sync_source_info)

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

    | 命令行格式 | `--同步源信息=#` |
    | ----- | ----------- |
    | 介绍 | 8.0.26 |
    | 系统变量 | `[sync_source_info]（复制选项replica.html#sysvar_sync_source_info）` |
    | 范围 | 全球的 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 整数 |
    | 默认值 | `10000` |
    | 最小值 | `0` |
    | 最大值 | `4294967295` |

    在MySQL 8.0.26中，使用[`同步源信息`](replication-options-replica.html#sysvar_sync_source_info)代替[`同步主机信息`](replication-options-replica.html#sysvar_sync_master_info)，该版本已弃用。在MySQL 8.0.26之前的版本中，使用[`同步源信息`](replication-options-replica.html#sysvar_sync_source_info).

    [`同步源信息`](replication-options-replica.html#sysvar_sync_source_info)指定复制副本更新连接元数据存储库之后的事件数。当连接元数据存储库存储为[`InnoDB`](innodb-storage-engine.html)表，这是MySQL 8.0中的默认值，它会在发生这些事件后更新。如果连接元数据存储库存储为文件（MySQL 8.0不推荐使用），则复制副本会同步其`主人信息`文件到磁盘（使用`fdatasync（）`)在这一系列事件之后。默认值为10000，零值表示存储库永远不会更新。设置此变量将立即对所有复制通道生效，包括正在运行的通道。

-   [](<>) [`术语使用`](replication-options-replica.html#sysvar_terminology_use_previous)

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

    | 命令行格式 | `--术语使用之前的术语=#` |
    | ----- | --------------- |
    | 介绍 | 8.0.26 |
    | 系统变量 | `[terminology_use_previous]（复制选项replica.html#sysvar_terminology_use_previous）` |
    | 范围 | 全球会议 |
    | 动态 | 对 |
    | [`集_VAR`](optimizer-hints.html#optimizer-hints-set-var)提示适用 | 不 |
    | 类型 | 列举 |
    | 默认值 | `没有一个` |
    | 有效值 | `没有一个`<br/><br/>`在8 0 26之前` |

    在MySQL 8.0.26中，对包含术语“master”的检测名称进行了不兼容的更改，其中“master”更改为“source”，“slave”更改为“replica”，而“mts”（表示“多线程从机”）更改为“mta”（表示“多线程应用程序”）。使用这些检测名称的监视工具可能会受到影响。如果不兼容的更改对您有影响，请设置[`术语使用`](replication-options-replica.html#sysvar_terminology_use_previous)系统变量为`在8 0 26之前`要使MySQL服务器使用上一个列表中指定的对象的旧版本名称。这使得依赖旧名称的监视工具能够继续工作，直到它们可以更新为使用新名称为止。

    设定[`术语使用`](replication-options-replica.html#sysvar_terminology_use_previous)系统变量，具有支持单个功能的会话范围，或将全局范围作为所有新会话的默认范围。使用全局范围时，慢速查询日志包含名称的旧版本。

    以下列表中给出了受影响的仪器名称。这个[`术语使用`](replication-options-replica.html#sysvar_terminology_use_previous)系统变量仅影响这些项。它不会影响MySQL 8.0.26中引入的系统变量、状态变量和命令行选项的新别名，并且在设置时仍然可以使用这些别名。

    -   插入指令的锁（互斥锁），在`互斥实例`和`事件等待_*`带有前缀的性能模式表`等待/同步/互斥/`

    -   读/写锁，在`rwlock_实例`和`事件等待_*`带有前缀的性能模式表`等待/同步/重新锁定/`

    -   插入指令的条件变量，在`cond_实例`和`事件等待_*`带有前缀的性能模式表`等待/同步/接通/`

    -   插入指令的内存分配，在`记忆体摘要_*`带有前缀的性能模式表`内存/sql/`

    -   线程名称，在`线程`带有前缀的性能架构表`线程/sql/`

    -   线程阶段，在`事件与阶段_*`带有前缀的性能模式表`stage/sql/`，并且在`线程`和`进程列表`性能模式表，来自`显示进程列表`语句，信息模式`进程列表`表和慢速查询日志

    -   线程命令，在`事件、声明、历史*`和`事件、声明、总结、事件名称`带有前缀的性能模式表`声明/com/`，并且在`线程`和`进程列表`性能模式表，来自`显示进程列表`语句，信息模式`进程列表`表，以及`显示副本状态`陈述
