本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
当您在安全合规审计、性能分析、故障排除、异常会话排查等场景下需要监控和管理RDS MySQL实例中执行的SQL语句时,可以利用SQL洞察和审计功能对SQL语句的执行情况进行记录和聚合分析。开启该功能后会自动记录来自数据库内核的SQL语句,以及SQL语句的执行账号、IP地址、执行详情等信息,对实例性能影响可忽略不计。
前提条件
RDS MySQL实例为高可用系列或集群系列。
如果是RAM用户,使用搜索功能时,需要为RAM用户授予AliyunRDSReadOnlyWithSQLLogArchiveAccess权限。如何为RAM用户授权,请参见通过RAM对RDS进行权限管理。
您也可以通过自定义权限策略授予RAM用户使用搜索(包含导出)功能的权限,详情请参见通过自定义权限策略授权RAM用户使用SQL洞察和审计的搜索(包含导出)功能。
开启SQL洞察和审计功能可以记录所有DQL、DML和DDL操作信息,这些信息是通过数据库内核输出,对系统CPU消耗极低。
功能概览
SQL洞察和审计提供搜索、SQL洞察、安全审计、流量回放和压测、SQL分析等功能:
搜索(审计):查询并导出SQL语句执行历史及其对应的各种信息,如数据库、状态、执行时间等。
SQL洞察:对指定时间SQL进行健康情况诊断、性能问题排查、业务流量分析等。
安全审计(旧版):可自动识别高危SQL、SQL注入、新增访问来源等风险。
流量回放和压测:提供流量回放和压测功能,帮助您验证您的实例规格是否需要扩容,有效应对业务流量高峰。
SQL分析:对指定时间段的SQL进行分析,找出异常SQL,定位性能问题。
SQL洞察和审计常用于以下场景:
对数据安全要求严格的行业,如金融、安全、证券、政务、保险等。
需要详细排查数据库运行情况的场景,如问题排查、SQL语句性能排查、异常会话排查。
在极端情况下,若发生数据丢失或损坏,可以通过SQL洞察记录的SQL语句进行问题分析和排查,以便数据恢复。
支持地域
华东1(杭州)、华东2(上海)、华北1(青岛)、华北2(北京)、华北3(张家口)、华北5(呼和浩特)、华北6(乌兰察布)、华南1(深圳)、华南2(河源)、华南3(广州)、西南1(成都)、中国(香港)、新加坡、日本(东京)、马来西亚(吉隆坡)、印度尼西亚(雅加达)、美国(硅谷)、英国(伦敦)、美国(弗吉尼亚)和德国(法兰克福)
计费详情
在SQL洞察升级为SQL洞察和审计之前,您已购买实例并开通SQL洞察功能:功能费用由RDS侧收取,按小时计费,不同地域实例价格不同。其支持使用存储包和通用型节省计划抵扣。
0.0122元/(GB*小时):中国(香港)和新加坡地域。
0.008元/(GB*小时):除中国(香港)和新加坡外的所有其他地域。
说明您可以在SQL洞察页签弹出的升级对话框中单击一键升级,升级为SQL洞察和审计。升级后费用由DAS侧收取。
在SQL洞察升级为SQL洞察和审计之后,新开通SQL洞察和审计功能:费用由DAS侧收取。开启DAS企业版后,才可以使用该企业版提供的SQL洞察和审计功能。不同企业版支持的地域和计费方式不同,详情请参见各企业版支持的数据库和地域和各企业版产品计费。
说明通过控制台,您只能开通当前地域支持的最高版本的DAS企业版。
注意事项
在线查询:
时间范围:单次在线查询时间范围最多为24小时,您可以查询数据存储时长范围内任意24小时的数据(时间范围过长会导致查询超时)。如果需要查询更大时间范围的SQL记录,请使用日志服务接入洞察日志。详情请参见采集RDS SQL审计日志。
查询方式:在线查询支持组合查询,不支持模糊查询,查询关键字至少包含4个字符。
SQL洞察和审计:
SQL语句最大长度:SQL洞察和审计记录的SQL语句最大长度为
8192字节
且受loose_rds_audit_max_sql_size
(MySQL 5.6/5.7)或loose_rds_audit_log_event_buffer_size
(MySQL 8.0)参数影响,取三者最小值。由于信息采集处理时会增加前缀标注,实际记录的SQL语句最大长度略小于8192字节或参数设置。审计记录查询:审计记录支持通过线程ID和事务ID查询SQL语句记录。通过事务ID查询时需将
loose_rds_audit_log_version
参数值设为MYSQL_V3
,且对数据库小版本有最低要求:MySQL 8.0小版本需为20210930以上,MySQL 5.7小版本需为20210630以上,详情请参见RDS MySQL 8.0开放参数一览表和升级内核小版本。试用版SQL洞察:如您的SQL洞察为试用版,暂不支持调用API(DescribeSQLLogRecords和DescribeSQLLogFiles)查询审计日志。
锁等待时间:洞察日志包含锁等待时间,而慢日志不包含。
当程序使用Prepare方式时,会在SQL洞察中出现2条语句,一条包含问号,一条包含具体值。
如果使用RDS数据库代理地址连接,且代理开启了事务级连接池,由于连接可能会被复用,所以使用
show processlist
命令或者SQL洞察显示的IP地址和端口可能和客户端实际的IP地址和端口不一致。挂载到PolarDB-X 1.0(DRDS)的RDS MySQL实例执行一条SQL语句时,由于水平拆分(分库分表)原因,会在RDS MySQL实例上产生多条SQL洞察和审计日志。
开启SQL洞察和审计
如果您在日志服务的CloudLens for RDS开启了RDS MySQL实例的审计日志采集功能,系统会自动开启对应RDS MySQL实例的SQL洞察和审计功能。详情请参见CloudLens for RDS。
如果您未开通SQL洞察和审计功能,您可以通过Binlog日志进行查看。Binlog日志只能查询备份保留时间以内的增、删、改等SQL语句,不能查看来源IP和账号信息。详情请参见查看本地日志(Binlog)。
访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
在左侧导航栏中,选择 。
点击开启企业版V3。
勾选需要开启的功能,点击提交。
修改SQL洞察和审计数据存储时长
减少SQL洞察和审计数据存储时长后,DAS会立即清空超过存储时长的SQL审计日志。建议您先将SQL审计日志导出并保存至本地,再减少SQL洞察和审计数据存储时长。
访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
在左侧导航栏中,选择 。
单击服务设置。
在服务设置页,修改审计场景的日志存储时长,然后单击确定。
关闭SQL洞察和审计
关闭SQL洞察和审计功能后,日志会被清空。建议先导出并保存日志。当重新开启SQL洞察和审计功能时,日志将从新开启时间开始记录。
访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
在左侧导航栏中,选择
。在搜索页签的日志列表区域,单击导出。
在弹出的对话框中,选择导出字段和导出时间范围,单击确认。
导出完成后,下载已导出的文件并妥善保存。
单击服务设置,关闭SQL洞察和审计。
如果您开通了DAS 企业版V3,请去掉SQL洞察和审计所有功能的勾选,单击提交。
说明关闭SQL洞察和审计功能约1小时后,系统会释放SQL洞察和审计数据占用的存储空间。
迁移不同企业版的SQL洞察和审计数据
迁移操作无法终止和回退,请仔细阅读迁移说明。
当您的数据库实例支持企业版 V3时,您可以将DAS企业版 V1或V2的数据迁移至企业版 V3,以获得更加优惠的费用,详情请参见DAS企业版间数据如何迁移?
企业版 V2相对于企业版 V1,变更了底层存储架构,通过冷热混合存储实现降本增效,使用成本低。而企业版 V3,在冷热混合存储的基础上,按使用的功能细分计费项,计费更加灵活。