搜索

更新时间: 2023-11-15 18:00:07

数据库自治服务DAS提供搜索功能,查询并导出SQL语句对应的各种信息,本文介绍如何在SQL洞察和审计中使用搜索功能。

前提条件

支持的数据库和地域

SQL洞察和审计当前存在新、旧两个版本:

  • 新版:相对于旧版,变更了底层存储架构,通过冷热存储混合实现降本增效,使用成本大大降低。详细差异请参见SQL洞察和审计的新版与旧版有什么差异?

  • 旧版:当数据库实例和所属地域支持新版时,可以手动升级到新版,详情请参见旧版SQL洞察和审计如何升级到新版?

    重要
    • 华南2(河源)、华北6(乌兰察布)地域的数据库实例暂不支持将旧版SQL洞察和审计迁移到新版。

    • 华北1(青岛)、华南3(广州)、华北3(张家口)、中国(香港)和新加坡地域的数据库实例仅支持将数据存储时长小于等于30天的旧版SQL洞察和审计迁移到新版。如果旧版SQL洞察和审计的数据存储时长大于30天,可以修改SQL洞察和审计数据存储时长后再进行迁移。减少SQL洞察和审计数据存储时长后,DAS会立刻将超过存储时长的数据清空,请谨慎操作。

各个版本支持的数据库和地域如下:

版本

数据库

地域

新版

  • RDS MySQL

  • PolarDB MySQL版

华东1(杭州)、华东2(上海)、华北1(青岛)、华北2(北京)、华南1(深圳)、华南3(广州)、华南2(河源)、华北3(张家口)、华北6(乌兰察布)、中国(香港)和新加坡

旧版

  • RDS MySQL

  • RDS SQL Server

  • PolarDB MySQL版

说明

不支持RDS SQL Server 2008 R2高可用系列。

华东1(杭州)、华东2(上海)、华北1(青岛)、华北2(北京)、华南1(深圳)、华北3(张家口)、华北5(呼和浩特)、西南1(成都)、华南3(广州)、华南2(河源)、华北6(乌兰察布)、中国(香港)、新加坡、马来西亚(吉隆坡)和印度尼西亚(雅加达)

RDS PostgreSQL

华东1(杭州)、华东2(上海)、华北2(北京)、华南1(深圳)、华北3(张家口)、新加坡、马来西亚(吉隆坡)和印度尼西亚(雅加达)

PolarDB-X 2.0

华东1(杭州)、华东2(上海)、华北2(北京)、华南1(深圳)和新加坡

注意事项

  • 日志列表中SQL语句的状态成功时,只表示该条SQL执行成功且没有异常。例如,发生事务回滚时,事务中的单条SQL执行成功且没有异常,那么日志列表中该条SQL的状态会标识为成功

  • 对于RDS MySQLPolarDB MySQL版实例,由于连接可能会被复用,所以日志列表中显示的IP地址和端口,可能会与客户端实际的IP地址和端口不一致。详情请参见RDS MySQL连接池PolarDB MySQL版连接池

  • SQL日志中记录的SQL语句最大长度为8192字节,超过部分不再记录。其中RDS MySQLPolarDB MySQL版实例记录的SQL语句最大长度受参数控制:

    • 当参数取值小于等于8192字节时,SQL语句最大长度为参数设定值,超过部分不再记录。由于信息采集处理时会增加前缀标注,实际记录的SQL语句最大长度略小于参数设定值。

    • 当参数取值大于8192字节时,SQL语句最大长度为8192字节,超过部分不再记录。由于信息采集处理时会增加前缀标注,实际记录的SQL语句最大长度略小于8192字节。

    说明
    • RDS MySQLPolarDB MySQL版的5.6、5.7版本由loose_rds_audit_max_sql_size参数控制记录长度。

    • RDS MySQLPolarDB MySQL版的8.0版本由loose_rds_audit_log_event_buffer_size参数控制记录长度。

操作步骤

  1. 登录DAS控制台

  2. 在左侧导航栏中,单击实例监控

  3. 找到目标实例,单击实例ID,进入目标实例详情页。

  4. 在左侧导航栏单击SQL洞察和审计,然后在右侧打开的页面单击搜索,设置如下参数作为查询条件。

    参数

    说明

    时间范围

    根据实际需要选择查询的时间范围。

    在线查询时间范围最多为24小时,您可以在数据库实例SQL洞察存储时长范围内设置任意的查询开始时间,查看最多24小时的数据。这是因为SQL洞察记录所有数据库行为,会记录大量SQL语句,在线查询选择时间范围过大,会导致长时间没有返回查询结果,甚至查询超时。

    说明
    • 只能查询开启DAS专业版后且在数据存储时长范围内的数据。

    • 对于旧版SQL洞察和审计,如果需要查询更大时间范围的SQL记录,请您导出后进行查询。导出功能会异步导出日志,适合大时间范围内的查询。

    • 对于新版SQL洞察和审计,当前只支持查询和导出最多24小时的数据。

    关键字

    可多字段组合查询,不支持模糊查询,字段间以空格分隔。

    说明

    查询的关键字至少包含4个字符。

    用户

    用户名,可组合查询,如:user1 user2 user3。

    数据库

    可组合查询,如:DB1 DB2 DB3。

    操作类型

    选择需要查询的操作类型,可多选。

    说明

    您可开启高级查询输入更多信息以缩小搜索范围。

  5. 单击查询,即可看到日志列表SQL语句的具体信息。

    您可单击导出,勾选需要的导出字段导出SQL记录。通过设置导出时间范围来导出更大时间范围的SQL记录。

    对于新版SQL洞察和审计,导出数据时,请选择SQL日志中不包含的CSV分隔符,并参见设置并打开导出的CSV文件,使导出数据可以分列显示。

    重要
    • 单次最多可导出1000万条数据。

    • 对于新版SQL洞察和审计,查询或导出冷存储的数据时,系统会创建对应的查询或导出任务,您可以在任务列表页面,查看任务进度及历史任务。对于查询任务,系统会按量收取数据查询费用,详情请参见产品计费(新版计费方式)

    s

设置并打开导出的CSV文件

当导出的SQL日志包含数据分隔符时,使用Excel等工具打开CSV文件时可能会出现数据没有分列显示的现象。为了避免该问题,新版SQL洞察和审计的搜索功能在导出CSV文件时,增加了可供选择的CSV分隔符。本文以Windows系统下的Excel 2019版为例,介绍如何设置CSV文件,使导出数据可以分列显示。

  1. 创建导出任务时,在提示界面,选择SQL日志中不包含的分隔符,例如$

    image..png
  2. 使用Excel工具打开导出的CSV文件。

  3. 选中需要分列显示的数据,在Excel工具栏中选择数据 > 分列

  4. 文本分列向导原始数据类型区域,选择分隔符号,单击下一步

  5. 分隔符号区域,选择其他并输入$,单击下一步

    数据预览区域,可预览分列的效果。

  6. 列数据格式区域,选择常规,单击完成

常见问题

Q:为什么RDS MySQLPolarDB MySQL版数据库实例搜索功能的日志列表中,有些SQL语句实际有数据返回,但扫描行数显示为0?

A:数据库实例开启了query_cache_type。日志列表中,SQL语句的扫描行数统计的是在InnoDB引擎层扫描的行数,开启query_cache_type后,MySQL会尝试将查询结果缓存起来,如果后续有相同的查询请求到来,且查询缓存命中,则不会再到InnoDB层进行查询,直接返回缓存结果。因此,实际有数据返回,但日志列表中统计的扫描行数为0。

相关API

对于RDS MySQL、RDS PostgreSQL和RDS SQL Server数据库实例,可以使用如下API接口查询SQL日志:

API

描述

DescribeSQLLogRecords

查询RDS实例的SQL洞察(SQL审计)日志。

DescribeSQLLogFiles

查询SQL洞察(SQL审计)导出文件列表。

阿里云首页 数据库自治服务 DAS 相关技术圈