文档

SQL洞察

更新时间:

PolarDB MySQL版SQL洞察功能已升级为SQL洞察和审计。SQL洞察和审计由数据库自治服务DAS提供,在全量请求和安全审计的基础上,融合了搜索、SQL洞察、安全审计以及流量回放和压测等功能,帮助您更好地获取SQL语句的具体信息、排查各种性能问题、识别高危风险来源、验证实例规格。

背景信息

开启SQL洞察和审计功能可以记录所有DQL、DML和DDL操作信息,这些信息是通过数据库内核输出,对系统CPU消耗极低。

前提条件

如果是RAM用户,使用搜索功能时,需要为RAM用户授予AliyunPolardbReadOnlyWithSQLLogArchiveAccess权限。如何为RAM用户授权,请参见创建和管理RAM用户

说明

您也可以通过自定义权限策略授予RAM用户使用搜索(包含导出)功能的权限,详情请参见通过自定义权限策略授权RAM用户使用SQL洞察和审计的搜索(包含导出)功能

功能说明

支持的功能

地域

计费

SQL洞察和审计(新版)

  • 搜索

  • SQL洞察

  • 安全审计

华东1(杭州)、华东2(上海)、华北2(北京)华南1(深圳)、华北3(张家口)、中国(香港)、新加坡

  • 如果全新开启SQL洞察和审计功能,由DAS侧收取,详情请参见计费概览

  • 如果数据库实例在SQL洞察升级为SQL洞察和审计之前已开启了SQL洞察功能,则费用由PolarDB MySQL版侧收取。详情请参见SQL洞察计费规则(可选)

    说明
    • 您可以在SQL洞察页签弹出的升级对话框中单击前往购买,升级为SQL洞察和审计(旧版)。升级后费用由DAS侧收取。

    • SQL洞察和审计(新版)和SQL洞察和审计(旧版)的差异请参见计费概览

    • 当集群所属地域支持SQL洞察和审计(新版)时,您可以将SQL洞察和审计(旧版)升级至SQL洞察和审计(新版),详情请参见迁移到新版

SQL洞察和审计(旧版)

  • 搜索

  • SQL洞察

  • 安全审计

  • 流量回放和压测

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

SQL洞察

  • 搜索

  • 分析

除上述地域、菲律宾(马尼拉)、泰国(曼谷)和韩国(首尔)之外的其他地域

PolarDB MySQL版侧收取,详情请参见SQL洞察计费规则(可选)

  • 搜索(审计):查询并导出SQL语句执行历史及其对应的各种信息,如数据库状态、执行时间等。

  • SQL洞察:对指定时间SQL进行健康情况诊断、性能问题排查、业务流量分析等。

  • 安全审计:可自动识别高危SQL、SQL注入、新增访问来源等风险。

  • 流量回放和压测:提供流量回放和压测功能,帮助您验证您的实例规格是否需要扩容 ,有效应对业务流量高峰。

  • 分析:对指定时间段的SQL进行分析,找出异常SQL,定位性能问题。

开通SQL洞察和审计

  1. 登录PolarDB控制台

  2. 在左侧导航栏单击集群列表

  3. 在左上角,选择集群所在地域。

  4. 找到目标集群,单击集群ID。

  5. 在左侧导航栏中,选择日志与审计 > SQL洞察

  6. 开通SQL洞察和审计。

    • 如果是SQL洞察和审计(旧版)或SQL洞察和审计(新版),单击一键开启,开通SQL洞察和审计

      说明

      如果您当前的阿里云账号未开通DAS专业版,请按照界面提示,开通DAS专业版,详细信息请参见管理DAS经济版和企业版

    • 如果是SQL洞察,单击正式版,选择SQL审计日志的存储时长并单击确定,开通SQL洞察和审计

      说明
      • SQL洞察和审计默认存储时长为30天,您可以在服务设置中修改存储时长。

      • 超过存储时长的SQL日志将被删除。

  7. 在右侧页面中单击对应功能页签即可查看相关信息。

修改SQL日志的存储时长

  1. 登录PolarDB控制台

  2. 在左侧导航栏单击集群列表

  3. 在左上角,选择集群所在地域。

  4. 找到目标集群,单击集群ID。

  5. 在左侧导航栏中,选择日志与审计 > SQL洞察

  6. 单击右上角服务设置

  7. 修改存储时长并单击确定

关闭SQL洞察和审计

说明

SQL洞察和审计功能关闭后,SQL审计日志会被清空。请将SQL审计日志导出并保存至本地后,再关闭SQL洞察和审计功能。当重新开启SQL洞察和审计功能时,SQL审计日志将从本次开启SQL洞察和审计的时间开始记录。

  1. 登录PolarDB控制台

  2. 在左侧导航栏单击集群列表

  3. 在左上角,选择集群所在地域。

  4. 找到目标集群,单击集群ID。

  5. 在左侧导航栏中,选择日志与审计 > SQL洞察

  6. 单击服务设置

  7. 在弹出的对话框中,关闭开启SQL洞察开关后单击确定

    关闭

    说明
    • 如果您在日志服务的CloudLens for PolarDB中开启了PolarDB MySQL版的审计日志采集功能,系统会自动开启对应PolarDB MySQL版的SQL洞察功能,因此您还需要关闭该PolarDB MySQL版的审计日志采集功能。详情请参见开启数据采集功能

    • SQL洞察功能关闭后,SQL审计日志会被清空,建议先导出SQL记录后,再关闭SQL洞察功能。如何导出SQL记录,请参见导出SQL日志记录

  8. 在弹出的对话框中,单击确定

查看审计日志的大小和消费明细

  1. 登录阿里云管理控制台

  2. 在页面右上角,选择费用 > 用户中心

  3. 在左侧导航栏中,选择账单管理 > 账单详情

  4. 账单详情页面,单击明细账单页签,设置搜索实例ID并输入目标集群ID进行搜索。

    费用账单

  5. 查看计费项列为sql_explorer的费用明细。

迁移到新版

说明

当前仅华东1(杭州)、华东2(上海)、华北2(北京)和华南1(深圳)地域的数据库实例支持将旧版SQL洞察和审计迁移到新版。

  1. 登录PolarDB控制台

  2. 在左侧导航栏单击集群列表

  3. 在左上角,选择集群所在地域。

  4. 找到目标集群,单击集群ID。

  5. 在左侧导航栏单击日志与审计>SQL洞察

  6. 单击右上角的迁移到新版

  7. 在弹出的对话框中,选择存储时长,并单击确定

常见问题

Q:SQL洞察全量请求统计区域中的logout!语句是什么?

A:logout!是指连接断开。logout!的耗时,是指上一次交互时间到logout!发生时间的差值,可以理解为连接空闲的时长。状态列的1158是指网络链接断开,其可能的原因是:

  • 客户端连接超时。

  • 服务端异常断开。

  • 服务端连接Reset(超过interactive_timeout或wait_timeout时长)。

Q:SQL洞察来源统计中,为什么会出现%访问来源

A:该情况可能在您使用存储过程时出现。按如下示例可以复现这种情况:

说明

示例中数据库实例为RDS MySQL,测试账号为test_user,测试数据库为testdb。

  1. 在RDS控制台创建普通权限账号及其授权的数据库,详细操作请参见创建数据库和账号

  2. 使用测试账号通过命令行方式连接数据库实例,详细操作请参见通过客户端、命令行连接RDS MySQL实例

  3. 切换到测试数据库,并创建如下存储过程。

    -- 切换到测试数据库
    USE testdb;
    
    -- 创建存储过程
    DELIMITER $$
    DROP PROCEDURE IF EXISTS `das` $$
    CREATE DEFINER=`test_user`@`%` PROCEDURE `das`()
    BEGIN
    SELECT * FROM information_schema.processlist WHERE Id = CONNECTION_ID();
    END $$
    DELIMITER;
  4. 使用高权限账号连接数据库实例,详细操作请参见通过客户端、命令行连接RDS MySQL实例

  5. 调用存储过程。

    -- 切换到测试数据库
    USE testdb;
    
    -- 调用存储过程
    CALL das();
    
    +--------+-----------+--------+--------+---------+------+-----------+-------------------------------------------------------------------------+
    | ID     | USER      | HOST   | DB     | COMMAND | TIME | STATE     | INFO                                                                    |
    +--------+-----------+--------+--------+---------+------+-----------+-------------------------------------------------------------------------+
    | 487818 | test_user | %:2065 | testdb | Query   |    0 | executing | SELECT * FROM information_schema.processlist WHERE Id = CONNECTION_ID() |
    +--------+-----------+--------+--------+---------+------+-----------+-------------------------------------------------------------------------+

  • 本页导读 (0)