Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


19.1.6.3 副本服务器选项和变量

本节解释了副本服务器的选项和系统变量,内容包括:

可以在命令行或选项文件中指定选项。许多选项可以在服务器运行时使用 CHANGE REPLICATION SOURCE TO 语句设置。使用 SET 指定系统变量值。

服务器ID. 在源和每个副本上,您必须设置 server_id 系统变量,以在范围从 1 到 232 − 1 中建立唯一的复制 ID。 “唯一” 意味着每个 ID 都不能与任何其他源或副本在复制拓扑结构中使用的 ID 相同。例如 my.cnf 文件:

[mysqld]
server-id=3

本节解释了副本服务器启动选项。许多这些选项可以在服务器运行时使用 CHANGE REPLICATION SOURCE TO 语句设置。其他选项,例如 --replicate-*,只能在副本服务器启动时设置。复制相关的系统变量将在本节后面讨论。

  • --master-retry-count=count

    Command-Line Format --master-retry-count=#
    Deprecated
    Type 整数
    Default Value 10
    Minimum Value 0
    Maximum Value (64-bit platforms) 18446744073709551615
    Maximum Value (32-bit platforms) 4294967295

    这个选项已经弃用,预计将在未来的 MySQL 发布中删除。请使用 CHANGE REPLICATION SOURCE TO 语句的 SOURCE_RETRY_COUNT 选项,代替。

  • --max-relay-log-size=size

    Command-Line Format --max-relay-log-size=#
    System Variable max_relay_log_size
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 0
    Minimum Value 0
    Maximum Value 1073741824
    Unit 字节
    Block Size 4096

    服务器自动旋转relay日志文件的大小。如果这个值非零,relay日志将在大小超过这个值时自动旋转。如果这个值为零(默认值),relay日志旋转的大小将由max_binlog_size的值确定。更多信息,请见第19.2.4.1节,“relay日志”

  • --relay-log-purge={0|1}

    Command-Line Format --relay-log-purge[={OFF|ON}]
    System Variable relay_log_purge
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔
    Default Value ON

    禁用或启用自动清除relay日志的功能,以便在它们不再需要时尽快清除。默认值为1(启用)。这是一个全局变量,可以动态地使用SET GLOBAL relay_log_purge = N更改。禁用relay日志清除时启用--relay-log-recovery选项可能会影响数据一致性,因此不建议使用。

  • --relay-log-space-limit=size

    Command-Line Format --relay-log-space-limit=#
    System Variable relay_log_space_limit
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 0
    Minimum Value 0
    Maximum Value 18446744073709551615
    Unit 字节

    该选项将对所有 Relay 日志的总大小(以字节为单位)设置上限。值为 0 表示““无限制””。这对于具有有限磁盘空间的副本服务器主机非常有用。当达到限制时,I/O(接收)线程将停止从源服务器读取二进制日志事件,直到 SQL 线程赶上并删除一些未使用的 Relay 日志。请注意,这个限制不是绝对的:在某些情况下,SQL(应用程序)线程需要更多事件才能删除 Relay 日志。在这种情况下,接收线程将超过限制,直到应用程序线程可以删除一些 Relay 日志为止。您不应该将 --relay-log-space-limit 设置为小于 --max-relay-log-size(或 --max-binlog-size 如果 --max-relay-log-size为 0)。在这种情况下,有可能接收线程等待空闲空间,因为 --relay-log-space-limit 避免了接收线程,但应用程序线程没有 Relay 日志可以purge,无法满足接收线程的需求。这迫使接收线程忽略 --relay-log-space-limit 一段时间。

  • --replicate-do-db=db_name

    Command-Line Format --replicate-do-db=name
    Type String

    使用数据库名称创建复制过滤器。这种过滤器也可以使用 CHANGE REPLICATION FILTER REPLICATE_DO_DB 创建。

    该选项支持通道特定的复制过滤器,启用多源副本使用特定过滤器对不同源。要在通道名为 channel_1 上配置通道特定的复制过滤器,使用 --replicate-do-db:channel_1:db_name。在这种情况下,第一个冒号被解释为分隔符,后续的冒号被解释为字面上的冒号。见 Section 19.2.5.4, “Replication Channel Based Filters” 获取更多信息。

    Note

    全局复制过滤器不能在 MySQL 服务器实例上使用,该实例配置了 Group Replication,因为在某些服务器上 Filtering 交易将使得组无法达成一致状态。通道特定的复制过滤器可以在不直接涉及 Group Replication 的副本通道上使用,例如在组成员同时作为源服务器的副本,但不能在 group_replication_appliergroup_replication_recovery 通道上使用。

    本复制过滤器的精确效果取决于是否使用语句级别或行级别复制。

    语句级别复制。 告诉复制 SQL 线程将复制限制到语句中,其中默认数据库(即由USE 语句选择的数据库)是 db_name。要指定多个数据库,请使用该选项多次,每个数据库一次;然而,这样做不会复制跨数据库语句,如 UPDATE some_db.some_table SET foo='bar',而当前数据库或无数据库被选择。

    Warning

    要指定多个数据库,您必须 使用多个该选项。因为数据库名称可以包含逗号,如果您提供逗号分隔列表,则该列表将被视为单个数据库名称。

    使用语句级别复制时的一个示例:如果复制开始时使用了 --replicate-do-db=sales,并在源上执行以下语句,则 UPDATE 语句将 被复制。

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

    本行为的主要原因是从语句中很难知道是否应该复制(例如,如果您使用多表DELETE 语句或多表UPDATE 语句,该语句跨多个数据库)。此外,检查默认数据库比检查所有数据库快,如果没有必要。

    行级别复制。 告诉复制 SQL 线程将复制限制到数据库 db_name 中的表。只有 db_name 中的表被更改;当前数据库对此无影响。假设复制开始时使用了 --replicate-do-db=sales,并且使用行级别复制,并在源上执行以下语句:

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

    在复制中,february 表在 sales 数据库中被更改,以响应 UPDATE 语句;这无论当前数据库是否被选择。然而,在使用行级别复制和 --replicate-do-db=sales 时,以下语句在复制中无效:

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

    即使语句 USE prices 被更改为 USE salesUPDATE 语句的效果仍然不会被复制。

    在语句级别复制和行级别复制之间另一个重要的差异是关于多个数据库中的语句的处理。假设复制服务器启动时使用了--replicate-do-db=db1,然后在源服务器上执行以下语句:

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

    如果使用语句级别复制,那么在复制服务器上Both表都将被更新。然而,在使用行级别复制时,只有table1在复制服务器上受到影响;由于table2在不同的数据库中,table2在复制服务器上不会被UPDATE语句所改变。现在假设,而不是使用USE db1语句,而是使用USE db4语句:

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

    在这种情况下,UPDATE语句在使用语句级别复制时对复制服务器没有影响。然而,如果使用行级别复制,UPDATE语句将改变复制服务器上的table1,但不是table2—换言之,只有在--replicate-do-db指定的数据库中表被改变,而默认数据库的选择对此行为无影响。

    如果您需要跨数据库更新,请使用--replicate-wild-do-table=db_name.%代替。见第19.2.5节,“服务器评估复制过滤规则”

    Note

    这个选项对复制的影响与--binlog-do-db对二进制日志的影响相同,--replicate-do-db对复制行为的影响与日志格式对--binlog-do-db的行为相同。

    这个选项对BEGINCOMMITROLLBACK语句无影响。

  • --replicate-ignore-db=db_name

    Command-Line Format --replicate-ignore-db=name
    Type String

    创建一个使用数据库名称的复制过滤器。这些过滤器也可以使用CHANGE REPLICATION FILTER REPLICATE_IGNORE_DB创建。

    这个选项支持通道特定的复制过滤器,启用多源复制使用特定的过滤器来处理不同的源。要在名为channel_1的通道上配置通道特定的复制过滤器,使用--replicate-ignore-db:channel_1:db_name。在这种情况下,第一个冒号被解释为分隔符,后续的冒号是字面上的冒号。请参阅第19.2.5.4节,“通道基于的复制过滤器”获取更多信息。

    Note

    全局复制过滤器不能在配置了 Group Replication 的 MySQL 服务器实例上使用,因为在某些服务器上 filtering 交易将使得组无法达成一致的状态。通道特定的复制过滤器可以在不直接涉及 Group Replication 的复制通道上使用,例如,在一个组成员同时作为源服务器的副本时。它们不能在group_replication_appliergroup_replication_recovery通道上使用。

    要指定多个数据库忽略,请使用这个选项多次,每个数据库一次。由于数据库名称可能包含逗号,如果您提供逗号分隔的列表,它将被视为单个数据库的名称。

    --replicate-do-db类似,这个过滤器的确切效果取决于是否使用语句或行基于的复制,以及在下面几段中描述的。

    语句基于的复制  告诉复制 SQL 线程不要复制任何语句,其中默认数据库(即由USE选择的)是db_name

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

    在使用语句基于的复制时,这个示例不如您可能期望的那样工作。假设副本使用--replicate-ignore-db=sales启动,并且您在源上执行以下语句:

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

    The UPDATE 语句在这种情况下被复制,因为--replicate-ignore-db 只对默认数据库(由USE 语句确定的)生效。由于语句中明确指定了 sales 数据库,因此语句没有被过滤。然而,在使用行级别复制时,UPDATE 语句的效果不会被传播到副本中,副本的 sales.january 表保持不变;在这种情况下,--replicate-ignore-db=sales 会使副本忽略来自源的 sales 数据库中的所有表的更改。

    您不应该使用这个选项,如果您使用跨数据库更新且不想这些更新被复制。请参阅第19.2.5节,“服务器评估复制过滤规则”

    如果您需要跨数据库更新工作,请使用--replicate-wild-ignore-table=db_name.% alternatively。请参阅第19.2.5节,“服务器评估复制过滤规则”

    Note

    这个选项对复制的影响与--binlog-ignore-db 对二进制日志的影响相同,--replicate-ignore-db 对复制行为的影响与日志格式对--binlog-ignore-db 的影响相同。

    这个选项对BEGINCOMMITROLLBACK 语句没有影响。

  • --replicate-do-table=db_name.tbl_name

    Command-Line Format --replicate-do-table=name
    Type String

    创建复制过滤器,告诉复制 SQL 线程将复制的限制到指定的表中。要指定多个表,使用该选项多次,每个表一次。这适用于跨数据库更新和默认数据库更新,相比于--replicate-do-db。请参阅第19.2.5节,“服务器评估复制过滤规则”。您还可以使用CHANGE REPLICATION FILTER REPLICATE_DO_TABLE语句创建该过滤器。

    该选项支持通道特定的复制过滤器,启用多源复制使用特定的过滤器来过滤来自不同源的数据。要在名为channel_1的通道上配置通道特定的复制过滤器,使用--replicate-do-table:channel_1:db_name.tbl_name。在这种情况下,第一个冒号被解释为分隔符,后续的冒号是字面上的冒号。请参阅第19.2.5.4节,“通道基于的过滤器”以获取更多信息。

    Note

    全球复制过滤器不能在配置为 Group Replication 的 MySQL 服务器实例上使用,因为在某些服务器上过滤事务将使得组无法达成一致状态。通道特定的复制过滤器可以在不直接与 Group Replication 相关的复制通道上使用,例如在组成员同时作为源服务器的副本时。它们不能在group_replication_appliergroup_replication_recovery通道上使用。

    该选项仅影响对表的语句。它不影响只对其他数据库对象的语句,例如存储程序。要过滤操作存储程序的语句,使用一个或多个--replicate-*-db选项。

  • --replicate-ignore-table=db_name.tbl_name

    Command-Line Format --replicate-ignore-table=name
    Type String

    创建复制过滤器,告诉复制 SQL 线程不要复制任何更新指定表的语句,即使其他表也可能被更新。要指定多个表忽略,使用该选项多次,每个表一次。这适用于跨数据库更新,相比于--replicate-ignore-db。请参阅第19.2.5节,“服务器评估复制过滤规则”。您还可以使用CHANGE REPLICATION FILTER REPLICATE_IGNORE_TABLE语句创建该过滤器。

    该选项支持通道特定的复制过滤器,启用多源复制使用特定的过滤器来处理不同源。要在名为 channel_1 的通道上配置通道特定的复制过滤器,使用 --replicate-ignore-table:channel_1:db_name.tbl_name。在这种情况下,第一个冒号被解释为分隔符,后续的冒号是字面上的冒号。见第19.2.5.4节,“通道基于的过滤器”了解更多信息。

    Note

    不能在 MySQL 服务器实例上使用全局复制过滤器,因为在某些服务器上过滤事务将使得组无法达成一致状态。通道特定的复制过滤器可以在不直接与组复制相关的复制通道上使用,例如,组成员也作为外部源的副本。它们不能用于 group_replication_appliergroup_replication_recovery 通道上。

    该选项只影响对表的语句,不影响对其他数据库对象的语句,例如存储程序。要过滤操作存储程序的语句,使用一个或多个 --replicate-*-db 选项。

  • --replicate-rewrite-db=from_name->to_name

    Command-Line Format --replicate-rewrite-db=old_name->new_name
    Type 字符串

    告诉副本创建一个复制过滤器,翻译指定的数据库到 to_name 如果它在源上是 from_name。只影响涉及表的语句,不影响语句,如CREATE DATABASEDROP DATABASEALTER DATABASE

    要指定多个重写,使用该选项多次。服务器使用第一个与 from_name 值匹配的选项。数据库名称翻译在 --replicate-* 规则测试之前进行。你也可以通过发出CHANGE REPLICATION FILTER REPLICATE_REWRITE_DB语句来创建这样的过滤器。

    如果在命令行上使用 --replicate-rewrite-db 选项,并且 > 字符是您的命令解释器的特殊字符,引用选项值。例如:

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

    使用--replicate-rewrite-db选项时,结果的影响取决于是否使用语句基于或行基于的二进制日志格式。使用语句基于格式时,DML语句将根据当前数据库进行翻译,如USE语句所指定的。使用行基于格式时,DML语句将根据修改的表所在的数据库进行翻译。DDL语句总是根据当前数据库进行翻译,如USE语句所指定的,regardless of the binary logging format.

    为了确保重写产生预期的结果,特别是在与其他复制过滤选项组合使用时,遵循以下建议使用--replicate-rewrite-db选项:

    • 手动在源和副本上创建名为from_nameto_name的数据库,以不同的名称。

    • 如果使用语句基于或混合二进制日志格式,不要使用跨数据库查询,不要在查询中指定数据库名称。对于DDL和DML语句,依靠USE语句指定当前数据库,并且只使用表名在查询中。

    • 如果使用行基于二进制日志格式,用于DDL语句,依靠USE语句指定当前数据库,并使用只使用表名在查询中。对于DML语句,您可以使用完全限定表名(db.table)如果您想要。

    如果遵循这些建议,那么使用--replicate-rewrite-db选项与表级复制过滤选项,如--replicate-do-table,是安全的。

    这个选项支持通道特定的复制过滤,启用多源副本使用特定的过滤器来过滤来自不同源的数据。指定通道名称,后跟一个冒号,然后是过滤器规范。第一个冒号被解释为分隔符,任何后续的冒号被解释为字面上的冒号。例如,要配置一个通道特定的复制过滤器在名为channel_1的通道上,使用:

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

    如果您使用冒号,但不指定通道名称,那么该选项将配置默认复制通道的过滤器。见Section 19.2.5.4,“Replication Channel Based Filters”了解更多信息。

    Note

    全球复制过滤器不能在 MySQL 服务器实例上使用,该实例已配置为 Group Replication,因为在某些服务器上 filtering 交易将使群组无法达成一致状态。可以在不直接涉及 Group Replication 的复制通道上使用 channel 特定的复制过滤器,例如,在群组成员同时作为外部源的副本时。它们不能在 group_replication_appliergroup_replication_recovery 通道上使用。

  • --replicate-same-server-id

    Command-Line Format --replicate-same-server-id[={OFF|ON}]
    Type 布尔值
    Default Value OFF

    这个选项适用于副本。默认情况下,0 (FALSE)。将这个选项设置为 1 (TRUE),副本不跳过事件,该事件的服务器 ID 与副本的服务器 ID 相同。这一设置通常只在罕见的配置中有用。

    在副本上启用二进制日志记录时,组合 --replicate-same-server-id--log-replica-updates 选项可能会在副本是环形复制拓扑的一部分时导致无限循环。如果服务器是环形复制拓扑的一部分,启用了二进制日志记录,并且启用了副本更新记录,那么使用全局事务标识符 (GTIDs) 可以避免这种情况,因为它可以跳过已经应用的事务。如果 gtid_mode=ON 在副本上设置,可以在启动服务器时使用这两个选项,但是不能在服务器运行时更改 GTID 模式。如果设置了其他 GTID 模式,服务器将无法启动。

    默认情况下,复制 I/O (接收器) 线程不将具有副本服务器 ID 的二进制日志事件写入到中继日志中(这项优化可以帮助节省磁盘空间)。如果您想使用 --replicate-same-server-id,请在启动副本时使用这个选项,然后在副本读取您想要 replication SQL (applier) 线程执行的事件之前。

  • --replicate-wild-do-table=db_name.tbl_name

    Command-Line Format --replicate-wild-do-table=name
    Type 字符串

    创建一个复制过滤器,告诉复制 SQL(applier)线程将复制限制到语句,其中任何更新的表都匹配指定的数据库和表名模式。模式可以包含%_通配符字符,这些字符的含义与LIKE模式匹配操作符相同。要指定多个表,使用该选项多次,每个表一次。这适用于跨数据库更新。见第19.2.5节,“服务器如何评估复制过滤规则”。您还可以使用CHANGE REPLICATION FILTER REPLICATE_WILD_DO_TABLE语句创建这样的过滤器。

    该选项支持通道特定的复制过滤器,启用多源复制使用特定过滤器来filter来自不同源的数据。要在名为channel_1的通道上配置通道特定的复制过滤器,使用--replicate-wild-do-table:channel_1:db_name.tbl_name。在这种情况下,第一个冒号被解释为分隔符,后续的冒号是字面上的冒号。见第19.2.5.4节,“Replication Channel Based Filters”了解更多信息。

    Important

    全局复制过滤器不能在配置为Group Replication的MySQL服务器实例上使用,因为在某些服务器上过滤事务将使得组无法达成一致的状态。通道特定的复制过滤器可以在不直接涉及Group Replication的复制通道上使用,如一个组成员同时作为一个源服务器的副本,但不能在group_replication_appliergroup_replication_recovery通道上使用。

    --replicate-wild-do-table选项指定的复制过滤器适用于表、视图和触发器。但是,不适用于存储过程和函数、事件。要过滤操作这些对象的语句,使用一个或多个--replicate-*-db选项。

    例如,--replicate-wild-do-table=foo%.bar%只复制使用表名以foo开头,表名以bar开头的更新语句。

    如果表名模式是 %,它将匹配任何表名,并且该选项也适用于数据库级语句(CREATE DATABASEDROP DATABASEALTER DATABASE)。例如,如果您使用--replicate-wild-do-table=foo%.%,那么数据库级语句将被复制,如果数据库名匹配模式为 foo%

    Important

    表级复制过滤器仅应用于查询中明确提到的表,并且不应用于隐式更新的表。例如,一个GRANT语句,更新了 mysql.user 系统表,但不提到该表,不受指定 mysql.% 通配符模式的过滤器的影响。

    要在数据库或表名模式中包括字面通配符字符,可以使用反斜杠将其转义。例如,要复制名为 my_own%db 的数据库中的所有表,但不复制名为 my1ownAABCdb 的数据库中的表,可以将 _% 字符转义为 --replicate-wild-do-table=my\_own\%db。如果在命令行上使用该选项,您可能需要将反斜杠双倍化或将选项值引用,具体取决于您的命令解释器。例如,在使用 bash shell时,您需要输入--replicate-wild-do-table=my\\_own\\%db

  • --replicate-wild-ignore-table=db_name.tbl_name

    Command-Line Format --replicate-wild-ignore-table=name
    Type String

    创建一个复制过滤器,防止复制语句中的任何表匹配给定的通配符模式。要指定多个表忽略,可以使用该选项多次,每次为一个表。这适用于跨数据库更新。见Section 19.2.5,“How Servers Evaluate Replication Filtering Rules”。您也可以通过CHANGE REPLICATION FILTER REPLICATE_WILD_IGNORE_TABLE语句创建这样的过滤器。

    该选项支持通道特定的复制过滤器,启用多源复制使用特定过滤器对不同源进行过滤。要在名为channel_1的通道上配置通道特定的复制过滤器,使用--replicate-wild-ignore:channel_1:db_name.tbl_name。在这种情况下,第一个冒号被解释为分隔符,后续的冒号被解释为字面上的冒号。请参阅第19.2.5.4节,“通道基于的过滤器”获取更多信息。

    Important

    不能在 MySQL 服务器实例上使用全局复制过滤器,该实例已配置为 Group Replication,因为在某些服务器上过滤事务将使得组无法达成一致状态。通道特定的复制过滤器可以在不直接与 Group Replication 相关的复制通道上使用,例如在组成员同时作为复制源的外部源。它们不能在group_replication_appliergroup_replication_recovery通道上使用。

    例如,--replicate-wild-ignore-table=foo%.bar%不会复制使用表名以foo开头,表名以bar开头的更新。有关匹配规则的信息,请参阅--replicate-wild-do-table选项的描述。通道特定过滤器的规则与--replicate-wild-ignore-table相同。

    Important

    表级别复制过滤器仅应用于明确提到的和操作的表,不应用于隐式更新的表。例如,一个GRANT语句,更新了mysql.user系统表,但不提到该表,是不受指定mysql.%通配符的过滤器的影响。

    如果您需要过滤GRANT语句或其他管理语句,可以使用--replicate-ignore-db过滤器。这过滤器操作当前有效的默认数据库,该数据库由USE语句确定。因此,可以创建一个过滤器来忽略不复制的数据库,然后使用USE语句立即将默认数据库切换到该数据库,然后发出要忽略的管理语句。在管理语句中,指定实际应用语句的数据库名称。

    例如,如果在副本服务器上配置了--replicate-ignore-db=nonreplicated,那么以下语句序列将忽略GRANT语句,因为默认数据库nonreplicated正在生效:

    USE nonreplicated;
    GRANT SELECT, INSERT ON replicated.t1 TO 'someuser'@'somehost';
  • --skip-replica-start

    Command-Line Format --skip-replica-start[={OFF|ON}]
    System Variable skip_replica_start
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔
    Default Value OFF

    --skip-replica-start 告诉副本服务器在启动时不启动复制I/O(receiver)和SQL(applier)线程。要在后续启动线程,请使用START REPLICA语句。

    您可以使用skip_replica_start系统变量取代命令行选项,以便使用 MySQL 服务器的权限结构,避免数据库管理员需要操作系统的特权访问。

  • --skip-slave-start

    Command-Line Format --skip-slave-start[={OFF|ON}]
    Deprecated
    System Variable skip_slave_start
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔
    Default Value OFF

    已弃用的别名--skip-replica-start

  • --slave-skip-errors=[err_code1,err_code2,...|all|ddl_exist_errors]

    Command-Line Format --slave-skip-errors=name
    Deprecated
    System Variable slave_skip_errors
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value OFF
    Valid Values

    OFF

    [list of error codes]

    all

    ddl_exist_errors

    已弃用的同义词--replica-skip-errors

  • --slave-sql-verify-checksum={0|1}

    Command-Line Format --slave-sql-verify-checksum[={OFF|ON}]
    Type Boolean
    Default Value ON

    已弃用的synonym,等同于--replica-sql-verify-checksum

以下是控制副本服务器的系统变量列表。它们可以在服务器启动时设置,并且一些变量可以在运行时使用SET。副本服务器选项列表在本节前面已经列出。

  • init_replica

    Command-Line Format --init-replica=name
    System Variable init_replica
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串

    init_replica类似于init_connect,但是一旦副本服务器每次启动时执行的字符串。字符串的格式与init_connect变量相同。该变量的设置将对后续START REPLICA语句生效。

    Note

    副本SQL线程在执行init_replica之前将向客户端发送确认。因此,不保证init_replicaSTART REPLICA语句返回时已经执行。请参阅Section 15.4.2.4, “START REPLICA Statement”获取更多信息。

  • init_slave

    Command-Line Format --init-slave=name
    Deprecated
    System Variable init_slave
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串

    已弃用的别名,为init_replica

  • log_slow_replica_statements

    Command-Line Format --log-slow-replica-statements[={OFF|ON}]
    System Variable log_slow_replica_statements
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔
    Default Value OFF

    当慢查询日志启用时,log_slow_replica_statements 将记录在复制服务器上执行时间超过long_query_time秒的查询。注意,如果使用行级别复制(binlog_format=ROW),log_slow_replica_statements 无效。查询仅在被记录在复制服务器的慢查询日志中,当它们在二进制日志中以语句格式记录时,即当binlog_format=STATEMENT设置时或当binlog_format=MIXED设置时且语句以语句格式记录时。以行格式记录的慢查询,即使log_slow_replica_statements启用,也不会被添加到复制服务器的慢查询日志中。

    设置log_slow_replica_statements 无法立即生效。该变量的状态将在所有后续START REPLICA语句中生效。另外,请注意long_query_time的全局设置将在 SQL 线程的整个生命周期中生效。如果您更改该设置,必须停止并重新启动复制 SQL 线程以实现更改(例如,通过STOP REPLICASTART REPLICA语句,使用SQL_THREAD选项)。

  • log_slow_slave_statements

    Command-Line Format --log-slow-slave-statements[={OFF|ON}]
    Deprecated
    System Variable log_slow_slave_statements
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔
    Default Value OFF

    已弃用别名,为log_slow_replica_statements

  • max_relay_log_size

    Command-Line Format --max-relay-log-size=#
    System Variable max_relay_log_size
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 0
    Minimum Value 0
    Maximum Value 1073741824
    Unit 字节
    Block Size 4096

    如果复制服务器将写入到其relay log时,当前日志文件大小超过该变量的值,服务器将旋转relay logs(关闭当前文件,打开下一个文件)。如果max_relay_log_size为0,服务器将使用max_binlog_size对二进制日志和relay log进行限制。如果max_relay_log_size大于0,它将限制relay log的大小,从而使得可以为两个日志设置不同的大小。您必须将max_relay_log_size设置为4096字节到1GB之间(包括),或设置为0。默认值为0。请参见第19.2.3节,“Replication Threads”

  • relay_log

    Command-Line Format --relay-log=file_name
    System Variable relay_log
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 文件名

    relay日志的基础名称。对于默认复制通道,relay日志的默认基础名称为host_name-relay-bin。对于非默认复制通道,relay日志的默认基础名称为host_name-relay-bin-channel,其中channel是复制通道的名称,该名称记录在该relay日志中。

    服务器将文件写入到数据目录中,除非基础名称以绝对路径名开头,以指定不同的目录。服务器将按顺序创建relay日志文件,通过将基础名称与数字后缀组合。

    relay日志和relay日志索引在复制服务器上不能与二进制日志和二进制日志索引相同,后者由--log-bin--log-bin-index选项指定。服务器将出现错误信息并且不启动,如果binary log和relay log文件基础名称相同。

    由于 MySQL 服务器选项解析的方式,如果您在服务器启动时指定该变量,您必须提供一个值;默认的基础名称仅在未实际指定时使用。如果您在服务器启动时指定relay_log系统变量,但未指定值,可能会出现不期望的行为;这种行为取决于其他选项、它们的顺序、是否在命令行或选项文件中指定。有关 MySQL 处理服务器选项的更多信息,请见第6.2.2节,“指定程序选项”

    如果您指定该变量,指定的值也将用作relay log索引文件的基础名称。您可以使用relay_log_index系统变量来override这个行为。

    当服务器读取索引文件时,它将检查索引文件中的条目是否包含相对路径。如果是这样,它将相对路径的部分替换为使用relay_log系统变量设置的绝对路径。绝对路径保持不变;在这种情况下,索引文件必须手动编辑以启用新的路径或路径。

    您可能会发现relay_log系统变量有助于执行以下任务:

    • 创建名称独立于主机名的relay日志。

    • 如果您需要将relay日志放在数据目录以外的某个位置,因为您的relay日志 tend to be very large 和您不想减少max_relay_log_size

    • 以提高速度通过在磁盘之间进行负载均衡。

    您可以从relay_log_basename系统变量中获取relay日志文件名(和路径)。

  • relay_log_basename

    System Variable relay_log_basename
    Scope Global
    Dynamic No
    SET_VAR Hint Applies No
    Type File name
    Default Value datadir + '/' + hostname + '-relay-bin'

    Holds the base name and complete path to the relay log file. The maximum variable length is 256. This variable is set by the server and is read only.

  • relay_log_index

    Command-Line Format --relay-log-index=file_name
    System Variable relay_log_index
    Scope Global
    Dynamic No
    SET_VAR Hint Applies No
    Type File name
    Default Value *host_name*-relay-bin.index

    存储中继日志索引文件的名称。最大变量长度为256。如果您不指定该变量,但指定了relay_log系统变量,它的值将被用作默认的中继日志索引文件的基础名称。如果relay_log也未指定,那么对于默认复制通道,缺省名称为host_name-relay-bin.index,使用主机名称。如果非默认复制通道,那么缺省名称为host_name-relay-bin-channel.index,其中channel是记录在该中继日志索引中的复制通道名称。

    中继日志文件的缺省位置是数据目录,或者使用relay_log系统变量指定的其他位置。您可以使用relay_log_index系统变量指定一个不同的目录,通过在基础名称前添加一个绝对路径名来指定。

    中继日志和中继日志索引在复制服务器上不能与二进制日志和二进制日志索引的名称相同,这些名称由--log-bin--log-bin-index选项指定的。如果中继日志和二进制日志文件基础名称相同,服务器将显示错误信息并不能启动。

    由于MySQL解析服务器选项的方式,如果您在服务器启动时指定该变量,您必须提供一个值;缺省基础名称仅在实际指定该选项时使用。如果您在服务器启动时指定relay_log_index系统变量而不指定值,可能会出现不期望的行为,这种行为取决于其他选项、它们的顺序和是否在命令行或选项文件中指定。有关MySQL处理服务器选项的更多信息,请参阅第6.2.2节,“Specifying Program Options”

  • relay_log_purge

    Command-Line Format --relay-log-purge[={OFF|ON}]
    System Variable relay_log_purge
    Scope Global
    Dynamic Yes
    SET_VAR Hint Applies No
    Type Boolean
    Default Value ON

    禁用或启用自动清除中继日志文件的功能,直到它们不再需要。缺省值为1(ON)。

  • relay_log_recovery

    Command-Line Format --relay-log-recovery[={OFF|ON}]
    System Variable relay_log_recovery
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔
    Default Value OFF

    如果启用,这个变量在服务器启动时启用自动relay log恢复过程。恢复过程创建一个新的relay log文件,初始化SQL(applier)线程位置到这个新的relay log,并初始化I/O(receiver)线程到applier线程位置。然后,继续从源读取relay log。如果使用了CHANGE REPLICATION SOURCE TO选项设置了replication channel的SOURCE_AUTO_POSITION为1,源位置可能是从连接中接收到的,而不是在这个过程中分配的。

    这个全局变量在运行时是只读的。它的值可以使用--relay-log-recovery选项在replica服务器启动时设置,这应该在replica服务器意外中断后使用,以确保不处理可能已损坏的relay log,并且必须在crash-safe replica中使用。默认值是0(禁用)。关于在replica中组合设置的最具恢复能力的信息,请见第19.4.2节,“处理replica意外中断”

    对于多线程replica(其中replica_parallel_workers大于0),设置--relay-log-recovery在启动时自动处理relay log中的空隙和不一致。这可能发生在使用文件位置基于replication时。 (更多信息,请见第19.5.1.34节,“replication和事务不一致”。)恢复过程使用与START REPLICA UNTIL SQL_AFTER_MTS_GAPS语句相同的方法处理空隙。當replica达到一致的空隙状态后,恢复过程继续从源开始fetch事务。當使用GTID-based replication时,多线程replica首先检查SOURCE_AUTO_POSITION是否设置为ON,如果是,则跳过计算应该跳过或不跳过的交易,以免使用老的relay log恢复过程。

    Note

    这个变量不影响以下Group Replication channels:

    • group_replication_applier

    • group_replication_recovery

    其他任何channel都将受到影响,例如来自外部源或另一个组的channel。

  • relay_log_space_limit

    Command-Line Format --relay-log-space-limit=#
    System Variable relay_log_space_limit
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 0
    Minimum Value 0
    Maximum Value 18446744073709551615
    Unit 字节

    所有中继日志的最大存储空间。

  • replica_checkpoint_group

    Command-Line Format --replica-checkpoint-group=#
    System Variable replica_checkpoint_group
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 512
    Minimum Value 32
    Maximum Value 524280
    Block Size 8

    replica_checkpoint_group 设置了多线程复制服务器在执行检查点操作前可以处理的最大事务数。该变量无论是否启用多线程复制服务器都无效。该变量无立即效果。该变量的状态将应用于所有后续START REPLICA 语句。

    该变量与replica_checkpoint_period系统变量组合使用,以便在达到任何限制时执行检查点,并将跟踪事务数和时间的计数器重置。

    该变量的最小允许值为32,除非服务器使用-DWITH_DEBUG进行构建,在这种情况下最小值为1。服务器将将设置的值向下舍入到下一个8的倍数;在 debug 服务器中,不进行任何舍入。无论服务器是如何构建的,该变量的默认值都是512,最大允许值为524280。

  • replica_checkpoint_period

    Command-Line Format --replica-checkpoint-period=#
    System Variable replica_checkpoint_period
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 300
    Minimum Value 1
    Maximum Value 4294967295
    Unit 毫秒

    replica_checkpoint_period 设置了在更新多线程复制副本的状态时允许的最大时间(以毫秒为单位),如SHOW REPLICA STATUS所示。设置这个变量对不启用多线程复制的副本无效。设置这个变量对所有复制通道立即生效,包括正在运行的通道。

    这个变量与replica_checkpoint_group系统变量组合使用,以便在任何一个限制被超出时执行检查点,并将追踪的交易数量和自上一个检查点以来的时间计数器重置。

    这个变量的最小允许值为1,除非服务器使用-DWITH_DEBUG构建,在这种情况下最小值为0。无论服务器是如何构建的,缺省值都是300毫秒,最大可能值是4294967295毫秒(约为49.7天)。

  • replica_compressed_protocol

    Command-Line Format --replica-compressed-protocol[={OFF|ON}]
    System Variable replica_compressed_protocol
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔
    Default Value OFF

    replica_compressed_protocol 指定是否使用源/副本连接协议的压缩,如果源和副本都支持它。如果这个变量被禁用(缺省),连接将不压缩。对这个变量的更改将在下一个连接尝试中生效,这包括在START REPLICA语句中发出请求,以及运行的复制I/O(接收)线程重新连接。

    二进制日志事务压缩,启用binlog_transaction_compression系统变量,可以将带宽保存。如果您使用二进制日志事务压缩与协议压缩结合使用,协议压缩在数据上有更少的机会,但仍然可以压缩头部和未压缩的事件和事务负载。有关二进制日志事务压缩的更多信息,请参阅第7.4.4.5节,“二进制日志事务压缩”

    如果启用了replica_compressed_protocol,那么它将优先于CHANGE REPLICATION SOURCE TO语句中的SOURCE_COMPRESSION_ALGORITHMS选项。 在这种情况下,连接到源使用zlib压缩,如果源和副本都支持该算法。 如果replica_compressed_protocol被禁用,那么SOURCE_COMPRESSION_ALGORITHMS的值将生效。更多信息,请见第6.2.8节,“Connection Compression Control”

  • replica_exec_mode

    Command-Line Format --replica-exec-mode=mode
    System Variable replica_exec_mode
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 枚举
    Default Value

    IDEMPOTENT (NDB)

    STRICT (其他)

    Valid Values

    STRICT

    IDEMPOTENT

    replica_exec_mode控制复制线程在复制过程中解决冲突和错误的方式。IDEMPOTENT模式会抑制重复键和找不到键的错误;STRICT表示不会抑制这些错误。

    IDEMPOTENT模式旨在用于多源复制、循环复制和某些特殊的NDB集群复制场景。 (请见第25.7.10节,“NDB Cluster Replication: Bidirectional and Circular Replication”第25.7.12节,“NDB Cluster Replication Conflict Resolution”,获取更多信息。 NDB集群忽略任何对replica_exec_mode的明确设置,并总是将其视为IDEMPOTENT

    在MySQL Server 8.4中,STRICT模式是默认值。

    设置这个变量将立即对所有复制通道生效,包括正在运行的通道。

    对于除NDB之外的存储引擎,IDEMPOTENT模式应该只在您确定可以安全忽略重复键错误和键不存在错误时使用。它旨在用于NDB集群的故障转移场景,使用多源复制或环形复制,但不建议在其他场景中使用。

  • replica_load_tmpdir

    Command-Line Format --replica-load-tmpdir=dir_name
    System Variable replica_load_tmpdir
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 目录名称
    Default Value Value of --tmpdir

    replica_load_tmpdir指定了复制服务器在创建临时文件时使用的目录名称。设置该变量将立即生效,对于所有复制通道,包括正在运行的通道。变量的默认值是tmpdir系统变量的值,或者在该变量未指定时的默认值。

    当复制SQL线程复制LOAD DATA语句时,它将从relay log中提取要加载的文件,并将其转换为临时文件,然后将其加载到表中。如果源文件很大,临时文件也很大,因此可能需要使用该选项将临时文件存储在具有大量可用空间的文件系统中。在这种情况下,relay logs也可能很大,因此可能需要设置relay_log系统变量将relay logs存储在该文件系统中。

    指定的目录应该位于基于磁盘的文件系统(不是基于内存的文件系统)中,以便在机器重启时临时文件可以-survive。该目录也不能是操作系统在系统启动过程中清除的目录。然而,复制可以在重启后继续,如果临时文件已经被删除。

  • replica_max_allowed_packet

    Command-Line Format --replica-max-allowed-packet=#
    System Variable replica_max_allowed_packet
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 1073741824
    Minimum Value 1024
    Maximum Value 1073741824
    Unit 字节
    Block Size 1024

    replica_max_allowed_packet 设置了复制 SQL(applier)和 I/O(receiver)线程可以处理的最大数据包大小,以字节为单位。设置这个变量的效果立即生效,对所有复制通道有效,包括正在运行的通道。源可以写入比其max_allowed_packet设置更长的二进制日志事件,一旦添加了事件头。设置replica_max_allowed_packet的值必须大于源的max_allowed_packet设置,以避免使用行基于的复制大更新导致复制失败。

    这个全局变量总是具有一个正整数倍数为1024的值;如果您将其设置为某个不是的值,该值将被舍入到下一个高于1024的倍数以存储或使用;将replica_max_allowed_packet设置为0将使用1024(一个警告将在所有这些情况下发出)。默认值和最大值是1073741824(1 GB);最小值是1024。

  • replica_net_timeout

    Command-Line Format --replica-net-timeout=#
    System Variable replica_net_timeout
    Scope Global
    Dynamic Yes
    SET_VAR Hint Applies No
    Type Integer
    Default Value 60
    Minimum Value 1
    Maximum Value 31536000
    Unit

    replica_net_timeout 指定了源在等待更多数据或心跳信号前可以等待的秒数,以便复制连接断开,中止读取,尝试重新连接。设置这个变量没有立即效果。变量的状态将在所有后续START REPLICA命令中生效。

    默认值是60秒(一分钟)。第一次重试将立即发生。重试间隔由CHANGE REPLICATION SOURCE TO语句的SOURCE_CONNECT_RETRY选项控制,重试次数限制由SOURCE_RETRY_COUNT选项控制。

    心跳间隔,用于在 absence of data 如果连接仍然良好时避免超时,通过SOURCE_HEARTBEAT_PERIOD选项控制CHANGE REPLICATION SOURCE TO语句。心跳间隔默认为replica_net_timeout的半值,并记录在复制连接元数据存储库中,并在replication_connection_configuration性能Schema表中显示。请注意,修改replica_net_timeout的值或默认设置不会自动更改心跳间隔,无论是否使用之前计算的默认值。如果超时时间被更改,您必须使用CHANGE REPLICATION SOURCE TO语句来调整心跳间隔,以确保它在超时前发生。

  • replica_parallel_type

    Command-Line Format --replica-parallel-type=value
    Deprecated Yes
    System Variable replica_parallel_type
    Scope Global
    Dynamic Yes
    SET_VAR Hint Applies No
    Type Enumeration
    Default Value LOGICAL_CLOCK
    Valid Values

    DATABASE

    LOGICAL_CLOCK

    对于多线程复制(replicas,其中replica_parallel_workers设置为大于0的值),replica_parallel_type指定了决定哪些事务可以在复制器上并行执行的策略。该变量对不启用多线程的复制器无效。可能的值是:

    • LOGICAL_CLOCK: 在复制器上根据时间戳对事务进行并行处理,来自binary log的时间戳写入。依赖事务的跟踪基于它们的时间戳,以提供可能的并行化。

    • DATABASE: 更新不同的数据库的事务可以并行执行。这只适用于数据被分区到多个数据库,并且在源上独立和并发地更新这些数据库。不能存在跨数据库约束,因为这些约束可能在复制器上被违反。

    replica_preserve_commit_order启用时,您必须使用LOGICAL_CLOCK。默认情况下,多线程在副本服务器上启用(replica_parallel_workers=4),LOGICAL_CLOCK是默认值。(replica_preserve_commit_order也默认启用。)

    当复制拓扑结构使用多级副本时,LOGICAL_CLOCK可能在每个级别的副本远离源的每个级别上实现更少的并行化。为了补偿这个影响,您应该将binlog_transaction_dependency_tracking设置为WRITESETWRITESET_SESSION在源和每个中间副本上,以指定使用写集代替时间戳以实现并行化。

    当使用binlog_transaction_compression系统变量启用二进制日志事务压缩,如果replica_parallel_type设置为DATABASE,所有受事务影响的数据库将在事务排程前映射。使用二进制日志事务压缩与DATABASE策略可以减少并行性相比于未压缩的事务,这些事务将在每个事件上映射和排程。

    replica_parallel_type已弃用,同样支持事务并行化使用数据库分区的支持。预计在将来的一次发布中将删除这些支持,并且LOGICAL_CLOCK将被独自使用。

  • replica_parallel_workers

    Command-Line Format --replica-parallel-workers=#
    System Variable replica_parallel_workers
    Scope Global
    Dynamic Yes
    SET_VAR Hint Applies No
    Type Integer
    Default Value 4
    Minimum Value 0
    Maximum Value 1024

    replica_parallel_workers启用副本的多线程,并设置用于并行执行事务的applier线程数。当值大于或等于1时,副本使用指定的线程数来执行事务,plus一个协调线程读取事务从relay log并将其排程到工作者线程。当值为0时,只有一个线程读取和应用事务顺序。如果您使用多个复制通道,变量的值将应用于每个通道的线程。

    默认值为4,这意味着副本默认启用多线程。

    将该变量设置为0已弃用,会引发警告,并且在未来MySQL版本中可能会被删除。对于单个工作线程,设置replica_parallel_workers到1即可。

    replica_preserve_commit_order设置为ON(默认值)时, replica上的事务将在relay日志中按照相同的顺序外部化。事务的分布方式由replica_parallel_type确定。这些系统变量也具有适当的多线程默认值。

    要禁用并行执行,设置replica_parallel_workers到1,在这种情况下,replica使用一个协调线程来读取事务,并使用一个工作线程来应用它们,这意味着事务将被顺序应用。當replica_parallel_workers等于1时,replica_parallel_typereplica_preserve_commit_order系统变量无效且被忽略。如果replica_parallel_workers等于0,而CHANGE REPLICATION SOURCE TO选项GTID_ONLY启用时,replica将有一个协调线程和一个工作线程,正如replica_parallel_workers设置为1时一样。使用一个并行工作线程时,replica_preserve_commit_order系统变量也无效。

    设置replica_parallel_workers无立即效果,而是应用于所有后续START REPLICA语句。

    支持多线程的replica也由NDB Cluster 8.4提供。请参阅Section 25.7.11, “NDB Cluster Replication Using the Multithreaded Applier”,了解更多信息。

    增加工作线程的数量可以提高并行性。通常,这可以提高性能,直到某个点,超过该点增加工作线程将导致性能下降,因为并发性问题,如锁定竞争。理想的数量取决于硬件和工作负载;通常需要通过测试来确定。没有主键的表可能会对replica的性能产生更大的负面影响,特别是在replica_parallel_workers> 1时;因此,在启用该选项前,确保所有表都有主键。

  • replica_pending_jobs_size_max

    Command-Line Format --replica-pending-jobs-size-max=#
    System Variable replica_pending_jobs_size_max
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 128M
    Minimum Value 1024
    Maximum Value 16EiB
    Unit 字节
    Block Size 1024

    对于多线程复制,设置该变量将最大化可用的内存(以字节为单位),用于存储未应用的事件队列。设置该变量对非多线程复制无效。该变量的状态将在所有后续START REPLICA命令中生效。

    该变量的最小可能值为1024字节;默认值为128MB。最大可能值为18446744073709551615(16 exbibytes)。非精确的1024字节倍数将被舍入到下一个1024字节倍数之前存储。

    该变量的值是一个软限制,可以根据正常工作负载进行设置。如果一个 unusually large事件超过该大小,事务将被保持直到所有工作线程的队列为空,然后处理。所有后续事务都将被保持直到大事务完成。

  • replica_preserve_commit_order

    Command-Line Format --replica-preserve-commit-order[={OFF|ON}]
    System Variable replica_preserve_commit_order
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔
    Default Value ON

    对于多线程复制(replicas在replica_parallel_workers设置为大于0的值),设置replica_preserve_commit_order=ON确保事务在复制的relay日志中以相同的顺序执行和提交。该变量对非多线程复制无效。

    MySQL 8.4中,多线程功能默认启用在复制服务器上(replica_parallel_workers=4),因此replica_preserve_commit_order=ON是默认值,并且replica_parallel_type=LOGICAL_CLOCK也是默认值。此外,对replica_preserve_commit_order的设置将被忽略,如果replica_parallel_workers设置为1,因为在这种情况下,事务顺序将被保留。

    二进制日志和复制更新日志在复制服务器上不需要启用,以设置replica_preserve_commit_order=ON,可以禁用。如果想要。设置replica_preserve_commit_order=ON需要将replica_parallel_type设置为LOGICAL_CLOCK,MySQL 8.4的默认值。在更改replica_preserve_commit_orderreplica_parallel_type的值之前,必须停止复制SQL线程(如果您使用多个复制通道,需要停止所有复制通道的线程)。

    replica_preserve_commit_order=OFF设置时,多线程复制服务器可能会并行应用的事务commit出序。因此,检查最近执行的事务不保证源服务器上的所有前置事务已经在复制服务器上执行。可能会出现事务顺序的断续,这对日志和恢复在使用多线程复制服务器时有影响。请参阅第19.5.1.34节,“Replication and Transaction Inconsistencies”了解更多信息。

    replica_preserve_commit_order=ON设置时,执行的工作线程将等待所有前置事务commit后再commit。线程等待其他线程commit事务时,将报告其状态为Waiting for preceding transaction to commit。在这种模式下,多线程复制服务器从不进入源服务器未在的状态,这支持使用复制进行读取扩展。请参阅第19.4.5节,“Using Replication for Scale-Out”了解更多信息。

    Note
    • replica_preserve_commit_order=ON 不会防止源二进制日志位置延迟,其中Exec_master_log_pos位于执行事务的位置之前。请参见第19.5.1.34节,“Replication and Transaction Inconsistencies”

    • replica_preserve_commit_order=ON 不会保留提交顺序和事务历史,如果复制使用其二进制日志的过滤器,例如--binlog-do-db

    • replica_preserve_commit_order=ON 不会保留非事务性DML更新的顺序。这些可能在relay日志中提交前执行的交易,可能会导致relay日志中的交易顺序不一致。

    • 在使用语句式复制时,如果事务性和非事务性存储引擎参与一个非XA事务,该事务在源端回滚时,复制可能会将该事务复制到复制端。如果发生这种情况,多线程复制端没有二进制日志记录,无法处理事务回滚,因此复制端的提交顺序与relay日志中的事务顺序不一致。

  • replica_sql_verify_checksum

    Command-Line Format --replica-sql-verify-checksum[={OFF|ON}]
    System Variable replica_sql_verify_checksum
    Scope Global
    Dynamic Yes
    SET_VAR Hint Applies No
    Type Boolean
    Default Value ON

    replica_sql_verify_checksum 使复制SQL(applier)线程验证数据使用relay日志中的校验和。在发生不匹配时,复制端将停止并出现错误。设置该变量将立即生效,对所有复制通道,包括正在运行的通道。

    Note

    复制I/O(receiver)线程总是读取校验和,如果可能,从网络接受事件。

  • replica_transaction_retries

    Command-Line Format --replica-transaction-retries=#
    System Variable replica_transaction_retries
    Scope Global
    Dynamic Yes
    SET_VAR Hint Applies No
    Type Integer
    Default Value 10
    Minimum Value 0
    Maximum Value 18446744073709551615

    replica_transaction_retries 设置了单线程或多线程副本的自动重试失败事务的最大次数。设置该变量将立即生效,包括正在运行的通道。默认值为10。将变量设置为0将禁用自动重试事务。

    如果复制SQL线程由于InnoDB死锁或事务执行时间超过InnoDBinnodb_lock_wait_timeoutNDBTransactionDeadlockDetectionTimeoutTransactionInactiveTimeout而失败,它将自动重试replica_transaction_retries次,然后停止并出现错误。非临时错误的事务不予重试。

    性能Schema表replication_applier_status显示了每个复制通道上的重试次数,在COUNT_TRANSACTIONS_RETRIES列中。性能Schema表replication_applier_status_by_worker显示了单线程或多线程副本上的详细信息,包括每个工作线程的重试次数,并标识了导致最后一个事务和当前事务重试的错误。

  • replica_type_conversions

    Command-Line Format --replica-type-conversions=set
    System Variable replica_type_conversions
    Scope Global
    Dynamic Yes
    SET_VAR Hint Applies No
    Type Set
    Default Value
    Valid Values

    ALL_LOSSY

    ALL_NON_LOSSY

    ALL_SIGNED

    ALL_UNSIGNED

    replica_type_conversions 控制在使用行基于的复制时在复制服务器上的类型转换模式。其值是一个逗号分隔的零或多个元素列表,从列表中选择:ALL_LOSSYALL_NON_LOSSYALL_SIGNEDALL_UNSIGNED。将该变量设置为空字符串以禁止源和复制服务器之间的类型转换。设置该变量将立即生效,对所有复制通道,包括正在运行的通道。

    关于行基于的复制中属性提升和降低的类型转换模式的详细信息,请见行基于的复制:属性提升和降低

  • replication_optimize_for_static_plugin_config

    Command-Line Format --replication-optimize-for-static-plugin-config[={OFF|ON}]
    System Variable replication_optimize_for_static_plugin_config
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔
    Default Value OFF

    使用共享锁,以提高半同步复制的性能。该设置和replication_sender_observe_commit_only在 replica 数量增加时,帮助避免锁定竞争,提高性能。启用该系统变量时,半同步复制插件不能卸载,因此在卸载前必须禁用该变量。

    该系统变量可以在安装半同步复制插件前或后启用,并且可以在复制运行时启用。半同步复制源服务器也可以从启用该变量中获得性能提高,因为它们使用相同的锁定机制。

    replication_optimize_for_static_plugin_config 可以在 Group Replication 中启用在服务器上。 在这种情况下,它可能在锁定竞争高时提高性能。

  • replication_sender_observe_commit_only

    Command-Line Format --replication-sender-observe-commit-only[={OFF|ON}]
    System Variable replication_sender_observe_commit_only
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔
    Default Value OFF

    限制回调以提高半同步复制的性能。这个设置和replication_optimize_for_static_plugin_config在 replica 数量增加时都有帮助,因为锁定的竞争可能会减慢性能。

    这个系统变量可以在安装半同步复制插件前或后启用,并且可以在复制运行时启用。半同步复制源服务器启用这个系统变量也可以获得性能提高,因为它们使用与 replica 一样的锁定机制。

  • report_host

    Command-Line Format --report-host=host_name
    System Variable report_host
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串

    在 replica 注册到源服务器时要报告的 replica 主机名或 IP 地址。这值将出现在源服务器上的SHOW REPLICAS输出中。如果您不想让 replica 注册到源服务器,可以留空。

    Note

    源服务器不能简单地从 TCP/IP 套接字中读取 replica 服务器的 IP 地址,因为这可能会受到 NAT 和其他路由问题的影响。

  • report_password

    Command-Line Format --report-password=name
    System Variable report_password
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串

    在 replica 注册到源服务器时要报告的 replica 账户密码。这值将出现在源服务器上的SHOW REPLICAS输出中,如果源服务器使用了--show-replica-auth-info选项。

    虽然这个变量的名称可能会误导您,report_password与 MySQL 授权系统无关,因此可能与 MySQL 复制用户账户密码不同。

  • report_port

    Command-Line Format --report-port=port_num
    System Variable report_port
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value [slave_port]
    Minimum Value 0
    Maximum Value 65535

    连接到副本的TCP/IP端口号,用于在副本注册时报告给源服务器。只有在副本监听非默认端口或有特殊隧道从源服务器或其他客户端到副本时才设置此选项。如果您不确定,请不要使用此选项。

    该选项的默认值是副本实际使用的端口号。这也是SHOW REPLICAS显示的默认值。

  • report_user

    Command-Line Format --report-user=name
    System Variable report_user
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串

    副本注册时报告给源服务器的副本用户名称。这值将出现在SHOW REPLICAS的输出中,如果源服务器使用了--show-replica-auth-info选项。

    虽然该变量名称可能暗示它与MySQL用户权限系统相关,但report_user实际上与MySQL复制用户帐户无关,并且不一定是MySQL复制用户帐户的名称。

  • rpl_read_size

    Command-Line Format --rpl-read-size=#
    System Variable rpl_read_size
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 8192
    Minimum Value 8192
    Maximum Value 4294959104
    Unit 字节
    Block Size 8192

    系统变量rpl_read_size控制从二进制日志文件和中继日志文件中读取的最小数据量(以字节为单位)。如果对这些文件的磁盘I/O活动影响了性能,可以增加读取大小以减少文件读取和I/O停滞。

    rpl_read_size的最小和默认值是8192字节。该值必须是4KB的倍数。注意,每个读取二进制日志和中继日志文件的线程都将分配一个大小为该值的缓冲区,包括源服务器上的dump线程和副本服务器上的协调线程。设置较大值可能会影响内存使用。

  • rpl_semi_sync_replica_enabled

    Command-Line Format --rpl-semi-sync-replica-enabled[={OFF|ON}]
    System Variable rpl_semi_sync_replica_enabled
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔
    Default Value OFF

    rpl_semi_sync_replica_enabled控制副本服务器上的半同步复制是否启用。要启用或禁用插件,请将该变量设置为ONOFF(或1或0),分别。默认值为OFF

    该变量仅在副本服务器上安装了半同步复制插件时可用。

  • rpl_semi_sync_replica_trace_level

    Command-Line Format --rpl-semi-sync-replica-trace-level=#
    System Variable rpl_semi_sync_replica_trace_level
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 32
    Minimum Value 0
    Maximum Value 4294967295

    rpl_semi_sync_replica_trace_level控制副本服务器上的半同步复制调试跟踪级别。请参阅rpl_semi_sync_master_trace_level以获取可接受的值。

    该变量仅在副本服务器上安装了半同步复制插件时可用。

  • rpl_semi_sync_slave_enabled

    Command-Line Format --rpl-semi-sync-slave-enabled[={OFF|ON}]
    System Variable rpl_semi_sync_slave_enabled
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔
    Default Value OFF

    已弃用的同义词rpl_semi_sync_replica_enabled

  • rpl_semi_sync_slave_trace_level

    Command-Line Format --rpl-semi-sync-slave-trace-level=#
    System Variable rpl_semi_sync_slave_trace_level
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 32
    Minimum Value 0
    Maximum Value 4294967295

    已弃用的同义词,用于rpl_semi_sync_replica_trace_level.

  • rpl_stop_replica_timeout

    Command-Line Format --rpl-stop-replica-timeout=#
    System Variable rpl_stop_replica_timeout
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 31536000
    Minimum Value 2
    Maximum Value 31536000
    Unit

    您可以通过设置该变量来控制STOP REPLICA等待的时间(以秒为单位),以避免死锁在STOP REPLICA和其他SQL语句之间的连接。

    该变量的最大值和默认值为31536000秒(1年)。最小值为2秒。该变量的更改将在下一个STOP REPLICA语句中生效。

    该变量只影响发出STOP REPLICA语句的客户端。当超时达到时,客户端将返回错误消息,指出命令执行不完整。客户端然后停止等待复制I/O(接收器)和SQL(应用程序)线程停止,但复制线程将继续尝试停止,直到STOP REPLICA语句执行完成。

  • rpl_stop_slave_timeout

    Command-Line Format --rpl-stop-slave-timeout=#
    Deprecated
    System Variable rpl_stop_slave_timeout
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 31536000
    Minimum Value 2
    Maximum Value 31536000
    Unit

    已弃用同义词,用于rpl_stop_replica_timeout.

  • skip_replica_start

    Command-Line Format --skip-replica-start[={OFF|ON}]
    System Variable skip_replica_start
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔
    Default Value OFF

    skip_replica_start 告诉副本服务器在服务器启动时不启动复制I/O(接收器)和SQL(应用程序)线程。要在后续启动线程,请使用START REPLICA 语句。

    这个系统变量是只读的,可以使用PERSIST_ONLY关键字或@@persist_only限定符与SET语句来设置。命令行选项--skip-replica-start也可以设置这个系统变量。您可以使用系统变量代替命令行选项,以便使用 MySQL 服务器的权限结构,避免数据库管理员需要操作系统的特权访问权限。

  • skip_slave_start

    Command-Line Format --skip-slave-start[={OFF|ON}]
    Deprecated
    System Variable skip_slave_start
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔
    Default Value OFF

    已弃用的同义词--skip-replica-start

  • slave_checkpoint_group

    Command-Line Format --slave-checkpoint-group=#
    Deprecated
    System Variable slave_checkpoint_group
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 512
    Minimum Value 32
    Maximum Value 524280
    Block Size 8

    已弃用的同义词replica_checkpoint_group

  • slave_checkpoint_period

    Command-Line Format --slave-checkpoint-period=#
    Deprecated
    System Variable slave_checkpoint_period
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 300
    Minimum Value 1
    Maximum Value 4294967295
    Unit 毫秒

    已弃用,synonym for replica_checkpoint_period.

  • slave_compressed_protocol

    Command-Line Format --slave-compressed-protocol[={OFF|ON}]
    Deprecated
    System Variable slave_compressed_protocol
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔
    Default Value OFF

    已弃用,synonym for replica_compressed_protocol.

  • slave_exec_mode

    Command-Line Format --slave-exec-mode=mode
    System Variable slave_exec_mode
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 枚举
    Default Value

    IDEMPOTENT (NDB)

    STRICT (Other)

    Valid Values

    STRICT

    IDEMPOTENT

    已弃用,synonym for replica_exec_mode.

  • slave_load_tmpdir

    Command-Line Format --slave-load-tmpdir=dir_name
    Deprecated
    System Variable slave_load_tmpdir
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 目录名
    Default Value Value of --tmpdir

    已弃用,synonym for replica_load_tmpdir.

  • slave_max_allowed_packet

    Command-Line Format --slave-max-allowed-packet=#
    Deprecated
    System Variable slave_max_allowed_packet
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 1073741824
    Minimum Value 1024
    Maximum Value 1073741824
    Unit 字节
    Block Size 1024

    已弃用,synonym for replica_max_allowed_packet.

  • slave_net_timeout

    Command-Line Format --slave-net-timeout=#
    Deprecated
    System Variable slave_net_timeout
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 60
    Minimum Value 1
    Maximum Value 31536000
    Unit

    已弃用的别名,用于replica_net_timeout.

  • slave_parallel_type

    Command-Line Format --slave-parallel-type=value
    Deprecated
    System Variable slave_parallel_type
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 枚举
    Default Value LOGICAL_CLOCK
    Valid Values

    DATABASE

    LOGICAL_CLOCK

    已弃用的别名,用于replica_parallel_type.

  • slave_parallel_workers

    Command-Line Format --slave-parallel-workers=#
    Deprecated
    System Variable slave_parallel_workers
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 4
    Minimum Value 0
    Maximum Value 1024

    已弃用的别名,用于replica_parallel_workers.

  • slave_pending_jobs_size_max

    Command-Line Format --slave-pending-jobs-size-max=#
    Deprecated
    System Variable slave_pending_jobs_size_max
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 128M
    Minimum Value 1024
    Maximum Value 16EiB
    Unit 字节
    Block Size 1024

    已弃用的别名,用于replica_pending_jobs_size_max.

  • slave_preserve_commit_order

    Command-Line Format --slave-preserve-commit-order[={OFF|ON}]
    Deprecated
    System Variable slave_preserve_commit_order
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔
    Default Value ON

    已弃用的别名为replica_preserve_commit_order.

  • slave_skip_errors

    Command-Line Format --slave-skip-errors=name
    Deprecated
    System Variable slave_skip_errors
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value OFF
    Valid Values

    OFF

    [list of error codes]

    all

    ddl_exist_errors

    已弃用的别名为replica_skip_errors.

  • replica_skip_errors

    Command-Line Format --replica-skip-errors=name
    System Variable replica_skip_errors
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value OFF
    Valid Values

    OFF

    [list of error codes]

    all

    ddl_exist_errors

    通常情况下,复制时遇到错误时,复制将停止,这给了你机会来手动解决数据不一致。这变量使得复制SQL线程在遇到错误时继续复制,错误列表在变量值中指定。

  • slave_sql_verify_checksum

    Command-Line Format --slave-sql-verify-checksum[={OFF|ON}]
    Deprecated
    System Variable slave_sql_verify_checksum
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔
    Default Value ON

    已弃用的别名为replica_sql_verify_checksum.

  • slave_transaction_retries

    Command-Line Format --slave-transaction-retries=#
    Deprecated
    System Variable slave_transaction_retries
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 10
    Minimum Value 0
    Maximum Value (64-bit platforms) 18446744073709551615
    Maximum Value (32-bit platforms) 4294967295

    已弃用别名,为replica_transaction_retries

  • slave_type_conversions

    Command-Line Format --slave-type-conversions=set
    Deprecated
    System Variable slave_type_conversions
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type Set
    Default Value
    Valid Values

    ALL_LOSSY

    ALL_NON_LOSSY

    ALL_SIGNED

    ALL_UNSIGNED

    已弃用别名,为replica_type_conversions

  • sql_replica_skip_counter

    System Variable sql_replica_skip_counter
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 0
    Minimum Value 0
    Maximum Value 4294967295

    sql_replica_skip_counter变量指定从源服务器中跳过的事件数量。设置该选项无立即效果。该变量适用于下一个START REPLICA语句;下一个START REPLICA语句也将将该值更改回0。该变量设置为非零值时,并且存在多个复制通道配置时,START REPLICA语句只能使用FOR CHANNEL channel子句。

    该选项与GTID-基于的复制不兼容,在gtid_mode=ON时不能将其设置为非零值。如果您需要在使用GTIDs时跳过事务,请使用gtid_executed从源端。如果您已在复制通道上启用GTID分配使用CHANGE REPLICATION SOURCE TO语句的sql_replica_skip_counter可用。请参阅第19.1.7.3节,“跳过事务”.

    Important

    如果将该变量设置为跳过指定事件的数量将使复制从事件组的中间开始,复制将继续跳过直到找到下一个事件组的开始,并从该点开始。更多信息,请参阅第19.1.7.3节,“跳过事务”.

  • sql_slave_skip_counter

    Deprecated
    System Variable sql_slave_skip_counter
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 0
    Minimum Value 0
    Maximum Value 4294967295

    已弃用的别名sql_replica_skip_counter.

  • sync_master_info

    Command-Line Format --sync-master-info=#
    Deprecated
    System Variable sync_master_info
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 10000
    Minimum Value 0
    Maximum Value 4294967295

    已弃用的别名sync_source_info.

  • sync_relay_log

    Command-Line Format --sync-relay-log=#
    System Variable sync_relay_log
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 10000
    Minimum Value 0
    Maximum Value 4294967295

    如果该变量的值大于0,MySQL服务器将在每写入sync_relay_log事件到relay log后将其同步到磁盘(使用fdatasync())。设置该变量将立即生效,对所有复制通道都有效,包括正在运行的通道。

    sync_relay_log设置为0将不执行磁盘同步;在这种情况下,服务器将依赖操作系统在某个时间点将relay log的内容flush到磁盘。

    值为1是最安全的选择,因为在unexpected halt时你最多失去一个事件从relay log中。但是,这也是最慢的选择(除非磁盘有电池缓存,使同步非常快)。对于最具弹性的复制设置,请参见第19.4.2节,“Handling an Unexpected Halt of a Replica”

  • sync_relay_log_info

    Command-Line Format --sync-relay-log-info=#
    Deprecated
    System Variable sync_relay_log_info
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 10000
    Minimum Value 0
    Maximum Value 4294967295

    复制元数据存储库的更新事务数。当applier元数据存储库以InnoDB表的形式存储时,这个系统变量将被忽略。否则,如果applier元数据存储库以文件形式存储(已弃用),复制服务器将在这个事务数后将其relay-log.info文件同步到磁盘(使用fdatasync())。0(零)意味着文件内容将由操作系统flush。设置该变量将立即生效,对所有复制通道都有效,包括正在运行的通道。

    由于存储applier元数据的文件已弃用,这个变量也已弃用,服务器将在设置或读取该变量时raise一个警告。你应该预期sync_relay_log_info将在未来的MySQL版本中被删除,并且现在将可能依赖于它的应用程序迁移到新的设置。

  • sync_source_info

    Command-Line Format --sync-source-info=#
    System Variable sync_source_info
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 10000
    Minimum Value 0
    Maximum Value 4294967295

    sync_source_info 指定复制源更新连接元数据存储库的事件数。当连接元数据存储库以InnoDB表形式存储时(默认),它将在事件数达到该值后更新。如果连接元数据存储库以文件形式存储(已弃用),复制源将同步其master.info文件到磁盘(使用fdatasync())以达到该事件数。默认值为10000,零值表示存储库从不更新。设置该变量将立即生效,对所有复制通道,包括正在运行的通道。

  • terminology_use_previous

    Command-Line Format --terminology-use-previous=#
    System Variable terminology_use_previous
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 枚举
    Default Value NONE
    Valid Values

    NONE

    BEFORE_8_0_26

    BEFORE_8_2_0

    MySQL 8.0中对 instrumentation 名称进行了不兼容的更改,包含了术语masterslavemts(Multi-Threaded Slave),这些术语被分别更改为sourcereplicamta(Multi-Threaded Applier)。如果这些不兼容的更改影响了您的应用程序,请将terminology_use_previous设置为BEFORE_8_0_26以使 MySQL 服务器使用旧版本的名称来指定对象。这使得监控工具可以继续工作,直到它们可以更新到使用新名称为止。

    MySQL 8.4通常显示REPLICA_SIDE_DISABLED,而不是SLAVESIDE_DISABLEDSHOW CREATE EVENTSHOW EVENTS和查询 Information Schema EVENTS表的输出。您可以通过将terminology_use_previous设置为BEFORE_8_0_26BEFORE_8_2_0来使SLAVESIDE_DISABLED显示。

    terminology_use_previous系统变量设置为会话范围,以支持个人用户,或者将其设置为全局范围,以使其成为所有新会话的默认值。当使用全局范围时,慢查询日志将包含旧版本的名称。

    影响的仪表名称列举如下。 terminology_use_previous 系统变量只影响这些项目,不影响 MySQL 8.0 中引入的系统变量、状态变量和命令行选项的新别名,这些别名仍然可以使用,即使启用了它。

    • instrumented 锁(mutexes),在 mutex_instancesevents_waits_* Performance Schema 表中,以 wait/synch/mutex/ 前缀可见

    • 读写锁, 在 rwlock_instancesevents_waits_* Performance Schema 表中,以 wait/synch/rwlock/ 前缀可见

    • instrumented 条件变量,在 cond_instancesevents_waits_* Performance Schema 表中,以 wait/synch/cond/ 前缀可见

    • instrumented 内存分配,在 memory_summary_* Performance Schema 表中,以 memory/sql/ 前缀可见

    • 线程名称,在 threads Performance Schema 表中,以 thread/sql/ 前缀可见

    • 线程阶段,在 events_stages_* Performance Schema 表中,以 stage/sql/ 前缀可见,且在 threadsprocesslist Performance Schema 表中,以及 SHOW PROCESSLIST 语句、Information Schema processlist 表和慢查询日志中无前缀

    • 线程命令,在 events_statements_history*events_statements_summary_*_by_event_name Performance Schema 表中,以 statement/com/ 前缀可见,且在 threadsprocesslist Performance Schema 表中,以及 SHOW PROCESSLIST 语句、Information Schema processlist 表和 SHOW REPLICA STATUS 语句中无前缀