Citrix ADC

DataStream数据参考

介绍MySQL和TDS协议、数据库版本、认证方法和DataStream特性支持的字符集。它还描述了Citrix ADC如何处理事务请求和修改连接状态的特殊查询。

您还可以配置Citrix ADC设备来为DataStream特性生成审计日志消息。

支持的数据库版本、协议和认证方式

MySQL数据库 MS SQL数据库
数据库版本 MySQL数据库版本为4.1,5.0,5.1,5.4,5.5,5.6 MS SQL数据库版本2000,2000SP1, 2005, 2008, 2008R2, 2012, 2014 (Kerberos身份验证支持)
协议 MySQL协议版本10。有关MySQL协议的信息,请参见MySQL客户/服务器协议 表格数据流(TDS)协议7.1及更高版本。有关TDS协议的信息,请参见表格数据流协议
身份验证方法 支持MySQL本地认证。 支持SQL server认证和Windows认证(Kerberos/NTLM)。

字符集

DataStream特性只支持UTF-8字符集。

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

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

与连接相关的字符集可以在初始握手后通过以下两个查询更改:

SET NAMES  COLLATION < COLLATION > SET CHARACTER SET  

交易

在MySQL中,通过使用连接参数AUTOCOMMIT或BEGIN:COMMIT查询来标识事务。AUTOCOMMIT参数可以在初始握手期间设置,也可以在使用set AUTOCOMMIT查询建立连接之后设置。

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

在MySQL协议中,响应包含两个标志来指示该连接是否是事务:transaction和AUTOCOMMIT标志。

如果连接是一个事务,则设置transaction标志。或者,如果自动提交模式为OFF,则不设置AutoCommit标志。ADC设备解析响应,如果设置了TRANSACTION标志或未设置AUTOCOMMIT标志,则不进行连接多路复用。当这些条件不再成立时,ADC设备开始连接多路复用。

请注意

MS SQL也支持事务。

特殊查询

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

当接收到带有特殊查询的请求时,Citrix ADC设备向客户端发送一个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设备使用“存储和转发”机制。

审计日志消息支持

现在可以配置Citrix ADC设备,为DataStream特性生成审计日志消息。审计日志消息在客户端和服务器端连接建立、关闭或断开时生成。可以记录和查看的消息类别是ERROR和INFO。客户端连接的错误消息以“CS”开头,服务器端连接的错误消息以“SS”开头。例如,关闭连接(CS_CONN_CLOSED)的日志消息只包含连接ID。但是,已建立连接(CS_CONN_ESTD)的日志消息除了连接ID之外还包括用户名、数据库名和客户端IP地址等信息。

DataStream数据参考