ADC

DataStream 参考

本参考文献描述了 MySQL 和 TDS 协议、数据库版本、身份验证方法和 DataStream 功能支持的字符集。它还描述了 NetScaler 如何处理修改连接状态的事务请求和特殊查询。

您也可以将 NetScaler 设备配置为为 DataStream 功能生成审核日志消息。

支持的数据库版本、协议和身份验证方法

  MySQL MS SQL 数据库
数据库版本 MySQL 数据库版本 4.1、5.0、5.1、5.4、5.5、5.6 MS SQL 数据库版本 70、2000、2000SP1、2005、2008、2008R2、2012、2014(支持 Kerberos 身份验证)。您可以通过配置 NetScaler 参数 -mssqlServerVersion 2014,在 2016、2017、2019 和 2022 中使用 TDS 7.4 配置后端 MS SQL 服务器。只有 MS SQL 版本 2012 和 2014 年才支持 Always On 可用性组。
协议 MySQL 协议版本 10。有关 MySQL 协议的信息,请参阅 MySQL 客户端/服务器协议 表格数据流 (TDS) 协议版本 7.1 到 7.4。有关 TDS 协议的信息,请参阅 表格式数据流协议
身份验证方法 支持 MySQL 本地身份验证。 支持 SQL 服务器身份验证和 Windows 身份验证 (kerberos/ntlm)。

角色集

DataStream 功能仅支持 UTF-8 字符集。

客户端在发送请求时使用的字符集可能与数据库服务器响应中使用的字符集不同。尽管 charset 参数是在建立连接期间设置的,但可以通过发送 SQL 查询随时对其进行更改。字符集与连接相关联,因此,对具有一个字符集的连接的请求无法多路复用到具有不同字符集的连接上。

NetScaler 设备解析客户端发送的查询和数据库服务器发送的响应。

在初次握手之后,可以使用以下两个查询来更改与连接相关的字符集:

SET NAMES <charset> COLLATION <collation>

SET CHARACTER SET <charset>
<!--NeedCopy-->

Transactions(事务数)

在 MySQL 中,使用连接参数 AUTOCOMMIT 或 BEGIN: COMMIT 查询来识别事务。AUTOCOMMIT 参数可以在初次握手期间设置,也可以在建立连接后使用查询 SET AUTOCOMMIT 进行设置。

NetScaler 设备会显式解析每个查询,以确定事务的开始和结束。

在 MySQL 协议中,响应包含两个用于指示连接是否为事务的标志:事务和自动提交标志。

如果连接是事务,则设置事务标志。或者,如果自动提交模式处于关闭状态,则未设置 AUTOCOMMIT 标志。ADC 设备会解析响应,如果设置了 TRANSACTION 标志或未设置 AUTOCOMMIT 标志,它不会进行连接多路复用。当这些条件不再成立时,ADC 设备将开始连接多路复用。

注意

MS SQL 也支持事务。

特殊查询

有些特殊查询(例如 SET 和 PREPARE)会修改连接状态并可能中断请求切换,因此,需要以不同的方式处理这些查询。

在收到带有特殊查询的请求时,NetScaler 设备向客户端发送 OK 响应,并将请求存储在连接中。

当收到非特殊查询(例如 INSERT 和 SELECT)以及存储的查询时,ADC 设备会查找已将存储的查询发送到数据库服务器的服务器端连接。如果不存在此类连接,ADC 设备将创建连接,并首先发送存储的查询,然后使用非特殊查询发送请求。

在 SET、USE db 和 INIT_DB 特殊查询中,设备修改服务器端连接中与特殊查询对应的字段。这种修改可以更好地重用服务器端连接。

每个连接中仅存储 16 个查询。

以下是 ADC 设备已修改行为的特殊查询列表。

  • 设置查询

    SET SQL 查询定义了与连接相关的变量。这些查询也用于定义全局变量,但截至目前,ADC 设备无法区分局部变量和全局变量。对于此查询,ADC 设备使用“存储并转发”机制。

  • 使用 <db> 查询

    使用此查询,用户可以更改与连接关联的数据库。在这种情况下,ADC 设备会解析发送的 <db> 值并修改服务器端连接中的字段,以反映要使用的新数据库。

  • INIT_DB 命令

    使用此查询,用户可以更改与连接关联的数据库。在这种情况下,ADC 设备会解析发送的 <init_db> 值并修改服务器端连接中的字段,以反映要使用的新数据库。

  • COM_PREPARE

    ADC 设备在收到此命令时停止请求切换。

  • 准备查询

    此查询用于创建与连接关联的预处理语句。对于此查询,ADC 设备使用“存储并转发”机制。

审核日志消息支持

现在,您可以将 NetScaler 设备配置为为 DataStream 功能生成审核日志消息。建立、关闭或断开客户端和服务器端连接时,会生成审核日志消息。您可以记录和查看的消息类别为 ERROR 和 INFO。客户端连接的错误消息以“CS”开头,服务器端连接的错误消息以“SS”开头。必要时提供其他信息。例如,已关闭的连接 (CS_CONN_CLOSED) 的日志消息仅包含连接 ID。但是,已建立连接 (CS_CONN_ESTD) 的日志消息除了连接 ID 之外还包括用户名、数据库名称和客户端 IP 地址等信息。

DataStream 参考