[ Azure - Database ] 在 Azure Database for MySQL 中配置 binlog Auditing 并进行实际监控使用
传统 MySQL 的二进制日志 binlog
可以说是MySQL最重要的日志,它记录了所有的DDL
和DML
语句(除了数据查询语句select),以事件形式记录,还包含语句所执行的消耗的时间。本文会讲解微软云 Azure Database for MySQL 的 binlog 以及其 Auditing 的相关知识。
文章目录
Azure Database for MySQL 的 binlog
对于微软云 Azure 的 Azure Database for MySQL 中,二进制日志是始终启用的状态(即,将 log_bin
参数设置为 ON
)。 如果你想使用触发器,则会收到如下错误:
你没有 SUPER 权限且二进制日志记录已启用(你可能需要使用安全性更低的
log_bin_trust_function_creators
变量)。
在命令行登入进入到MySQL执行 show variables like '%log_bin%';
验证并查看上述 Azure 数据库的 binlog
相关信息:
从结果中可以发现两点
- Azure Database for MySQL的
binlog
默认是开启状态。 - 默认的 Azure Database for MySQL - Single Server 是安装微软在
Windows
服务器的。
如何查看 Azure Database for MySQL 的 binlog
在上述已经查看到,Azure Database for MySQL的 binlog 是默认开启,但是 Azure 的数据库是 PaaS 服务,你无法像传统 MySQL 那样直接访问 binlog。如果你想查看Azure Database for MySQL 的事务日志等怎么办?需要使用Azure portal中的一个服务:Auditing。
1. 配置使用 Azure 门户配置 Auditing log
在所要设置的数据库中,依次进入设置Setting、选择菜单设置参数Server parameters.
开启 Azure Database for MySQL 的 Audit 日志,依次进入服务器参数设置,依次根据下图更改:audit_log_enabled
,audit_log_events
,注意更改audit_log_events
的 log 事件可以根据自身所需选择 DCL
、DDL
、或者 DML
等。
2. 设置诊断 Diagnostics
在左侧菜单Monitoring下, 选择Diagnostic settings,点击添加诊断按钮。如图所示:
设置诊断内容,如下图所示:
3. 使用 Log Analytics 查看审核日志
完成上述操作后,即可查询配置的 log 日志,在 Monitoring 菜单下,选择 Logs 菜单,关闭弹出的新窗口(Queries 提示窗口)。
执行 audit 查询语句如下:
AzureDiagnostics
|where Category =='MySqlAuditLogs'
|project TimeGenerated, Resource, event_class_s, event_subclass_s, event_time_t, user_s ,ip_s , sql_text_s
|summarize count() by event_class_s,event_subclass_s
|order by event_class_s
Azure Monitor 日志的示例查询语句
- 列出特定服务器上的 GENERAL 事件
AzureDiagnostics
| where LogicalServerName_s == '<your server name>'
| where Category == 'MySqlAuditLogs' and event_class_s == "general_log"
| project TimeGenerated, LogicalServerName_s, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s
| order by TimeGenerated asc nulls last
- 列出特定服务器上的 CONNECTION 事件
AzureDiagnostics
| where LogicalServerName_s == '<your server name>'
| where Category == 'MySqlAuditLogs' and event_class_s == "connection_log"
| project TimeGenerated, LogicalServerName_s, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s
| order by TimeGenerated asc nulls last
- 汇总特定服务器上的已审核事件
AzureDiagnostics
| where LogicalServerName_s == '<your server name>'
| where Category == 'MySqlAuditLogs'
| project TimeGenerated, LogicalServerName_s, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s
| summarize count() by event_class_s, event_subclass_s, user_s, ip_s
- 绘制特定服务器上的审核事件类型分布图
AzureDiagnostics
| where LogicalServerName_s == '<your server name>'
| where Category == 'MySqlAuditLogs'
| project TimeGenerated, LogicalServerName_s, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s
| summarize count() by LogicalServerName_s, bin(TimeGenerated, 5m)
| render timechart
- 列出已为审核日志启用诊断日志的所有 MySQL 服务器上的已审核事件
AzureDiagnostics
| where Category == 'MySqlAuditLogs'
| project TimeGenerated, LogicalServerName_s, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s
| order by TimeGenerated asc nulls last
参考文献
https://learn.microsoft.com/zh-cn/azure/mysql/single-server/concepts-audit-logs
https://learn.microsoft.com/en-us/azure/mysql/flexible-server/tutorial-configure-audit
注:本文原创由
bluetata
发布于: https://bluetata.blog.csdn.net/ 转载请务必注明出处。
相关文章
- mysql数据库数据同步/主从复制的配置方法
- Error connecting to database [Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13)]
- 批量修改mysql数据库引擎
- MySQL数据类型 int(M) 表示什么意思?详解mysql int类型的长度值问题
- 【MySQL】mysql optimize table
- 【MySql】开机自动启动mysql服务
- 【异常】com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.
- elasticsearch5.2.1使用logstash同步mysql
- mysql修改本地主机连接
- MySQL · 特性分析 · MySQL 5.7新特性系列一
- Starting MySQL. ERROR! The server quit without updating PID file (/data/mysql/mysql.pid).
- [转]MySql ibdata1文件太大如何缩小
- MYSQL导入数据报错|MYSQL导入超大文件报错|MYSQL导入大数据库报错:2006 - MySQL server has gone away
- Mysql的mysqldump详解 mysql数据库备份和导入
- 解决ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
- mysql_22 _ MySQL有哪些“饮鸩止渴”提高性能的方法?
- liunx如何重启mysql
- MySQL复习资料(四)——MySQL-聚合函数
- MySQL报错Column count of mysql.user is wrong. Expected 43, found 42. Created with MySQL 50568, now run
- [ 云计算 | Azure ] 配置Azure Database for MySQL数据库的时区
- MySQL 主从1062错误 自动处理脚本