云数据库RDS for MySQL SQL审计功能

SQL审计日志简介

RDS for MySQL默认关闭SQL审计功能,打开可能会有一定的性能影响,本章节指导您如何打开、修改或关闭SQL审计日志。

说明

1.当您开通SQL审计功能,系统会将所有的SQL操作记录下来,并半小时或累积到100M上传存入日志。

2.开启SQL审计,日志文件会占用您的备份空间。

3.审计日志为了保证性能,使用UTC时间,不受时区配置的影响。

4.审计日志开通后,生成的审计日志会保存在备份存储空间,不会占用数据盘空间。如果审计日志的大小超过了备份空间容量,就会按照超出的部分进行计费。

SQL审计功能约束限制

RDS for MySQL高可用只读如果出现异常,在备只读顶替期间的审计日志不可见。

仅如下版本支持SQL审计功能。如果您的数据库引擎版本较低,请参考升级内核小版本升级到最新版本。

RDS for MySQL云盘实例支持5.6.43及其以上版本。

RDS for MySQL本地盘实例支持5.6.47.3及其以上版本。

RDS for MySQL云盘实例支持5.7.23及其以上版本。

RDS for MySQL本地盘实例支持5.7.29.3及其以上版本。

云数据库RDS for MySQL开启SQL审计日志

开启SQL审计日志

步骤 1登录管理控制台

步骤 2单击管理控制台左上角的,选择区域和项目。

步骤 3选择“数据库 > 云数据库 RDS”,进入RDS信息页面。

步骤 4在“实例管理”页面,选择目标实例,单击实例名称,进入实例的“基本信息”页签。

步骤 5在左侧导航栏单击“SQL审计”,单击“设置SQL审计”,在弹出框中设置SQL审计日志保留策略,单击“确定”,保存设置策略。

开启或修改SQL审计:

将单击设置为,开启SQL审计日志保留策略。

保留天数默认为7天,可设置范围为1~732天。

操作类型对应的具体权限类型如下表。如需使用该功能请联系客服开通权限。

MySQL客户端使用PrepareStatement和定时任务执行的SQL语句分别属于PREPARED_STATEMENT和CREATE大类,JDBC使用PrepareStatement产生的SQL语句无法过滤。

表1-1 DDL操作类型的权限

类型
具体权限

CREATE

create_db, create_event, create_function, create_index, create_procedure, create_table, create_trigger, create_udf, create_view

ALTER

alter_db, alter_db_upgrade, alter_event, alter_function, alter_instance, alter_procedure, alter_table, alter_tablespace, alter_user

DROP

drop_db, drop_event, drop_function, drop_index, drop_procedure, drop_table, drop_trigger, drop_view

RENAME

rename_table

TRUNCATE

truncate

表1-2 DML操作类型的权限

类型
具体权限

INSERT

insert, insert_select

DELETE

delete, delete_multi

UPDATE

update

REPLACE

replace, replace_select

SELECT

select

表1-3 DCL操作类型的权限

类型
具体权限

CREATE_USER

create_user

DROP_USER

drop_user

RENAME_USER

rename_user

GRANT

grant

REVOKE

revoke, revoke_all

表1-4 其他操作类型的权限

类型
具体权限

BEGIN/COMMIT/ROLLBACK

begin, commit, release_savepoint, rollback, rollback_to_savepoint, savepoint

PREPARED_STATEMENT

execute_sql,prepare_sql

关闭SQL审计

单击设置为,关闭该SQL审计。

勾选“确认关闭审计日志后,所有审计日志文件将立即删除。”复选框,表示同意删除审计日志。

须知:SQL审计关闭后,所有审计日志都会被立即删除,不可恢复,请您谨慎操作。

----结束

云数据库RDS for MySQL SQL下载SQL审计日志

下载SQL审计日志操作步骤

步骤 1登录管理控制台

步骤 2单击管理控制台左上角的,选择区域和项目。

步骤 3单击页面左上角的,选择“数据库 > 云数据库 RDS”,进入RDS信息页面。

步骤 4在“实例管理”页面,选择目标实例,单击实例名称,进入实例的“基本信息”页签。

步骤 5在左侧导航栏单击“SQL审计”。

步骤 6在审计日志列表右上方选择时间范围,勾选目标日志,并单击列表左上方的“下载”,批量下载SQL审计日志。

您还可以选择单个审计日志,单击操作列中的“下载”,下载目标SQL审计日志。

步骤 7SQL审计日志内容如下图所示。

表1-5审计日志字段说明

参数
说明

record_id

审计日志单条记录的记录ID,记录审计日志的每条SQL的唯一global id。

connection_id

该条记录执行的会话ID,与show processlist中的ID一致。

connection_status

会话状态,常见为执行语句的错误返回码,普通执行成功返回0。

name

记录类型名称,通常情况下dml,ddl操作均为QUERY, 连接断开为CONNECT和QUIT。

timestamp

记录的UTC时间。

command_class

执行的SQL命令类型,内部为解析得到的SQL类型,例如select,update(连接断开不存在该项)。

sqltext

执行的SQL具体内容(连接断开审计不存在该项)。

user

登录的帐户。

host

登录的host,当本地登录时为localhost,远程登录为空。

external_user

代理用户名称。

ip

通过远程连接的客户端IP,本地连接为空。

default_db

执行SQL时默认的数据库。

云数据库RDS for MySQL常见问题

云数据库RDS for MySQL常见问题

  • 如何查看RDS for MySQL执行过的所有SQL日志

    您可以通过数据管理服务(Data Admin Service,简称DAS)这款可视化的专业数据库管理工具,快速查找目标SQL执行记录信息。您也可以通过RDS的SQL审计功能查询所有的SQL操作记录。

    步骤 1登录管理控制台

    步骤 2单击管理控制台左上角的,选择区域和项目。

    步骤 3单击页面左上角的,选择“数据库 > 云数据库 RDS”。

    步骤 4在“实例管理”页面,选择目标实例,单击操作列的“登录”,进入数据管理服务登录界面。

    步骤 5正确输入数据库用户名和密码,单击“登录”,即可进入您的数据库。

    步骤 6在顶部菜单栏选择“SQL操作”>“SQL执行记录”,打开历史执行记录列表。

    步骤 7在SQL执行记录页面,您可通过日期范围、数据库名称、SQL语句关键字进行搜索,快速查找目标SQL执行记录信息。

    单击列表中数据库名称,您可直接进入该数据库管理页面。

    单击“SQL语句”,您可在SQL语句弹出框中复制使用SQL。

    单击“在SQL执行窗口打开”,您可在SQL窗口中直接使用该语句。

    ----结束

  • 如何查看RDS for MySQL数据库的死锁日志

    数据库的死锁日志不会记录在错误日志中,您可以通过数据管理服务DAS这款可视化的专业数据库管理工具,快速执行SQL语句查看。

    步骤 1登录管理控制台

    步骤 2单击管理控制台左上角的,选择区域和项目。

    步骤 3单击页面左上角的,选择“数据库 > 云数据库 RDS”。

    步骤 4在“实例管理”页面,选择目标实例,单击操作列的“登录”,进入数据管理服务登录界面。

    步骤 5正确输入数据库用户名和密码,单击“登录”,即可进入您的数据库。

    步骤 6选择目标数据库,单击“SQL查询”,查询窗口中使用show engine innodb status查看当前数据库最新的死锁日志,通过关键字LATEST DETECTED DEADLOCK快速定位,最新产生的死锁日志会覆盖历史死锁日志记录。

    ----结束

  • 数据超过了RDS for MySQL实例的最大存储容量怎么办?

    1.随着业务数据的增加,原来申请的数据库磁盘容量可能会不足,建议用户扩容磁盘空间,确保磁盘空间足够。

    如果原有规格的磁盘已是最大,请先升级规格

    云盘实例可以设置存储空间自动扩容,在实例存储空间达到阈值时,会触发自动扩容。

    2.针对数据空间过大,可以删除无用的历史表数据。

    a.如果实例变为只读状态,您需要先联系客服解除只读状态;如果实例非只读状态,则可以直接执行删除操作。

    b.查看物理文件大小Top50库表,识别可以删除的历史表数据,具体操作请参见容量预估

    c.可在业务低峰期对碎片率高的表执行optimize优化,以便释放空间:

    清理整张表使用DROP或TRUNCATE操作;删除部分数据,使用DELETE操作,如果是执行DELETE操作,需要使用OPTIMIZE TABLE来释放空间。

    3.如果是RDS for MySQL Binlog日志文件占用过多,可以清理本地Binlog日志,来释放磁盘空间。

    4.针对大量排序查询导致的临时文件过大,建议优化SQL查询。

    查询数据库慢SQLTop SQL,分析数据量大,行数多,响应时间长的SQL语句,并进行优化。

    5.您还可以订阅实例健康日报来获取SQL及性能分析结果,包括慢SQL分析、全量SQL分析、性能 & 磁盘分析、性能指标趋势图,当发生风险点时及时收到诊断报告。

    具体操作请参见诊断日报

专题内容推荐

活动规则

活动对象:华为云电销客户及渠道伙伴客户可参与消费满送活动,其他客户参与前请咨询客户经理

活动时间: 2020年8月12日-2020年9月11日

活动期间,华为云用户通过活动页面购买云服务,或使用上云礼包优惠券在华为云官网新购云服务,累计新购实付付费金额达到一定额度,可兑换相应的实物礼品。活动优惠券可在本活动页面中“上云礼包”等方式获取,在华为云官网直接购买(未使用年中云钜惠活动优惠券)或参与其他活动的订单付费金额不计入统计范围内;