传统MySQL的二进制日志binlog可以说是MySQL最重要的日志,它记录了所有的DDL和DML语句(除了数据查询语句select),以事件形式记录,还包含语句所执行的消耗的时间。本文会讲解微软云Azure Database for MySQL的binlog相关知识。
文章目录
- Azure Database for MySQL的binlog
- 如何查看 Azure Database for MySQL的binlog
- 一、使用 Azure 门户配置Auditing
- 二、设置诊断Diagnostics
- 三、使用 Log Analytics 查看审核日志
- Azure Monitor 日志的示例查询语句
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 门户配置Auditing
-
在所要设置的数据库中,依次进入setting、选择菜单设置参数Server parameters.
-
开启Azure Database for MySQL的Audit日志,依次进入服务器参数设置,依次根据下图更改:
audit_log_enabled
,audit_log_events
,注意更改audit_log_events的log事件可以根据自身所需选择 DCL、DDL、或者DML等。
二、设置诊断Diagnostics
在左侧菜单Monitoring下, 选择Diagnostic settings,点击添加诊断按钮.
设置诊断内容,如下图所示:
三、使用 Log Analytics 查看审核日志
完成上述操作后,即可查询配置的log日志,在Monitoring菜单下,选择Logs菜单,关闭弹出的新窗口(Queries 提示窗口)
执行audit 查询sql如下:
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 日志的示例查询语句
1、列出特定服务器上的 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
Reference Link:
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/ 转载请务必注明出处。