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