22.5.6.2 X 插件选项和系统变量
控制 X 插件激活,可以使用以下选项:
-
Command-Line Format --mysqlx[=value]
Type 枚举 Default Value ON
Valid Values ON
OFF
FORCE
FORCE_PLUS_PERMANENT
这个选项控制服务器在启动时加载 X 插件。在 MySQL 8.4 中,X 插件默认启用,但可以使用这个选项控制其激活状态。
选项值应该是可用于插件加载的选项值,详见第7.6.1节,“安装和卸载插件”。
如果 X 插件启用,它将暴露多个系统变量,以控制其操作:
-
Command-Line Format --mysqlx-bind-address=addr
System Variable mysqlx_bind_address
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 字符串 Default Value *
X 插件监听 TCP/IP 连接的网络地址。这是一个系统变量,不是动态的,可以在启动时配置。这是 X 插件的等价于
bind_address
系统变量;详见该变量描述。默认情况下,X 插件在所有服务器主机 IPv4 接口上接受 TCP/IP 连接,并且,如果服务器主机支持 IPv6,则在所有 IPv6 接口上接受连接。如果指定了
mysqlx_bind_address
,其值必须满足以下要求:-
单个地址值,可以指定单个非通配符 IP 地址(IPv4 或 IPv6),或主机名,或者一个通配地址格式(
*
,0.0.0.0
,或::
)。 -
可以指定一个包含多个值的列表。每个值都必须指定单个非通配符 IP 地址(IPv4 或 IPv6)或主机名。通配地址格式(
*
,0.0.0.0
,或::
)在列表中不允许。 -
值也可以包括网络命名空间指定符。
IP 地址可以指定为 IPv4 或 IPv6 地址。对于任何值,如果是主机名,X 插件将解析名称到 IP 地址,并将绑定到该地址。如果主机名解析到多个 IP 地址,X 插件将使用第一个 IPv4 地址,如果没有,则使用第一个 IPv6 地址。
X 插件对不同类型的地址进行处理:
-
如果地址是
*
,X 插件接受所有服务器主机 IPv4 接口的 TCP/IP 连接,并且,如果服务器主机支持 IPv6,则接受所有 IPv6 接口的连接。使用该地址可以同时允许 IPv4 和 IPv6 连接的 X 插件。这是默认值。如果变量指定多个值,这个值不被允许。 -
如果地址是
0.0.0.0
,X 插件接受所有服务器主机 IPv4 接口的 TCP/IP 连接。如果变量指定多个值,这个值不被允许。 -
如果地址是
::
,X 插件接受所有服务器主机 IPv4 和 IPv6 接口的 TCP/IP 连接。如果变量指定多个值,这个值不被允许。 -
如果地址是 IPv4 映射地址,X 插件接受该地址的 TCP/IP 连接,既可以是 IPv4 格式,也可以是 IPv6 格式。例如,如果 X 插件绑定到
::ffff:127.0.0.1
,一个客户端,如 MySQL Shell,可以使用--host=127.0.0.1
或--host=::ffff:127.0.0.1
。 -
如果地址是常规 IPv4 或 IPv6 地址(例如
127.0.0.1
或::1
),X 插件只接受该 IPv4 或 IPv6 地址的 TCP/IP 连接。
这些规则适用于指定网络命名空间的地址:
-
可以为 IP 地址或主机名指定网络命名空间。
-
不能为通配符 IP 地址指定网络命名空间。
-
对于给定的地址,网络命名空间是可选的。如果给定,必须以
/
后缀形式指定。ns
-
没有
/
后缀的地址使用主机系统的全局命名空间。全局命名空间因此是默认值。ns
-
带有
/
后缀的地址使用命名空间名为ns
ns
。 -
主机系统必须支持网络命名空间,每个命名空间都必须先前设置。命名一个不存在的命名空间将产生错误。
-
如果变量值指定多个地址,可以包括全局命名空间、命名命名空间或混合。
关于网络命名空间的更多信息,请参见 第7.1.14节,“网络命名空间支持”。
Important因为 X 插件不是必需插件,因此如果指定的地址或地址列表中出现错误(与 MySQL 服务器对
bind_address
错误的处理方式不同),服务器启动时不会被阻止。使用 X 插件,如果列表中的某个地址无法解析或 X 插件无法绑定到该地址,X 插件将跳过该地址,记录错误信息,并尝试绑定到列表中的其它地址。X 插件的Mysqlx_address
状态变量仅显示绑定成功的地址列表。如果列表中的所有地址都无法绑定或单个指定地址失败,X 插件将记录错误信息ER_XPLUGIN_FAILED_TO_PREPARE_IO_INTERFACES
,指出 X 协议无法使用。mysqlx_bind_address
不是动态的,因此要解决任何问题,您必须停止服务器、更改系统变量值,然后重新启动服务器。 -
-
Command-Line Format --mysqlx-compression-algorithms=value
System Variable mysqlx_compression_algorithms
Scope Global Dynamic Yes SET_VAR
Hint AppliesNo Type Set Default Value deflate_stream,lz4_message,zstd_stream
Valid Values deflate_stream
lz4_message
zstd_stream
X 协议连接中允许使用的压缩算法。默认情况下,Deflate、LZ4 和 zstd 算法都是允许的。要禁止某些算法,设置
mysqlx_compression_algorithms
以包括您允许的算法。算法名称deflate_stream
、lz4_message
和zstd_stream
可以指定任意组合,顺序和大小写无关。如果您将系统变量设置为空字符串,则不允许任何压缩算法,仅使用未压缩的连接。使用算法特定的系统变量来调整每个允许算法的默认和最大压缩级别。有关详细信息,以及 X 协议连接压缩与 MySQL 服务器相应设置的关系,请参阅Section 22.5.5, “Connection Compression with X Plugin”. -
Command-Line Format --mysqlx-connect-timeout=#
System Variable mysqlx_connect_timeout
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 30
Minimum Value 1
Maximum Value 1000000000
Unit 秒 X Plugin 等待从新连接的客户端接收第一个数据包的秒数。这是 X Plugin 等价于
connect_timeout
的变量;详见该变量描述以获取更多信息。 -
mysqlx_deflate_default_compression_level
Command-Line Format --mysqlx_deflate_default_compression_level=#
System Variable mysqlx_deflate_default_compression_level
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 3
Minimum Value 1
Maximum Value 9
服务器在 X 协议连接上使用 Deflate 算法的默认压缩级别。指定级别为整数,从 1(最低压缩努力)到 9(最高努力)。如果客户端不请求压缩级别,则使用该级别。如果不指定该系统变量,服务器将使用级别 3。详见第22.5.5节,“X Plugin 连接压缩”。
-
mysqlx_deflate_max_client_compression_level
Command-Line Format --mysqlx_deflate_max_client_compression_level=#
System Variable mysqlx_deflate_max_client_compression_level
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 5
Minimum Value 1
Maximum Value 9
服务器允许的最大压缩级别为 Deflate 算法在 X 协议连接上使用的压缩级别。该级别的范围与默认压缩级别相同。如果客户端请求的压缩级别高于该级别,服务器将使用该级别。如果不指定该系统变量,服务器将设置最大压缩级别为 5。
-
mysqlx_document_id_unique_prefix
Command-Line Format --mysqlx-document-id-unique-prefix=#
System Variable mysqlx_document_id_unique_prefix
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 0
Minimum Value 0
Maximum Value 65535
设置服务器在添加文档到集合时生成的文档ID的前4个字节。将该变量设置为每个实例的唯一值,可以确保文档ID在实例之间唯一。请参阅Understanding Document IDs。
-
Command-Line Format --mysqlx-enable-hello-notice[={OFF|ON}]
System Variable mysqlx_enable_hello_notice
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔 Default Value ON
控制发送到classic MySQL协议客户端的消息,这些客户端尝试连接到X Protocol。启用时,尝试连接到X Protocol的客户端收到错误信息,指出他们使用了错误的协议。
-
mysqlx_idle_worker_thread_timeout
Command-Line Format --mysqlx-idle-worker-thread-timeout=#
System Variable mysqlx_idle_worker_thread_timeout
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 60
Minimum Value 0
Maximum Value 3600
Unit 秒 空闲工作线程的超时时间(秒)。
-
Command-Line Format --mysqlx-interactive-timeout=#
System Variable mysqlx_interactive_timeout
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 28800
Minimum Value 1
Maximum Value 2147483
Unit 秒 交互式客户端超时时间(秒)。
-
mysqlx_lz4_default_compression_level
Command-Line Format --mysqlx_lz4_default_compression_level=#
System Variable mysqlx_lz4_default_compression_level
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 2
Minimum Value 0
Maximum Value 16
服务器在 X 协议连接上使用 LZ4 算法的默认压缩级别。指定级别为整数,从 0(最低压缩努力)到 16(最高压缩努力)。如果客户端不请求压缩级别,则使用该级别。如果您不指定该系统变量,服务器将使用级别 2 作为默认值。更多信息,请见第 22.5.5 节,“X 插件中的连接压缩”。
-
mysqlx_lz4_max_client_compression_level
Command-Line Format --mysqlx_lz4_max_client_compression_level=#
System Variable mysqlx_lz4_max_client_compression_level
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 8
Minimum Value 0
Maximum Value 16
服务器允许的最大压缩级别,用于 X 协议连接上的 LZ4 算法。级别范围与默认压缩级别相同。如果客户端请求的压缩级别高于该级别,服务器将使用该级别。如果您不指定该系统变量,服务器将设置最大压缩级别为 8。
-
Command-Line Format --mysqlx-max-allowed-packet=#
System Variable mysqlx_max_allowed_packet
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 67108864
Minimum Value 512
Maximum Value 1073741824
Unit 字节 X 插件可以接收的最大网络包大小。这限制也适用于压缩连接,所以网络包在解压缩后必须小于该大小。这是 X 插件的等价于
max_allowed_packet
变量;见该变量描述的更多信息。 -
Command-Line Format --mysqlx-max-connections=#
System Variable mysqlx_max_connections
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 100
Minimum Value 1
Maximum Value 65535
X Plugin 可以同时处理的最大客户端连接数。这与
max_connections
变量相同,详见该变量描述。对该变量进行修改,如果新的值小于当前连接数,新的限制仅适用于新连接。
-
Command-Line Format --mysqlx-min-worker-threads=#
System Variable mysqlx_min_worker_threads
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 2
Minimum Value 1
Maximum Value 100
X Plugin 用于处理客户端请求的最小工作线程数。
-
Command-Line Format --mysqlx-port=port_num
System Variable mysqlx_port
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 整数 Default Value 33060
Minimum Value 1
Maximum Value 65535
X Plugin 监听 TCP/IP 连接的网络端口。这与
port
变量相同,详见该变量描述。 -
Command-Line Format --mysqlx-port-open-timeout=#
System Variable mysqlx_port_open_timeout
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 整数 Default Value 0
Minimum Value 0
Maximum Value 120
Unit 秒 X Plugin 等待 TCP/IP 端口变为可用的秒数。
-
Command-Line Format --mysqlx-read-timeout=#
System Variable mysqlx_read_timeout
Scope 会话 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 30
Minimum Value 1
Maximum Value 2147483
Unit 秒 X 插件等待阻塞读操作完成的秒数。读操作在这个时间内未完成,X 插件将关闭连接,并将错误代码ER_IO_READ_ERROR返回给客户端应用程序。
-
Command-Line Format --mysqlx-socket=file_name
System Variable mysqlx_socket
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 字符串 Default Value /tmp/mysqlx.sock
X 插件用于连接的 Unix 套接字文件路径。这设置仅在 Unix 操作系统上使用。客户端可以使用这个套接字连接到 MySQL 服务器使用 X 插件。
默认的
mysqlx_socket
路径和文件名基于 MySQL 服务器的默认套接字文件路径和文件名,添加一个x
到文件名。默认的套接字文件路径和文件名为/tmp/mysql.sock
,因此默认的 X 插件套接字文件路径和文件名为/tmp/mysqlx.sock
。如果在服务器启动时使用
socket
系统变量指定了不同的套接字文件路径和文件名,这不会影响 X 插件套接字文件的默认值。在这种情况下,如果您想将两个套接字文件存储在单个路径中,您必须设置mysqlx_socket
系统变量。例如,在配置文件中:socket=/home/sockets/mysqld/mysql.sock mysqlx_socket=/home/sockets/xplugin/xplugin.sock
如果您在编译时使用
MYSQL_UNIX_ADDR
编译选项改变默认套接字文件路径,这将影响 X 插件套接字文件的默认值。如果您想在编译时设置不同的默认值,请使用MYSQLX_UNIX_ADDR
编译选项。环境变量Section 6.9, “环境变量”也可以在服务器启动时设置 X 插件套接字文件的默认值。如果您设置了这个环境变量,它将覆盖编译的
MYSQLX_UNIX_ADDR
值,但将被mysqlx_socket
值覆盖。 -
Command-Line Format --mysqlx-ssl-ca=file_name
System Variable mysqlx_ssl_ca
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 文件名 Default Value NULL
系统变量
mysqlx_ssl_ca
类似ssl_ca
, 但它适用于X插件,而不是MySQL Server的主要连接接口。有关配置X插件加密支持的信息,请参见第22.5.3节,“使用X插件加密连接”。 -
Command-Line Format --mysqlx-ssl-capath=dir_name
System Variable mysqlx_ssl_capath
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 目录名 Default Value NULL
系统变量
mysqlx_ssl_capath
类似ssl_capath
, 但它适用于X插件,而不是MySQL Server的主要连接接口。有关配置X插件加密支持的信息,请参见第22.5.3节,“使用X插件加密连接”。 -
Command-Line Format --mysqlx-ssl-cert=file_name
System Variable mysqlx_ssl_cert
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 文件名 Default Value NULL
系统变量
mysqlx_ssl_cert
类似ssl_cert
, 但它适用于X插件,而不是MySQL Server的主要连接接口。有关配置X插件加密支持的信息,请参见第22.5.3节,“使用X插件加密连接”。 -
Command-Line Format --mysqlx-ssl-cipher=name
System Variable mysqlx_ssl_cipher
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 字符串 Default Value NULL
mysqlx_ssl_cipher
系统变量类似于ssl_cipher
, 但它适用于 X 插件,而不是 MySQL 服务器的主要连接接口。有关配置 X 插件加密支持的信息,请见第 22.5.3 节,“使用 X 插件加密连接”。 -
Command-Line Format --mysqlx-ssl-crl=file_name
System Variable mysqlx_ssl_crl
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 文件名 Default Value NULL
mysqlx_ssl_crl
系统变量类似于ssl_crl
, 但它适用于 X 插件,而不是 MySQL 服务器的主要连接接口。有关配置 X 插件加密支持的信息,请见第 22.5.3 节,“使用 X 插件加密连接”。 -
Command-Line Format --mysqlx-ssl-crlpath=dir_name
System Variable mysqlx_ssl_crlpath
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 目录名 Default Value NULL
mysqlx_ssl_crlpath
系统变量类似于ssl_crlpath
, 但它适用于 X 插件,而不是 MySQL 服务器的主要连接接口。有关配置 X 插件加密支持的信息,请见第 22.5.3 节,“使用 X 插件加密连接”。 -
Command-Line Format --mysqlx-ssl-key=file_name
System Variable mysqlx_ssl_key
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 文件名 Default Value NULL
《
mysqlx_ssl_key
》系统变量类似于《ssl_key
》,只是它适用于X插件,而不是MySQL Server的主连接接口。有关X插件加密连接的配置信息,请见第22.5.3节,“使用X插件加密连接”。 -
Command-Line Format --mysqlx-wait-timeout=#
System Variable mysqlx_wait_timeout
Scope 会话 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 28800
Minimum Value 1
Maximum Value 2147483
Unit 秒 X插件等待连接上的活动时间。等待时间过后,如果读操作不成功,X插件关闭连接。如果客户端非交互式,会话变量的初始值从全局《
mysqlx_wait_timeout
》变量复制。如果客户端交互式,会话变量的初始值从会话《mysqlx_interactive_timeout
》变量复制。 -
Command-Line Format --mysqlx-write-timeout=#
System Variable mysqlx_write_timeout
Scope 会话 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 60
Minimum Value 1
Maximum Value 2147483
Unit 秒 X插件等待阻塞写操作完成的时间。等待时间过后,如果写操作不成功,X插件关闭连接。
-
《
mysqlx_zstd_default_compression_level
》Command-Line Format --mysqlx_zstd_default_compression_level=#
System Variable mysqlx_zstd_default_compression_level
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 3
Minimum Value -131072
Maximum Value 22
服务器用于 X 协议连接的 zstd 算法的默认压缩级别。从 zstd 库版本 1.4.0 开始,您可以设置 1 到 22 之间的正整数(最高压缩努力),或负整数,表示逐渐降低的努力。值为 0 将被转换为值 1。对于 zstd 库的早期版本,您只能指定值 3。如果客户端在能力negotiation中没有请求压缩级别,这个级别将被使用。如果您不指定这个系统变量,服务器将使用级别 3。更多信息,请见第 22.5.5 节,“X 插件连接压缩”。
-
mysqlx_zstd_max_client_compression_level
Command-Line Format --mysqlx_zstd_max_client_compression_level=#
System Variable mysqlx_zstd_max_client_compression_level
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 11
Minimum Value -131072
Maximum Value 22
服务器允许的 zstd 算法在 X 协议连接上的最大压缩级别。这个范围与默认压缩级别相同。如果客户端请求的压缩级别高于这个级别,服务器将使用您设置的级别。如果您不指定这个系统变量,服务器将设置最大压缩级别为 11。